使用随机森林回归模型预测汽车价格
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import r2_score
import numpy as np
import pandas as pd
# 加载数据集并进行预处理
data = pd.read_csv('hhh.csv')
data = data.drop(['Name', 'Location', 'Fuel_Type', 'Transmission', 'Owner_Type'], axis=1)
data['Year'] = 2023 - data['Year']
data = data[data['Year'] >= 0]
data = data.dropna()
data['Mileage'] = data['Mileage'].str.rstrip(' km/kgpl').astype(float) # 处理 Mileage 列
data['Engine'] = data['Engine'].str.rstrip(' CC').astype(int) # 处理 Engine 列
data['Power'] = data['Power'].str.rstrip(' bhp').replace('- ', '0').fillna(0).astype(float)
def predict_price(year, kilometers_driven, mileage, engine, power, seats):
# 从原始数据中选择需要进行训练的特征和目标变量
features = ['Year', 'Kilometers_Driven', 'Mileage', 'Engine', 'Power', 'Seats']
target = ['Price']
X = data[features]
y = data[target]
# 进行训练集和测试集的划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义随机森林回归模型,并进行训练和预测
rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
predicted_price = rf.predict(np.array([year, kilometers_driven, mileage, engine, power, seats]).reshape(1, -1))
# 计算 r2 分数并返回
y_pred = rf.predict(X_test)
r2 = r2_score(y_test, y_pred)
return predicted_price[0], r2
# 进行预测
predicted_price, r2 = predict_price(year, kilometers_driven, mileage, engine, power, seats)
print('r2 score:', r2)
# 增加MSN
def predict_price(year, kilometers_driven, mileage, engine, power, seats, msn):
# 从原始数据中选择需要进行训练的特征和目标变量
features = ['Year', 'Kilometers_Driven', 'Mileage', 'Engine', 'Power', 'Seats', 'Msn']
target = ['Price']
X = data[features]
y = data[target]
# 进行训练集和测试集的划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义随机森林回归模型,并进行训练和预测
rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
predicted_price = rf.predict(np.array([year, kilometers_driven, mileage, engine, power, seats, msn]).reshape(1, -1))
# 计算 r2 分数并返回
y_pred = rf.predict(X_test)
r2 = r2_score(y_test, y_pred)
return predicted_price[0], r2
# 进行预测
predicted_price, r2 = predict_price(year, kilometers_driven, mileage, engine, power, seats, msn)
print('r2 score:', r2)
原文地址: https://www.cveoy.top/t/topic/oxtB 著作权归作者所有。请勿转载和采集!