ランダムフォレストのsklearn

「」 ' 
    コレクションアルゴリズム:
        1.前方励起
        2.自己重合:マトリックスからランダムに決定木のサンプルを選択した置換サンプリング方法と全試料までの時間、従って、複数の決定木を形成するが、異なる訓練サンプルを含みます、
                    モデル予測のいくつかの強力なサンプルの影響力を弱めるとモデルの一般化特性を改善することができます。
        3.ランダムフォレスト:自己重合をもとに、あなたは決定木モデルを構築するたびに、いくつかのサンプルをランダムに選択するだけでなく、ランダムに、そのようなアルゴリズムの集合として、特徴のいくつかを選択し
                    、予測結果の強いサンプルの影響を避けるためだけではなく、およびまた、より一般化されたモデルの予測力の強い機能の影響を弱めました。(モデレーション- >真値)
            ランダムフォレスト関連のAPI:
                SE ASインポートsklearn.ensemble 
                #ランダムフォレスト回帰モデル(アルゴリズムのセットに属する)
                決定木10件の最大深さ:#1 MAX_DEPTH 
                #n_estimators:1000決定木の構築、トレーニングモデル
                #min_samples_split:サブテーブルこの数は、サンプルの最小数未満である場合、それ以上のダウン分割
                モデルを= se.RandomForestRegressor(MAX_DEPTH = 10、 n_estimators = 1000、min_samples_split = 2)

    ケース:共有自転車は、自転車の配信を共有する方法を決定するために、分析を必要とします。
        1.リードデータbike_day.csv 
        トレーニングセットとテストにセット2.照合セット入力と出力が設定
        3.モデル----ランダムフォレスト、トレーニングモデルを
        4 r2は、出力のテストセット使用して得点
        、5出力特性の重要性を画像をレンダリング
'' ' 
インポートは、NP AS numpyの
 インポートMP AS matplotlib.pyplot
 インポートSM AS sklearn.metrics
 インポート SE AS sklearn.ensemble   #のコレクションアルゴリズムモジュールの
インポート sklearn.utils SUのAS   #はデータを混乱

''' ===== ============================分析bike_day.csv ================== ============= '' ' 
読み出しデータ方法。1 データ= [] :オープン( './ ml_data / bike_day.csv'、R '')、Fなどと     f.readlines()の行のための:
#1          : - data.append(.split( '')は、ライン[1]) プリント(データ)
#1 データ= np.array(データ)

读取数据2件の方法 
データ= np.loadtxt(' ./ml_data/bike_day.csv '、解凍=偽、DTYPE = ' U20 '、デリミタ= ' ' プリント(data.shape)
day_headers =データ[0、2:13 ]
 プリント(day_headers)
X = np.array(データ[1:、2:13]、DTYPE = ' F8 'Np.array =(データ[1、-1]、DTYPE = ' F8 ' 

トレーニングセットとテストセットに分割 
(X、Y、random_state = 7)Xが、Y = su.shuffle   #は、試料を破壊 
train_size = INT (LEN(X-)* 0.9 
train_x、test_x、train_y、test_y = 、YのX-:[train_size] [train_size]、X- [:train_size]、Y [train_size:] 

#のトレーニングモデル 
モデル= 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) 

モデル評価の
印刷' r2_scoreスコアのbike_day:'、Sm.r2_score(test_y、pred_test_y)) 

出力モデル特徴重要 
day_fi = model.feature_importances_ 

'' ' ========================== ======= ===============================分析bike_hour.csv 「」 ' 
#は、データの読み取り 
データを= [] 
を開く(と' ./ml_data/bike_hour.csv '' R&LT ' :F AS)
     のためのラインf.readlines():
        data.append(行[: -1] .split(' ' ))
データ = np.array(データ)
hour_headers =データ[0、午前2時14分]
 印刷
(hour_headers)
X = np.array(データ[1:、2:14]、DTYPE = ' F8 ' 
Y = np.array(データ[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 = [:train_size]、X [Xのtrain_size:]、Y [:train_size]、Y [train_size:] 

#のトレーニングモデル 
モデル= se.RandomForestRegressor(MAX_DEPTH = 10、n_estimators = 1000、= min_samples_split 3 
model.fit(train_x、train_y)

#1 モデル試験 
pred_test_y =model.predict(test_x) 

モデル評価の
印刷' r2_scoreスコアのbike_hour:' 、sm.r2_score(test_y、pred_test_y)) 

出力モデル特徴重要性 
hour_fi = model.feature_importances_ 

画像の重要性を示しbike_day機能 
MPを。図(' フィーチャー重要'、のFaceColor = ' LightGrayの' 
mp.rcParams [ ' font.sans serif- ' ] = ' SimHei ' 
mp.subplot( 211 
mp.title(' Bike_day FI ' 
mp.ylabel('重要機能" 
mp.grid(をlineStyle = " " 
sorted_indexes = day_fi.argsort()[:: - 1。]   標準順序は降順で、ある 
X = np.arange(day_headers.size)
mp.bar( X、day_fi [sorted_indexes]、 0.7、カラー= ' ドジャーブルー'、ラベル= ' BDFI ' 
mp.xticks(X、day_headers [sorted_indexes])   #1 組のx座標
mp.tight_layout()
mp.legend() 

ドロー画像の重要性はbike_hourます 
mp.subplot(212 
mp.title(' Bike_hour FIを' 
mp.ylabel(' フィーチャー重要' 
mp.grid(をlineStyle = " " 
sorted_indexes = hour_fi.argsort()。:: - 1]  降順にソート添字 
X = np.arange(hour_headers.size )
mp.bar(X、hour_fi [sorted_indexes]、 0.7、カラー= ' オレンジレッド'、ラベル= ' BHFI ' 
mp.xticks(X、hour_headers [sorted_indexes])  セットのx座標
mp.tight_layout()
mp.legend ()

mp.show()




出力: 732、16 
[ " シーズン'  ' '  ' mnth '  ' 休日'  ' 平日'  ' workingday '  ' weathersit '  ' 一時' 
 ' ATEMP '  ' ハム'  ' 風速' ] 
bike_day的r2_score得分: 0.8929064136199945 
[ ' シーズン'  ' '  ' mnth '  ' 時間 休日 平日" ' workingday '  ' weathersit ' 
 ' 一時'  ' ATEMP '  ' ハム'  ' 風速' ] 
bike_hour的r2_score得分: 0.9185230199218621

  

おすすめ

転載: www.cnblogs.com/yuxiangyang/p/11184890.html