2017-09-09 5 views
0

私は、列車とテストのデータセットを使用して、Pythonのランダムフォレストを使用して予測モデルを作成しようとする初心者です。 train ["ALLOW/BLOCK"]は4つの期待値のうち1つを取ることができます(すべての文字列)。 test ["ALLOW/BLOCK"]は予測する必要があります。Pythonでfactorize()を使った後の元の値の取得方法は?

y,_ = pd.factorize(train["ALLOW/BLOCK"]) 

y 
Out[293]: array([0, 1, 0, ..., 1, 0, 2], dtype=int64) 

私はpredictを予測に使用しました。

clf.predict(test[features]) 

clf.predict(test[features])[0:10] 
Out[294]: array([0, 0, 0, 0, 0, 2, 2, 0, 0, 0], dtype=int64) 

数字の代わりに元の値を取得するにはどうすればよいですか?次のコードは、実際の値と実際の値を実際に比較していますか?

z,_= pd.factorize(test["AUDIT/BLOCK"]) 

z==clf.predict(test[features]) 
Out[296]: array([ True, False, False, ..., False, False, False], dtype=bool) 

答えて

0

まず、あなたは次のようにpd.factorizeによって返さlabelを保存する必要があります。

y, label = pd.factorize(train["ALLOW/BLOCK"]) 

そして、あなたは、数値予測を得た後、その後、あなたはlabel[pred]で対応するラベルを抽出することができます。

pred = clf.predict(test[features]) 
pred_label = label[pred] 

pred_labelには、元の値の予測が含まれています。


いいえ、ラベルが異なる可能性が非常に高いので、テスト予測を因数分解しないでください。次の例を考えてみましょう:

pd.factorize(['a', 'b', 'c']) 
# (array([0, 1, 2]), array(['a', 'b', 'c'], dtype=object)) 

pd.factorize(['c', 'a', 'b']) 
# (array([0, 1, 2]), array(['c', 'a', 'b'], dtype=object)) 

したがって、ラベルは要素の順序によって異なります。

+1

これはうまくいきました。私は今まで知らなかった。 :) –

関連する問題