import pandas as pd from sklearn.tree import DecisionTreeRegressor from sklearn.model_selection import train_test_split from sklearn.metrics import mean_absolute_error # 读取数据集 data = pd.read_csv('used_cars.csv') # 特征选择 features = ['year', 'mileage', 'make', 'model', 'trim', 'engine', 'transmission', 'drivetrain'] X = data[features] y = data['price'] # 将分类变量进行独热编码 X_encoded = pd.get_dummies(X) # 划分训练集和测试集 train_X, test_X, train_y, test_y = train_test_split(X_encoded, y, random_state=0) # 训练模型 model = DecisionTreeRegressor(random_state=0) model.fit(train_X, train_y) # 预测测试集 pred_y = model.predict(test_X) # 计算MAE mae = mean_absolute_error(test_y, pred_y) print('MAE:', mae)代码详细解读
时间: 2024-04-28 17:25:13 浏览: 6
这段代码使用了Python中的Pandas、Scikit-learn库来构建一个决策树回归模型,用于预测二手车的价格,以下是代码的详细解读:
1. 导入所需的库
```
import pandas as pd
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
```
- Pandas库:用于数据处理,包括数据读取、数据清洗、数据转换等
- Scikit-learn库:用于机器学习模型的构建、训练和评估
2. 读取数据集
```
data = pd.read_csv('used_cars.csv')
```
读取一个名为“used_cars.csv”的数据集,该数据集包含了二手车的各种属性信息。
3. 特征选择
```
features = ['year', 'mileage', 'make', 'model', 'trim', 'engine', 'transmission', 'drivetrain']
X = data[features]
y = data['price']
```
选取了8个特征来作为预测模型的输入,即“年份”、“里程”、“品牌”、“车型”、“版本”、“发动机类型”、“变速器类型”和“驱动方式”。将这些特征保存在X中,将目标变量“价格”保存在y中。
4. 独热编码
```
X_encoded = pd.get_dummies(X)
```
由于“品牌”、“车型”、“版本”、“发动机类型”、“变速器类型”和“驱动方式”都是分类变量,需要对它们进行独热编码,将它们转换为数值形式。使用Pandas库中的“get_dummies()”函数进行独热编码,将编码后的特征保存在“X_encoded”中。
5. 划分训练集和测试集
```
train_X, test_X, train_y, test_y = train_test_split(X_encoded, y, random_state=0)
```
使用Scikit-learn库中的“train_test_split()”函数将数据集划分为训练集和测试集。训练集用于训练模型,测试集用于评估模型的性能。这里将数据集按照3:1的比例划分为训练集和测试集,其中“random_state”用于设置随机数种子,保证每次运行代码产生的结果是一致的。
6. 训练模型
```
model = DecisionTreeRegressor(random_state=0)
model.fit(train_X, train_y)
```
使用Scikit-learn库中的“DecisionTreeRegressor()”函数构建决策树回归模型。将数据集中的训练集和目标变量传入模型中,使用“fit()”函数对模型进行训练。
7. 预测测试集
```
pred_y = model.predict(test_X)
```
使用训练好的模型对测试集进行预测,得到预测结果“pred_y”。
8. 计算MAE
```
mae = mean_absolute_error(test_y, pred_y)
print('MAE:', mae)
```
使用Scikit-learn库中的“mean_absolute_error()”函数计算预测结果“pred_y”与测试集目标变量“test_y”的平均绝对误差(MAE),用于评估模型的性能。最后输出MAE的值。