【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题一Python代码分析
发布人:shili8
发布时间:2025-01-04 13:14
阅读次数:0
**2023 年第二届钉钉杯大学生大数据挑战赛**
**初赛 B:美国纽约公共自行车使用量预测分析**
**问题一:Python代码分析**
在本题中,我们需要使用 Python 来分析和预测美国纽约公共自行车的使用量。我们将使用以下数据集:
* **bike_data.csv**:包含纽约公共自行车使用量的历史数据,包括日期、温度、湿度等信息。
* **weather_data.csv**:包含纽约地区天气数据,包括温度、湿度等信息。
**问题一:Python代码分析**
### **1. 导入必要的库**
import pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import mean_squared_error
* 我们首先导入了 Pandas 库来处理数据,以及 Scikit-learn 库中的 LinearRegression 和 mean_squared_error 函数。
### **2. 加载数据**
# 加载 bike_data.csv 文件bike_df = pd.read_csv('bike_data.csv') # 加载 weather_data.csv 文件weather_df = pd.read_csv('weather_data.csv')
* 我们使用 Pandas 的 read_csv 函数加载了两个 CSV 文件。
### **3. 数据预处理**
# 将日期转换为 datetime 类型bike_df['date'] = pd.to_datetime(bike_df['date']) # 将温度和湿度转换为数字类型bike_df['temperature'] = bike_df['temperature'].astype(float) bike_df['humidity'] = bike_df['humidity'].astype(float) weather_df['temperature'] = weather_df['temperature'].astype(float) weather_df['humidity'] = weather_df['humidity'].astype(float)
* 我们将日期转换为 datetime 类型,并将温度和湿度转换为数字类型。
### **4. 特征工程**
# 创建一个新的列,表示天气的影响bike_df['weather_factor'] = bike_df.apply(lambda row:1 if row['temperature'] >20 else -1, axis=1) # 将 weather_data.csv 文件中的数据合并到 bike_df 中bike_df = pd.merge(bike_df, weather_df, on='date')
* 我们创建了一个新的列,表示天气的影响,并将 weather_data.csv 文件中的数据合并到 bike_df 中。
### **5. 模型训练**
# 将数据分割为训练集和测试集X = bike_df.drop('usage', axis=1) y = bike_df['usage'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建一个线性回归模型model = LinearRegression() # 训练模型model.fit(X_train, y_train)
* 我们将数据分割为训练集和测试集,并创建了一个线性回归模型。
### **6. 模型评估**
# 使用测试集来评估模型的性能y_pred = model.predict(X_test) # 计算平均绝对误差(MAE) mae = mean_squared_error(y_test, y_pred) print(f"平均绝对误差:{mae:.2f}")
* 我们使用测试集来评估模型的性能,并计算了平均绝对误差。
### **7. 模型预测**
# 使用训练好的模型来预测未来的使用量future_usage = model.predict([[25,60,1]]) print(f"未来使用量:{future_usage[0]:.2f}")
* 我们使用训练好的模型来预测未来的使用量。
以上就是本题的 Python代码分析。