「」 ' コレクションアルゴリズム: 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