为什么我用随机森林模型每次的score都不同 差异很大

  统计/机器学习 回归分析 模型验证 Python    浏览次数:257        分享
0

随机森林模型 回归 ,

import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsRegressor
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score

data =pd.read_excel("data.xlsx","Sheet1")
data= data.dropna()
X=data.iloc[:,3:7]
y=data.iloc[:,10]
X_train, X_test, y_train, y_test=train_test_split(X,y,test_size=0.3)
rfr = RandomForestRegressor(n_estimators=20, max_features='auto',random_state=0)
#rfr.fit(X_train,y_train)
kf = KFold(n_splits=5, shuffle=True)
score_ndarray = cross_val_score(rfr, X, y, cv=kf)
print(score_ndarray)

400多个样本;

这个是5次的结果

[ 0.220815 0.6115134 -0.72378707 0.51356938 0.36471651]

 

constant007   2019-09-19 15:26



   2个回答 
2

你每次R方都不同,估计是因为你的模型很不稳健,与过拟合有关。你可以增加n_estimators,同时还需要设置最大深度,因为你的特征只有4个,max_depth设置为4就够了应该。

此外,cross_val_score默认的scoring是R方,你可以换成其他的试试,比如rmse

score_ndarray = cross_val_score(rfr, X, y, cv=kf, scoring='neg_mean_squared_error')

或者mae

score_ndarray = cross_val_score(rfr, X, y, cv=kf, scoring='neg_mean_absolute_error')
SofaSofa数据科学社区DS面试题库 DS面经

得得得   2019-09-19 22:38

0

随机森林本来也是具有随机性的,所有每个fold结果相差很正常。如果你增加树的数量,应该每个fold的结果会相近一些。如果你数据量不够大的话,建议把fold数少一些,比如3fold。

SofaSofa数据科学社区DS面试题库 DS面经

WinJ   2019-09-30 11:08



  相关主题

随机森林如何调参?   3回答

决策回归树   2回答

为什么随机森林比决策树更robust?   1回答

随机森林警告:A column-vector y was passed when a 1d array was expected   1回答

随机森林的模型一般都很大么?   1回答

怎么理解随机森林的oob error?   2回答

关于knn算法中kd树的问题   1回答

随机森林中增加树的数量对于偏差和方差的影响   2回答

关于为什么要用GBDT的疑问   1回答

决策树的深度和数据特征个数的关系   1回答

随机森林是如何计算测试样本的概率的?   1回答

python sklean中的决策树是用的哪一种决策树算法?   2回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!