现有奶茶店数据,有奶茶杯型,奶茶做法,一单的杯数,下单时间,奶茶名称,门店面积,门店地址,各门店员工数,各门店开业时间,各门店每天营业时间,每比订单的金额,省份,城市,区域,支付类型,奶茶开始制作时间,奶茶制作完成时间。现在想用机器学习预测顾客下单后等待奶茶制作完成的时间,通过随机森林回归模型对对顾客等待奶茶时间做预测,预测的准确度和误差都不理想,在特征工程阶段可以怎样使用特征组合的方式提高模型准确度?请写出具体代码。
时间: 2024-03-17 08:46:19 浏览: 74
在特征工程阶段,我们可以通过特征组合的方式提高模型的准确度。具体来说,我们可以将不同的特征进行组合,生成新的特征,用于训练模型。例如,我们可以将下单时间和开始制作时间组合成一个新特征,表示用户等待的时间;将门店面积和门店员工数组合成一个新特征,表示门店的规模等等。
以下是通过特征组合提高模型准确度的代码示例:
```python
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 读取数据
data = pd.read_csv('data.csv')
# 特征组合
data['wait_time'] = pd.to_datetime(data['奶茶制作完成时间']) - pd.to_datetime(data['开始制作时间'])
data['store_size'] = data['门店面积'] * data['门店员工数']
# 选择特征
features = ['奶茶杯型', '奶茶做法', '杯数', '奶茶名称', '门店面积', '门店地址', '门店员工数', '开业时间', '营业时间',
'订单金额', '省份', '城市', '区域', '支付类型', 'wait_time', 'store_size']
# 拆分数据集
X = data[features]
y = data['等待时间']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练模型
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# 预测并评估模型
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print('Mean Squared Error: {:.2f}'.format(mse))
```
通过将下单时间和开始制作时间组合成新特征wait_time,将门店面积和门店员工数组合成新特征store_size,可以提高模型的准确度。
阅读全文