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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录