展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

预测共享单车使用量

  • 查看

  • 案例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
  • 输出

posted @ 2024-01-09 22:20  DogLeftover  阅读(14)  评论(0编辑  收藏  举报