2.2.2
在现代交通中,燃油效率(MPG)是衡量汽车性能和交通系统优化的重要指标之一。高效的燃油利用不仅能够降低车辆运营成本,还能减少碳排放,促进环保。开发一个用于预测汽车燃油效率的模型可以帮助智慧交通系统优化路线规划和车辆调度,从而提升整体交通效率和减少能源消耗。此外,这样的模型还可以帮助消费者做出更明智的购车决策,并帮助厂商优化汽车设计。
现要求根据提供的汽车燃油效率数据集,补全2.2.2.ipynb代码。选择合适的特征,开发一个燃油效率预测模型。利用测试工具对模型进行测试,并对测试结果进行分析,完成测试报告,并运用工具对错误原因进行纠正。
(1)正确加载数据集,显示前五行的数据。
(2)使用线性回归模型进行模型训练,要求设定自变量和因变量,并根据自变量特征进行模型训练,最终将训练好的模型以“2.2.2_model.pkl”命名保存到考生文件夹,结果文件以“2.2.2_results.txt”命名保存到考生文件夹。
(3)使用测试工具对模型进行测试,并记录测试结果,以“2.2.2_report.txt”命名保存到考生文件夹。
(4)运用工具分析算法中错误案例产生的原因并进行纠正,重新进行模型训练,并以“2.2.2_results_rf.txt”命名保存到考生文件夹。
(5)对测试结果进行详细分析,并编写测试报告,包括模型性能评估、错误分析及改进建议,将答案以“2.2.2.docx”命名写到答题卷文件中,并保存到考生文件夹。
(6)将以上代码以及运行结果,以html格式保存并命名为2.2.2.html,保存到考生文件夹,考生文件夹命名为“准考证号+身份证后6位”。
数据集说明:
mpg : 燃油效率,每加仑油可以行驶的英里数。
cylinders: 发动机气缸的数量。
displacement: 这是指发动机所有气缸的总容积。
horsepower: 发动机的马力。
weight: 车辆的重量。
acceleration: 加速。
model year: 车辆的生产年份。
origin: 指的是车辆的制造地或品牌所属国家。
car name: 每辆车的具体名称或型号。
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
import pickle
from sklearn.ensemble import RandomForestRegressor
# 加载数据集
df = __________
# 显示前五行数据
print(__________)
# 处理缺失值
# 将 'horsepower' 列中的所有值转换为数值类型
df['horsepower'] = __________(__________, errors='coerce')
# 删除包含缺失值的行
df = __________
# 选择相关特征进行建模(定义自变量(返回一个DataFrame)和因变量)
X = __________
y = __________
# 将数据集划分为训练集和测试集(测试集占比20%)
X_train, X_test, y_train, y_test = __________(__________, random_state=42)
# 创建包含标准化和线性回归的管道
pipeline = __________([('scaler', __________),('linreg', __________)])
# 训练模型
__________
# 保存训练好的模型
with open('2.2.2_model.pkl', 'wb') as model_file:
pickle.__________
# 预测并保存结果
y_pred = __________
results_df = pd.DataFrame(y_pred, columns=['预测结果'])
__________('2.2.2_results.txt', index=False)
# 测试模型
with open('2.2.2_report.txt', 'w') as results_file:
results_file.write(f'训练集得分: {pipeline.score(X_train, y_train)}\n')
results_file.write(f'测试集得分: {pipeline.score(X_test, y_test)}\n')
# 创建随机森林回归模型实例(创建的决策树的数量为100)
rf_model = __________(__________, random_state=42)
# 训练随机森林回归模型
__________
# 使用随机森林模型进行预测
y_pred_rf = __________
# 保存新的结果
results_rf_df = pd.DataFrame(y_pred_rf, columns=['预测结果'])
__________('2.2.2_results_rf.txt', index=False)
# 测试模型并保存得分
with open('2.2.2_report_rf.txt', 'w') as results_rf_file:
results_rf_file.write(f'训练集得分: {rf_model.score(X_train, y_train)}\n')
results_rf_file.write(f'测试集得分: {rf_model.score(X_test, y_test)}\n')
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
import pickle
from sklearn.ensemble import RandomForestRegressor
# 加载数据集
df = pd.read_csv('auto-mpg.csv')
# 显示前五行数据
print(df.head())
# 处理缺失值
# 将 'horsepower' 列中的所有值转换为数值类型
df['horsepower'] = pd.to_numeric(df['horsepower'], errors='coerce')
# 删除包含缺失值的行
df = df.dropna()
# 选择相关特征进行建模(定义自变量(返回一个DataFrame)和因变量)
X = df[['cylinders','displacement','horsepower','weight','acceleration','model year','origin']]
y = df['mpg']
# 将数据集划分为训练集和测试集(测试集占比20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建包含标准化和线性回归的管道
pipeline = Pipeline([('scaler', StandardScaler()),('linreg', LinearRegression())])
# 训练模型
pipeline.fit(X_train, y_train)
# 保存训练好的模型
with open('2.2.2_model.pkl', 'wb') as model_file:
pickle.dump(pipeline,model_file)
# 预测并保存结果
y_pred = pipeline.predict(X_test)
results_df = pd.DataFrame(y_pred, columns=['预测结果'])
results_df.to_csv('2.2.2_results.txt', index=False)
# 测试模型
with open('2.2.2_report.txt', 'w') as results_file:
results_file.write(f'训练集得分: {pipeline.score(X_train, y_train)}\n')
results_file.write(f'测试集得分: {pipeline.score(X_test, y_test)}\n')
# 创建随机森林回归模型实例(创建的决策树的数量为100)
rf_model = RandomForestRegressor(n_estimators=10, random_state=42)
# 训练随机森林回归模型
rf_model.fit(X_train, y_train)
# 使用随机森林模型进行预测
y_pred_rf = rf_model.predict(X_test)
# 保存新的结果
results_rf_df = pd.DataFrame(y_pred_rf, columns=['预测结果'])
results_rf_df.to_csv('2.2.2_results_rf.txt', index=False)
# 测试模型并保存得分
with open('2.2.2_report_rf.txt', 'w') as results_rf_file:
results_rf_file.write(f'训练集得分: {rf_model.score(X_train, y_train)}\n')
results_rf_file.write(f'测试集得分: {rf_model.score(X_test, y_test)}\n')
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
import pickle
from sklearn.ensemble import RandomForestRegressor
# 加载数据集
df = pd.read_csv('auto-mpg.csv')
# 显示前五行数据
print(df.head())
# 处理缺失值
# 将 'horsepower' 列中的所有值转换为数值类型
df['horsepower'] = pd.to_numeric(df['horsepower'], errors='coerce')
# 删除包含缺失值的行
df = df.dropna()
# 选择相关特征进行建模(定义自变量(返回一个DataFrame)和因变量)
X = df[['cylinders','displacement','horsepower','weight','acceleration','model year','origin']]
y = df['mpg']
# 将数据集划分为训练集和测试集(测试集占比20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建包含标准化和线性回归的管道
pipeline = Pipeline([('scaler', StandardScaler()),('linreg', LinearRegression())])
# 训练模型
pipeline.fit(X_train, y_train)
# 保存训练好的模型
with open('2.2.2_model.pkl', 'wb') as model_file:
pickle.dump(pipeline,model_file)
# 预测并保存结果
y_pred = pipeline.predict(X_test)
results_df = pd.DataFrame(y_pred, columns=['预测结果'])
results_df.to_csv('2.2.2_results.txt', index=False)
# 测试模型
with open('2.2.2_report.txt', 'w') as results_file:
results_file.write(f'训练集得分: {pipeline.score(X_train, y_train)}\n')
results_file.write(f'测试集得分: {pipeline.score(X_test, y_test)}\n')
# 创建随机森林回归模型实例(创建的决策树的数量为100)
rf_model = RandomForestRegressor(n_estimators=10, random_state=42)
# 训练随机森林回归模型
rf_model.fit(X_train, y_train)
# 使用随机森林模型进行预测
y_pred_rf = rf_model.predict(X_test)
# 保存新的结果
results_rf_df = pd.DataFrame(y_pred_rf, columns=['预测结果'])
results_rf_df.to_csv('2.2.2_results_rf.txt', index=False)
# 测试模型并保存得分
with open('2.2.2_report_rf.txt', 'w') as results_rf_file:
results_rf_file.write(f'训练集得分: {rf_model.score(X_train, y_train)}\n')
results_rf_file.write(f'测试集得分: {rf_model.score(X_test, y_test)}\n')
mpg cylinders displacement ... model year origin car name
0 18.0 8 307.0 ... 70 1 chevrolet chevelle malibu
1 15.0 8 350.0 ... 70 1 buick skylark 320
2 18.0 8 318.0 ... 70 1 plymouth satellite
3 16.0 8 304.0 ... 70 1 amc rebel sst
4 17.0 8 302.0 ... 70 1 ford torino
[5 rows x 9 columns]