随机森林模型sklearn_sklearn之随机森林
'''集合算法:
1.正向激励
2.自助聚合:每次从总样本矩阵中以有放回抽样的方式随机抽取部分样本构建决策树,这样形成多棵包含不同训练样本的决策树,
以削弱某些强势样本对模型预测结果的影响,提高模型的泛化特性。
3.随机森林:在自助聚合的基础上,每次构建决策树模型时,不仅随机选择部分样本,而且还随机选择部分特征,这样的集合算法,
不仅规避了强势样本对预测结果的影响,而且也削弱了强势特征的影响,使模型的预测能力更加泛化。(中庸-->真值)
随机森林相关API:
import sklearn.ensemble as se
# 随机森林回归模型 (属于集合算法的一种)
# max_depth:决策树最大深度10
# n_estimators:构建1000棵决策树,训练模型
# min_samples_split: 子表中最小样本数 若小于这个数字,则不再继续向下拆分
model = se.RandomForestRegressor(max_depth=10, n_estimators=1000, min_samples_split=2)
案例:分析共享单车的需求,从而判断如何进行共享单车的投放。
1.读取数据 bike_day.csv
2.整理输入集和输出集 划分测试集与训练集
3.选择模型----随机森林,训练模型
4.使用测试集输出r2得分
5.输出特征重要性,并绘制图像'''
importnumpy as npimportmatplotlib.pyplot as mpimportsklearn.metrics as smimport sklearn.ensemble as se #集合算法模块
import sklearn.utils as su #打乱数据
'''=================================分析bike_day.csv==============================='''
#读取数据方法1#data = []#with open('./ml_data/bike_day.csv','r') as f:#for line in f.readlines():#data.append(line[:-1].split(','))#print(data)#data = np.array(data)
#读取数据方法2
data = np.loadtxt('./ml_data/bike_day.csv', unpack=False, dtype='U20', delimiter=',')print(data.shape)
day_headers= data[0, 2:13]print(day_headers)
x= np.array(data[1:, 2:13], dtype='f8')
y= np.array(data[1:, -1], dtype='f8')#划分测试集和训练集
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:]#训练模型
model = se.RandomForestRegressor(max_depth=10, n_estimators=1000, min_samples_split=3)
model.fit(train_x, train_y)#模型测试
pred_test_y =model.predict(test_x)#模型评估
print('bike_day的r2_score得分:', sm.r2_score(test_y, pred_test_y))#输出模型特征重要性
day_fi =model.feature_importances_'''=================================分析bike_hour.csv==============================='''
#读取数据
data =[]
with open('./ml_data/bike_hour.csv', 'r') as f:for line inf.readlines():
data.append(line[:-1].split(','))
data=np.array(data)
hour_headers= data[0, 2:14]print(hour_headers)
x= np.array(data[1:, 2:14], dtype='f8')
y= np.array(data[1:, -1], dtype='f8')#划分测试集和训练集
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:]#训练模型
model = se.RandomForestRegressor(max_depth=10, n_estimators=1000, min_samples_split=3)
model.fit(train_x, train_y)#模型测试
pred_test_y =model.predict(test_x)#模型评估
print('bike_hour的r2_score得分:', sm.r2_score(test_y, pred_test_y))#输出模型特征重要性
hour_fi =model.feature_importances_#画出bike_day的特征重要性图像
mp.figure('Feature Importance', facecolor='lightgray')
mp.rcParams['font.sans-serif'] = 'SimHei'mp.subplot(211)
mp.title('Bike_day FI')
mp.ylabel('Feature Importance')
mp.grid(linestyle=":")
sorted_indexes= day_fi.argsort()[::-1] #下标排序,从大到小
x =np.arange(day_headers.size)
mp.bar(x, day_fi[sorted_indexes],0.7, color='dodgerblue', label='BDFI')
mp.xticks(x, day_headers[sorted_indexes])#设置x轴坐标
mp.tight_layout()
mp.legend()#画出bike_hour的特征重要性图像
mp.subplot(212)
mp.title('Bike_hour FI')
mp.ylabel('Feature Importance')
mp.grid(linestyle=":")
sorted_indexes= hour_fi.argsort()[::-1] #下标排序,从大到小
x =np.arange(hour_headers.size)
mp.bar(x, hour_fi[sorted_indexes],0.7, color='orangered', label='BHFI')
mp.xticks(x, hour_headers[sorted_indexes])#设置x轴坐标
mp.tight_layout()
mp.legend()
mp.show()
输出结果:
(732, 16)
['season' 'yr' 'mnth' 'holiday' 'weekday' 'workingday' 'weathersit' 'temp'
'atemp' 'hum' 'windspeed']
bike_day的r2_score得分:0.8929064136199945['season' 'yr' 'mnth' 'hr' 'holiday' 'weekday' 'workingday' 'weathersit'
'temp' 'atemp' 'hum' 'windspeed']
bike_hour的r2_score得分:0.9185230199218621
随机森林模型sklearn_sklearn之随机森林相关推荐
- R语言随机森林模型:计算随机森林模型的特征重要度(feature importance)并可视化特征重要度、使用少数重要特征拟合随机森林模型(比较所有特征模型和重要特征模型在测试集上的表现差异)
R语言随机森林模型:计算随机森林模型的特征重要度(feature importance)并可视化特征重要度.使用少数重要特征拟合随机森林模型(比较所有特征模型和重要特征模型在测试集上的表现差异) 目录
- 连续因果森林模型的构造与实践
桔妹导读:近年来,因果推断逐渐成为了机器学习中的热点话题.增益模型(Uplift Model)作为工业界因果推断与机器学习结合最成熟的算法之一,在智能营销中有着广泛的应用.目前大多数增益模型仅讨论了二 ...
- 连续因果森林模型在网约车交易市场策略上的应用
近年来,因果推断逐渐成为了机器学习中的热点话题.增益模型(Uplift Model)作为工业界因果推断与机器学习结合最成熟的算法之一,在智能营销中有着广泛的应用.但是目前大多数增益模型仅讨论了二元处理 ...
- matlab产生er随机图,ER随机图模型 | 集智百科
原标题:ER随机图模型 | 集智百科 "集智百科精选"是一个长期专栏,持续为大家推送复杂性科学相关的基本概念和资源信息.作为集智俱乐部的开源科学项目,集智百科希望打造复杂性科学领域 ...
- kaggle项目:基于随机森林模型的心脏病患者预测分类!
公众号:尤而小屋 作者:Peter 编辑:Peter 大家好,我是Peter~ 新年的第一个项目实践~给大家分享一个新的kaggle案例:基于随机森林模型(RandomForest)的心脏病人预测分类 ...
- R语言使用randomForest包构建随机森林模型(Random forests)、使用importance函数查看特征重要度、使用table函数计算混淆矩阵评估分类模型性能、包外错误估计OOB
R语言使用randomForest包中的randomForest函数构建随机森林模型(Random forests).使用importance函数查看特征重要度.使用table函数计算混淆矩阵评估分类 ...
- R语言使用caret包构建随机森林模型(random forest)构建回归模型、通过method参数指定算法名称、通过ntree参数指定随机森林中树的个数
R语言使用caret包构建随机森林模型(random forest)构建回归模型.通过method参数指定算法名称.通过ntree参数指定随机森林中树的个数 目录
- sklearn随机森林模型:ValueError: Unknown label type: ‘unknown‘
sklearn随机森林模型:ValueError: Unknown label type: 'unknown' 目录 sklearn随机森林模型:ValueError: Unknown label t ...
- R语言使用randomForest包构建随机森林模型的步骤和流程、随机森林算法包括抽样样本(观察)和变量来创建大量的决策树(多个树,构成了森林,而且通过样本抽样和变量抽样,让多个树尽量不同)
R语言使用randomForest包中的randomForest函数构建随机森林模型的步骤和流程(Random forests).随机森林算法包括抽样样本(观察)和变量来创建大量的决策树(多个树,构成 ...
- R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray、F1、偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机)
R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray.F1.偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机) ...
最新文章
- 漫画:据说很多搞软件的羡慕硬件工程师
- DirectX?OpenGL?CUDA?Stream?OpenCL?
- vim 忽略大小写查找
- Kotlin极简教程
- 文巾解题 177. 第N高的薪水
- 解决uni-app中flex布局子元素宽度溢出
- Angular单元测试的一个错误消息
- 闪灯什么意思_开夜车被对方闪了一下是什么意思?老司机:灯语都不懂,晚上别开车...
- 排序函数(sort()、sorted()、argsort()函数)
- 使用ASP.NET Web API构建Restful API
- 洛谷P4012 深海机器人问题(费用流)
- UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcd in position 0: invalid continuation byte
- Win11快捷键大全
- 金蝶云苍穹平台初级开发工程师认证考试
- 计算机网络 全章节思维导图
- 服务器被攻击了怎么办
- Python3-爬虫登录开心网的账号,并且爬取个人主页内容
- const T 与T const的比较(const T vs.T const的翻译 Dan Saks)
- 同步时序逻辑电路分析——数电第六章学习
- 计算机怎么看显卡内存容量,Win10系统显卡显存大小怎样查看?Win10查看显存大小的两种方法...