赞
踩
目录
决策树回归(Decision Tree Regression)
随机森林回归(Random Forest Regression)
定义与原理:
构建过程:
优缺点:
应用场景:
决策树回归在金融、医疗、零售等领域都有广泛的应用,如预测股票价格、货币汇率、疾病风险、药物反应、销量预测等。
定义:
类型:
方法:
优缺点:
应用场景:
线性回归在金融、经济学、流行病学等领域有广泛应用,如预测消费支出、固定投资支出、股票价格趋势等。
定义与原理:
构建过程:
优缺点:
应用场景:
随机森林回归在金融、医疗、生物信息学等领域有广泛应用,如预测股票价格、疾病风险、基因表达等。
- import pandas as pd
- from sklearn.tree import DecisionTreeRegressor
- from sklearn.linear_model import LinearRegression
- from sklearn.ensemble import RandomForestRegressor
- from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
- import numpy as np
-
- # 加载数据集
- data = pd.read_csv("气温.csv")
-
- # 数据预处理
- data['date'] = pd.to_datetime(data[['year', 'month', 'day']])
-
- # 根据日期划分数据集
- train_mask = (data['date'] >= '2020-01-01') & (data['date'] <= '2022-11-30')
- val_mask = (data['date'] >= '2022-12-01') & (data['date'] <= '2022-12-31')
- test_mask = (data['date'] >= '2023-01-01') & (data['date'] <= '2023-12-31')
-
- train_data = data[train_mask] # 训练集
- val_data = data[val_mask] # 验证集
- test_data = data[test_mask] # 测试集
-
- # 特征工程:将年份、月份、日期作为特征,实际气温为目标变量
- X_train = train_data[['year', 'month', 'day']]
- y_train = train_data['average']
- X_val = val_data[['year', 'month', 'day']]
- y_val = val_data['average']
- X_test = test_data[['year', 'month', 'day']]
- y_test = test_data['average']
-
- #决策树回归
- dtr = DecisionTreeRegressor(random_state=42)
- dtr.fit(X_train, y_train)
- y_pred_dtr = dtr.predict(X_test)
-
- # 线性回归
- lr = LinearRegression()
- lr.fit(X_train, y_train)
- y_pred_lr = lr.predict(X_test)
-
- # 随机森林回归
- rfr = RandomForestRegressor(n_estimators=100, random_state=42)
- rfr.fit(X_train, y_train)
- y_pred_rfr = rfr.predict(X_test)
-
-
- # 为可视化创建一个画布和三个子图
- fig, axs = plt.subplots(3, 1, figsize=(10, 15))
-
- # 决策树回归的预测结果与实际值对比
- axs[0].scatter(y_test, y_pred_dtr, color='blue', alpha=0.5)
- axs[0].set_title('Decision Tree Regression Predictions vs Actual')
- axs[0].set_xlabel('Actual Values')
- axs[0].set_ylabel('Predicted Values')
- axs[0].plot([np.min((y_test.min(), y_pred_dtr.min())), np.max((y_test.max(), y_pred_dtr.max()))],
- [np.min((y_test.min(), y_pred_dtr.min())), np.max((y_test.max(), y_pred_dtr.max()))], 'r--')
-
- # 线性回归的预测结果与实际值对比
- axs[1].scatter(y_test, y_pred_lr, color='green', alpha=0.5)
- axs[1].set_title('Linear Regression Predictions vs Actual')
- axs[1].set_xlabel('Actual Values')
- axs[1].set_ylabel('Predicted Values')
- axs[1].plot([np.min((y_test.min(), y_pred_lr.min())), np.max((y_test.max(), y_pred_lr.max()))],
- [np.min((y_test.min(), y_pred_lr.min())), np.max((y_test.max(), y_pred_lr.max()))], 'r--')
-
- # 随机森林回归的预测结果与实际值对比
- axs[2].scatter(y_test, y_pred_rfr, color='red', alpha=0.5)
- axs[2].set_title('Random Forest Regression Predictions vs Actual')
- axs[2].set_xlabel('Actual Values')
- axs[2].set_ylabel('Predicted Values')
- axs[2].plot([np.min((y_test.min(), y_pred_rfr.min())), np.max((y_test.max(), y_pred_rfr.max()))],
- [np.min((y_test.min(), y_pred_rfr.min())), np.max((y_test.max(), y_pred_rfr.max()))], 'r--')
-
- # 显示整个画布上的图形
- plt.tight_layout()
- plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。