预测共享单车使用量
-
查看
-
案例1
import numpy as np import matplotlib.pyplot as mp import sklearn.ensemble as se import sklearn.metrics as sm import sklearn.utils as su data = [] with open('./bike_day.csv', 'r') as f: for line in f.readlines(): data.append(line[:-1].split(',')) #print data # 通过data整理输入、输出、header data = np.array(data) header = data[0, 2:13] #第一行 提取表头 print(header.shape) x = data[1:, 2:13].astype('f8') y = data[1:, -1].astype('f8') # 拿最后一列 print(x.shape) print( y.shape) print(40*"*") # 整理训练集、测试集 训练随机森林回归模型 第一步: 打乱数据集 拆分测试集和训练集 #第二部 训练随机森林模型 #第三步 预测结果 模型得分 x, y = su.shuffle(x, y, random_state=7) train_size = int(len(x) * 0.9) train_x, test_x, train_y, test_y = \ x[:train_size], x[train_size:], \ y[:train_size], y[train_size:] #随机森林回归器 最大深度 n_estimators要多少(1000)颗树 怎么随机的不管 # min_samples_split 子表的最小样本树 叶子节点必须有2条 # 整理样本 训练把对结果没有影响的特征去掉 max_depth 根据列数来吧 model = se.RandomForestRegressor(max_depth=10, n_estimators=1000,min_samples_split=2) model.fit(train_x, train_y) pred_test_y = model.predict(test_x) # 评估模型 print("r2 得分",sm.r2_score(test_y, pred_test_y)) print("平均绝对误差个数 ",sm.mean_absolute_error(test_y, pred_test_y)) print( "分割-=============================================================") # 使用模型 sample = \ [[1, 2, 1, 0, 0, 1, 1, 0.35, 0.38,0.75, 0.1]] result = model.predict(sample) print(result) # 特征重要性 day_fi = model.feature_importances_ mp.figure('Feature Importance', facecolor='lightgray') mp.subplot(211) mp.title('Day Feature Importance', fontsize=16) mp.grid(linestyle=':', axis='y') x = np.arange(day_fi.size) #day_fi 对fi进行排序 得到有序索引 sorted_indices = day_fi.argsort()[::-1] #x轴刻度处理 mp.xticks(x, header[sorted_indices]) mp.bar(x, day_fi[sorted_indices], 0.8, color='dodgerblue', label='DT Feature Importances') mp.legend() mp.tight_layout() mp.show()
- 控制台打印
(11,) (731, 11) (731,) **************************************** r2 得分 0.8929215059805984 平均绝对误差个数 425.2729170017391 分割-============================================================= [3300.88643953] 0.9183201711666351
- 输出
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术