0

私は機械学習モデルのためにPythonを使用しています。私は人々がメンバーシップを変えるかどうかを予測しようとしています。私はいくつかのモデルを試してみましたが、そのうちの1つはうまく機能しているようです。予測値機械学習Pythonでは、どのようにしてそれらをセットに戻すことができますか?

次のステップ:私は自分のモデルで述語を作りたいと思います。私が遭遇する問題は、どの予測がどの人のためであるかを見たいということです。 PersonIDをインデックスとして設定しようとしました。この場合ロジスティック回帰を使用します。

問題:PersonIDのlogreg.predictメソッドから取得した出力に参加できません。だから私は予測値がPersonID 1に属しているかどうかわからない。

私の質問から結論づけるかもしれませんが、私は比較的新しいです。だから、どんな助けも素晴らしいだろう! (好ましくはpersonIDを使用する例が好ましい)。デモでは、私の問題には役立たない例3の値を手動で入力することに基づいて多くの予測があります。

OK、コードを追加しようとしました。私は実際のデータを含めることができないので、かなり困難です。

ロジスティック回帰モデルがあります。私はモデルに適合し、それは動作します。

from sklearn.linear_model import LogisticRegression 
logreg = LogisticRegression() 
logreg_scores = cross_val_score(logreg, X2, y2, cv=10, scoring='accuracy') 
print(logreg_scores) 
[ 0.99561917 0.99679079 0.99617951 0.99567011 0.99709628 0.98298523 
    0.99668857 0.99556778 0.9959244 0.99347904] 

logreg_score = logreg_scores.mean() 
print (logreg_score) 

dataset2 = 
pd.read_csv('Predict.csv', 
index_col = 'PersonID') 

Outcome = logreg.predict(dataset2) 

csv file looks like this: 
PersonID;A;B;C;D;E;F;G;H;I;J;K;L 
153;2;4;0;38;2;2;0;1;1;1;1;0 
154;1;0;0;5;1;2;1;0;0;1;2;1 
155;1;1;0;6;2;2;1;0;0;1;22;1 
156;1;4;0;7;3;2;1;0;0;2;25;1 
157;1;4;0;64;4;2;1;1;1;3;132;0 
158;1;2;0;72;2;2;1;1;1;1;1;0 
159;1;1;0;49;2;2;1;1;1;1;56;1 
160;1;0;1;13;2;2;1;1;0;1;56;1 
161;1;0;0;67;2;2;1;1;1;1;33;0 
162;1;0;0;66;2;2;1;1;1;1;33;0 
+0

ご使用のコードに質問を追加してください。 –

+1

'predict()'の出力は入力と同じ順序です。 PersonIDを入力データ 'X'に関連付けることができますか?同じ順序を使用してください。 –

+0

@MiriamFarber:あなたが今私がしようとしていることのアイデアを得るが、これはノートブックで実行できるコードではない。私が間違っているところを見るのは十分ですか? –

答えて

0

logreg.predict(dataset2)からの予測は、入力と同じ順序です。したがって、予測の最初の行は、dataset2の最初のPersonIDを参照します。またOutcome = logreg.predict(dataset2)を直接使用しました。まだデータを入力していないので、エラーが発生します。

from sklearn.linear_model import LogisticRegression 
from sklearn.model_selection import cross_val_score 
import numpy as np 
import pandas as pd 

# create some dummy data 
X2 = np.asarray(np.random.normal(size=(1000,12))) 
y2 = np.asarray(np.random.choice(2,size=(1000))) 

logreg = LogisticRegression() 
logreg_scores = cross_val_score(logreg, X2, y2, cv=10, scoring='accuracy') 

# you need to fit the data using the fit function 
logreg.fit(X2,y2) 

# creating some sample data again 
dataset2 = pd.DataFrame(np.asarray(np.random.normal(size=(1000,12)))) 
Outcome = logreg.predict(dataset2) # predict the outcome 

dataset2.loc[:,'Outcome'] = Outcome # adding it to original data 
+0

TY。かなり良い作品! –

関連する問題