栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Python

RandomForestClassifier/Regressor

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RandomForestClassifier/Regressor

1.集成算法(ensemble )

        1.集成评估器

                       

        

bagging多个相互独立的评估器,对其预测进行平均或多数表决原则来决定评估器的结果
boosting基评估器相关,按顺序一一构建,结合若评估器构成强评估器

 2.RandomForestClasifier

        1.决策树思想

        2.基评估器参数 

 

         3.n_estimators

        控制树木的数量,对模型精确度影响是单调增的,但有决策边界,过大会影响训练时间

super=[]
for i in range(200):
    rfc = RandomForestClassifier(n_estimators=i+1,n_jobs=-1)
    rfc_score = cross_val_score(rfc,wine.data,wine.target,cv=10).mean()
    super.append(rfc)
print(max(super),super.index(max(super)))
plt.figure(figsize=[20,5])
plt.plot(range(1,201),superpa)
plt.show()

        结果显示到一定极限不再单增

        4.决策树和随机森林的关系

        

rfc_l = []
clf_l = []

for i in range(10):
    clf = DecisonTreeClassifier()
    clf_score = cross_val_score(clf,wine.data,wine.target,cv=10).mean()
    clf_l.append(clf_score)
    rfc = RandomForestClassifier(n_estimator=10)
    rfc_score = cross_val_score(rfc,wine.data,wine_target,cv=10).mean()
    rfc_l.append(rfc_score)

plt.plot(range(1,11),rfc_l,label="Random Forest")
plt.plot(range(1,11),clf_l,label="Decision Tree")
plt.legend()
plt.show()

            结果显示单个决策树的准确率越高,随机森林的准确率也越高

        5.random_state

        

rfc = RandomForestClassifier(n_estimators=20,random_state=2)
rfc = rfc.fit(Xtrain, Ytrain)
#随机森林的重要属性之一:estimators,查看森林中树的状况
rfc.estimators_[0].random_state
for i in range(len(rfc.estimators_)):
    print(rfc.estimators_[i].random_state)

           生成不同的决策树的random_state,使每棵树不一样,如果没有随机性的话将会和

           决策树相同,但仍然有局限性

        6.bootstrap&oob_score

                     bootstrap可以在采取不同的训练集使每棵树使不同的,增强随机性

bootstrap采用有放回的随机抽样方法,默认值为True
oob_score有放回的抽样技术,当n过大会使约37%的数据无法被采集到,所以避免浪费使用这些数据用作测试集,但需将参数设置为True,此时无需划分训练集测试集

         

rfc = RandomForestClassifier(n_estimators=25,oob_score=True)
rfc = rfc.fit(wine.data,wine.target)

#重要属性oob_score_ 用于查看始终未被抽取到掉落在袋外的被当作测试集的测试结果
rfc.oob_score_

                7.其他重要属性和接口

rfc.estimators_
rfc.estimators_[i] #用于查看随机随林中树的random_state

rfc.oob_score_    #查看袋口外测试集的结果

rfc.feature_importances_        #查看每一特征的权重
rfc.apply(Xtest)                #输入测试集查看每个样本所在叶子节点的索引
rfc.predict(Xtest)                #输入测试集查看每个样本的标签
rfc.predict_proba(Xtest)    #(每一测试样本分到哪一结果的概率,根据这个给出相应的标签,如0.7--》1
                            #.而在袋装法中,这一个数值来自于sklearn的平均概率)



3.RandomForestRegressor 

 与回归树原理相同,同样多出了n_estimators参数

4.用回归森林填补缺失值案例

x_missing = x_full.copy()
y_missing = y_full.copy()


x_missing_reg = x_missing.copy()    #得到填充值的桥梁,用数据上处理的话填完0就找不到缺失值了
sortindex = np.argsort(x_missing_reg.isnull().sum(axis=0)).values   #按列求空值数量,排序并取出对应索引,values变成数组形式

for i in sortindex:    #先取多的进行填补


    #构建新矩阵
    df = x_missing_reg
    fillc = df.iloc[:,i]        #矩阵1 需填补的列
    df = pd.concat([df.iloc[:,df.columns != i],pd.Dataframe(y_full),axis=1)

    #在新矩阵中进行填补    矩阵二无缺失值的无填补的列
    df_0 = SimpleImputer(missing_values = np.nan
                        ,strategy = 'constant'
                        ,fill_values=0).fit_transform(df)

    #训练集和测试集
    X_train = df_0[fillc.notnull(),:]
    Y_train = fillc[fillc.notnull()]
    X_test = df_0[fiilc.isnull(),:]
    Y_test = fillc[fillc.isnull()]

    # 填补缺失值
    rfc = RandomForestRegressor(n_estimators = 100)
    rfc = rfc.fit(X_train,Y_train)
    Ypredict = rfc.predict(Xtest)

    #补回原始矩阵
    x_missing_reg.loc[x_missing_reg.iloc[:,i].isnull(),i] = Ypredict

5.调参中的泛化误差思想

       模型的复杂度和泛化误差的关系

         偏差、方差

 6.bagging        vs        boosting

 

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/280317.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号