-5

n_estimatorsによって実行されるランダムフォレスト回帰のパフォーマンスをチェックしようとしています。ランダムフォレストリグレッサー - Pythonは再現性がありません

seed = np.random.seed(1962) 
rng = np.random.RandomState(1962) 

np.random.seed(1962) 

estimators = [pow(2,3),10,pow(2,4),pow(2,5),pow(2,6),pow(2,7),pow(2,8),500,pow(2,9),pow(2,10),pow(2,11)] 
#oob_train = {} 
train_acc = {} 
test_acc = {} 
for w in range(0,len(estimators),1): 
    modelrfe = RandomForestRegressor(n_estimators = estimators[w],random_state=rng, n_jobs = -1) 
    model_params = estimators[w] 
    modelrfe.fit(train_x1,train_y1) 
    train_acc[model_params] = mean_absolute_error(scale_data.inverse_transform(train_y1.reshape(-1,1)),scale_data.inverse_transform(modelrfe.predict(train_x1).reshape(-1,1))) 
    test_acc[model_params] = mean_absolute_error(scale_data.inverse_transform(test_y1.reshape(-1,1)),scale_data.inverse_transform(modelrfe.predict(test_x1).reshape(-1,1))) 



train_acc = pd.DataFrame(train_acc.items()) 
train_acc.columns = ['keys','Trainerror'] 
test_acc = pd.DataFrame(test_acc.items()) 
test_acc.columns = ['keys','Testerror'] 
error_df3 = pd.merge(train_acc, test_acc, on='keys') 
error_df3 = pd.DataFrame(error_df3) 

私はまた、最初にrngを定義しました。

注:1つのForループを想像してみましょう:複数のモデルを通過する1つのnrow(データフレーム)& Forループの先頭にrng &シードを定義しました。

助けてください! 。

2出力が理想的だったはずです。

間違いを:私が使っていたここでの鍵は、答えを見つけるしてください[シミュレーション2]

+0

画像を添付していません。また、[MCVE](https://stackoverflow.com/help/mcve) –

+0

の長いコードを提供できる方が良いでしょう。そのため、関連性を追加していません。私はAlgoについて、その中にrandom_state変数を使用するように再現性を持たせることを尋ねています –

答えて

0

[ここに画像の説明を入力します] [シミュレーション1] [ここに画像の説明を入力] n_estimators

を参照してください。 rng = A Randomstate Instance [ np.random.RandomState(1962)]

理想的には、random_state変数にシード値をintとして記述する必要があります。

、すなわちrng = 1962ランダムインスタンスをシードします。

次に、再現性のためにモデルのrandom_stateを使用して作業を進める必要があります。

関連する問題