随机森林参数理解与调优
⾸先理解随机森林模型各参数的含义:
ble.RandomForestRegressor(n_estimators=10, criterion=’m’, max_depth=None, min_samples_split=2,
min_samples_leaf=1,
min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None, min_impurity_decrea=0.0, min_impurity_split=None, bootstrap=True, oob_score=Fal,
n_jobs=1, random_state=None, verbo=0, warm_start=Fal)
上⾯的值是对应的默认值,随机森林的分类模型与之类似.
n_estimators:森林中数的个数。
这个属性是典型的模型表现与模型效率成反⽐的影响因⼦,即便如此,你还是应该尽可能提⾼这个数字,以让你的模型更准确更稳定。criterion :度量分裂的标准。可选值:“m”,均⽅差(mean squared error);“mae”,平均绝对值误差(mean absolute error)
max_features :寻找最佳分裂点时考虑的属性数⽬。可选值,int(具体的数⽬),float(数⽬的百分⽐),string(“auto”,darkblue
“sqrt”,“log2”).
这⼀属性是对单个树来设置的,通常来讲,这个值越⼤单棵树可以考虑的属性越多,则模型的表现就越好。但是这也不是肯定的,不过有⼀点是肯定的,增加这个值会导致算法运⾏速度变慢,所以需要我们考虑去达到⼀个平衡。
max_depth : integer或者None。数的最⼤深度,如果None,节点扩展直到所有叶⼦是纯的或者所有叶⼦节点包含的样例数⼩于
min_samples_split
西南大学继续教育学院min_samples_split :分裂内部节点需要的最少样例数。int(具体数⽬),float(数⽬的百分⽐)
min_samples_leaf :叶⼦节点上应有的最少样例数。int(具体数⽬),float(数⽬的百分⽐)。
更少的节点数使得模型更容易遭受noi data的影响,我通常设置这个值⼤于50,但是你需要寻找最适合你的数值。
null啥意思
写信告诉我min_weight_fraction_leaf :
max_leaf_nodes :以”最优优先⽅式”(best-first fashion),最优节点定义为:纯度的相对减少.如果None则不限制叶⼦节点个数;[float]
min_impurity_split : 树增长提前结束的阈值.对于当前节点,⼤于这个阈值将分裂,否则就看做叶⼦节点; [float]
stop的用法
min_impurity_decrea :⼀个阈值,表⽰⼀个节点分裂的条件是:如果这次分裂纯度的减少⼤于等于这这个值.
bootstrap :构建数是不是采⽤有放回样本的⽅式(bootstrap samples); [True/Fal]
oob_score :交叉验证相关的属性。
n_jobs :设定fit和predict阶段并列执⾏的任务个数,如果设置为-1表⽰并⾏执⾏的任务数等于计算级核数; [integer, optional (default=1)] random_state :如果是int数值表⽰它就是随机数产⽣器的种⼦.如果指定RandomState实例,它就是随机产⽣器的种⼦.如果是None,随机数产⽣器是np.random所⽤的RandomState实例; [int, RandomState instance or None, optional (default=None)]
verbo :控制构建数过程的冗长度; [int, optional (default=0)]
warm_start :当设置为True,重新使⽤之前的结构去拟合样例并且加⼊更多的估计器(estimators,在这⾥就是随机树)到组合器中; [True/Fal] class_weight: “banlanced”模式是根据y标签值⾃动调整权值与输⼊数据的类频率成反⽐,计算公式是:n_samples / (n_class
np.bincount(y)).“balanced_subsample”模式的与”balanced模式相同,只不过在每⼀次树增长过程中权值的计算是根据有放回样本的.
实用英语
那么这么多样本怎么去调参呢,这⾥介绍sklearn中的神器:GridSearcherCV(),它使⽤交叉验证的⽅式,对某⼀分类器,你制定想要调参的名称和数值,作为⼀个字典传⼊进这个函数,然后它就会告诉你最佳的参数组合.(其实就是for for for都试试).下⾯是我的⼀段代码.
批准英文这⾥写代码⽚
美国夏令营del_lection import GridSearchCV
data什么意思ble import RandomForestClassifier
#准备训练数据和y值
X_train, y_train = ...
#初步定义分类器
rfc = RandomForestClassifier(max_depth=2, random_state=0)
#需要选择的参数名称⼀起后选值
tuned_parameter = [{'min_samples_leaf':[1,2,3,4], 'n_estimators':[50,100,200]}]
#神器出场,cv设置交叉验证
clf = GridSearchCV(estimator=rfc,param_grid=tuned_parameters, cv=5, n_jobs=1)
#拟合训练集
clf.fit(X_train, y_train)
print('Best parameters:')
pritn(clf.best_params_)哪些英文歌好听