2

CSV ファイル内のいくつかの値を予測するために、python の scikit-learn モジュールを使用します。私はそれを行うためにランダムフォレストリグレッサーを使用しています。例として、予測する 8 つのトレーニング値と 3 つの値があります。どのコードを使用する必要がありますか? 予測される値として、すべてのターゲット値を一度に(A)または個別に(B)与える必要がありますか?

バリアント A:

#Readind CSV file
dataset = genfromtxt(open('Data/for training.csv','r'), delimiter=',', dtype='f8')[1:]
#Target value to predict  
target = [x[8:11] for x in dataset]
#Train values to train 
train = [x[0:8] for x in dataset]
#Starting traing
rf = RandomForestRegressor(n_estimators=300,compute_importances = True) 
rf.fit(train, target)

バリアント B:

#Readind CSV file
dataset = genfromtxt(open('Data/for training.csv','r'), delimiter=',', dtype='f8')[1:]
#Target values to predict  
target1 = [x[8] for x in dataset]
target2 = [x[9] for x in dataset]
target3 = [x[10] for x in dataset]
#Train values to train 
train = [x[0:8] for x in dataset]
#Starting traings
rf1 = RandomForestRegressor(n_estimators=300,compute_importances = True) 
rf1.fit(train, target1)
rf2 = RandomForestRegressor(n_estimators=300,compute_importances = True) 
rf2.fit(train, target2)
rf3 = RandomForestRegressor(n_estimators=300,compute_importances = True) 
rf3.fit(train, target3)

どのバージョンが正しいですか?

前もって感謝します!

4

2 に答える 2

4

どちらも可能ですが、異なることを行います。

1 つ目は、 のさまざまなエントリの独立したモデルを学習しますy。2 番目は、 のすべてのエントリのジョイント モデルを学習しますyy学習できるエントリ間に意味のある関係がある場合、2 番目のエントリがより正確になるはずです。

非常に少ないデータでトレーニングを行っており、正則化していないため、2 番目のケースでは単純に過剰適合していると思います。回帰の場合の分割基準については完全にはわかりませんが、ラベル空間が 1 次元の場合よりも 3 次元の場合、リーフが「純粋」になるまでに時間がかかります。したがって、あなたが持っている小さなデータでは保証されない、より複雑なモデルを学ぶことができます.

于 2013-01-25T17:59:35.143 に答える
2

「8つのトレイン値と3つの値」は、通常の機械学習用語では「8つの機能と3つのターゲット変数」として最もよく表現されます。

両方のバリアントが機能し、同様の予測を生成しますRandomForestRegressorマルチ出力回帰をサポートするために作成されたように。

RandomForestRegressorただし、予測は非決定論的アルゴリズムとまったく同じにはなりません。しかし、平均して、両方のアプローチの予測品質は同じである必要があります。

編集:代わりにアンドレアスの答えを参照してください。

于 2013-01-24T18:27:19.933 に答える