👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
一、要求
回归任务建模分析:data目录下的data1.csv中提供了一个汽车效能数据集,该数据集包含了各种汽车的特征(如气缸数、排量、马力等)以及每加仑汽油行驶英里数(MPG)。你的任务是:
- 对数据进行预处理,处理缺失值、异常值和进行特征缩放。(5分)
- 分析特征与目标变量(MPG)之间的相关性,并进行特征选择。(5分)
- 使用至少两种回归算法来预测汽车的MPG。(10分)
- 评估模型的性能,使用适当的评估指标来比较不同算法的优劣。(5分)
- 根据你的分析,给出提升模型性能的建议,并讨论哪些特征对预测MPG最为重要。(5分)
数据集如下:
👉👉👉源码关注【测试开发自动化】公众号,回复 “ 汽车效能 ” 获取。👈👈👈
二、代码实现
- 数据导入和预处理:
- 使用 Pandas 库读取 CSV 文件,并将数据存储在 DataFrame 中。
- 使用 SimpleImputer 进行数据预处理,将缺失值用均值填充。
- 使用 StandardScaler 进行特征缩放,将特征值进行标准化处理。
data = pd.read_csv("data1.csv") imputer = SimpleImputer(strategy='mean') df['horsepower'] = imputer.fit_transform(df[['horsepower']])
- 数据拆分:
- 使用 train_test_split 函数将数据集拆分为训练集和测试集。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
- 模型训练和预测:
- 使用 LinearRegression 和 RandomForestRegressor 分别初始化模型,并在训练集上拟合数据。
- 使用训练好的模型在测试集上进行预测。
linear_reg = LinearRegression() linear_reg.fit(X_train, y_train) y_pred_linear = linear_reg.predict(X_test)
👉👉👉源码关注【测试开发自动化】公众号,回复 “ 汽车效能 ” 获取。👈👈👈
- 模型评估:
- 使用 mean_squared_error 和 r2_score 计算模型在测试集上的均方误差(MSE)和决定系数(R2)。
- 输出评估指标。
print("Linear Regression - MSE:", mse_linear, "R2:", r2_linear) print("Random Forest Regression - MSE:", mse_rf, "R2:", r2_rf)
- 指标结果如下:
👉👉👉源码关注【测试开发自动化】公众号,回复 “ 汽车效能 ” 获取。👈👈👈
- 绘制折线图:
- 使用 Matplotlib 库绘制实际值与预测值的折线图。
plt.plot(y_test.values, label='Actual') plt.plot(y_pred_linear, label='Linear Regression Predicted') plt.plot(y_pred_rf, label='Random Forest Predicted') plt.xlabel('Samples') plt.ylabel('MPG') plt.legend() plt.show()
👉👉👉源码关注【测试开发自动化】公众号,回复 “ 汽车效能 ” 获取。👈👈👈
- 绘制柱状图:
- 使用 Matplotlib 库绘制两种模型评估指标(MSE 和 R2)的柱状图。
fig, ax1 = plt.subplots() bar1 = ax1.bar(x - width/2, mse_values, width, label='MSE', color='b') ax1.set_xlabel('Models') ax1.set_ylabel('MSE', color='b') ax1.tick_params(axis='y', labelcolor='b') ax2 = ax1.twinx() bar2 = ax2.bar(x + width/2, r2_values, width, label='R2', color='r') ax2.set_ylabel('R2', color='r') ax2.tick_params(axis='y', labelcolor='r') ax1.set_xticks(x) ax1.set_xticklabels(models) ax1.legend(loc='upper left') ax2.legend(loc='upper right') plt.show()
👉👉👉源码关注【测试开发自动化】公众号,回复 “ 汽车效能 ” 获取。👈👈👈