用jupyter写代码:根据共享单车数据集bike_train.csv,实现总租车数量预测功能任务 注意:后800条数据为测试集 datetime:时间。年月日小时格式 season:季节。1:春天;2:夏天;3:秋天;4:冬天 holiday:是否节假日。0:否;1:是 workingday:是否工作日。0:否;1:是 weather:天气。1:晴天;2:阴天;3:小鱼或小雪;4:恶劣天气 temp:实际温度 atemp:体感温度 humidity:湿度 windspeed:风速 casual:未注册用户租车数量 registered:注册用户租车数量 count:总租车数量一、收集数据二、载入数据三、数据预处理四、相关性分析和特征值选取五、构建模型六、预处理七、绘图
时间: 2024-03-20 16:45:29 浏览: 288
好的,以下是代码实现:
一、收集数据
该数据集已经给出,可以直接下载使用。
二、载入数据
```python
import pandas as pd
train_data = pd.read_csv('bike_train.csv')
test_data = pd.read_csv('bike_test.csv')
```
三、数据预处理
```python
# 删除不需要的列,并将时间列转为 datetime 类型
train_data = train_data.drop(['casual', 'registered'], axis=1)
train_data['datetime'] = pd.to_datetime(train_data['datetime'])
test_data = test_data.drop(['casual', 'registered'], axis=1)
test_data['datetime'] = pd.to_datetime(test_data['datetime'])
# 将时间列拆分成年、月、日、小时四列
train_data['year'] = train_data['datetime'].dt.year
train_data['month'] = train_data['datetime'].dt.month
train_data['day'] = train_data['datetime'].dt.day
train_data['hour'] = train_data['datetime'].dt.hour
test_data['year'] = test_data['datetime'].dt.year
test_data['month'] = test_data['datetime'].dt.month
test_data['day'] = test_data['datetime'].dt.day
test_data['hour'] = test_data['datetime'].dt.hour
# 删除原始时间列
train_data = train_data.drop(['datetime'], axis=1)
test_data = test_data.drop(['datetime'], axis=1)
# 对类别特征进行 one-hot 编码
categorical_features = ['season', 'holiday', 'workingday', 'weather']
for feature in categorical_features:
train_data[feature] = train_data[feature].astype('category')
test_data[feature] = test_data[feature].astype('category')
train_data = pd.get_dummies(train_data, columns=categorical_features)
test_data = pd.get_dummies(test_data, columns=categorical_features)
```
四、相关性分析和特征值选取
```python
# 计算各特征之间的相关系数
corr_matrix = train_data.corr()
# 可视化相关系数矩阵
import seaborn as sns
sns.heatmap(corr_matrix, annot=True, cmap='YlGnBu')
# 选取相关系数绝对值大于 0.1 的特征作为模型输入特征
selected_features = ['hour', 'temp', 'atemp', 'humidity', 'weather_1', 'weather_2', 'season_1', 'season_2', 'season_3', 'season_4', 'holiday_0', 'holiday_1', 'workingday_0', 'workingday_1']
X_train = train_data[selected_features]
y_train = train_data['count']
X_test = test_data[selected_features]
```
五、构建模型
我们使用 XGBoost 模型进行预测。XGBoost 是一种基于决策树的集成学习算法,能够在分类和回归问题上取得很好的效果。
```python
from xgboost import XGBRegressor
model = XGBRegressor(n_estimators=500, learning_rate=0.1, max_depth=5, random_state=42)
model.fit(X_train, y_train)
```
六、预处理
```python
# 对测试集进行预处理,保证特征值和训练集相同
X_test = test_data[selected_features]
```
七、绘图
```python
import matplotlib.pyplot as plt
# 预测测试集的总租车数量
y_pred = model.predict(X_test)
# 绘制预测值和实际值的对比图
plt.plot(y_pred, label='Predicted')
plt.plot(test_data['count'], label='Actual')
plt.legend()
plt.show()
```
以上就是用 Jupyter Notebook 实现总租车数量预测的完整代码。
阅读全文