0

Ich verwende Python für ein maschinelles Lernmodell. Ich versuche vorherzusagen, ob Leute eine Mitgliedschaft konvertieren oder nicht. Ich habe mehrere Modelle ausprobiert und jetzt scheint einer von ihnen gut zu funktionieren.Prognostizierte Werte Machine Learning Python, wie verknüpfe ich sie wieder mit dem Set?

Nächster Schritt: Ich möchte Vorhersagen mit meinem Modell treffen. Das Problem, auf das ich stoße, ist, dass ich sehen möchte, welche Vorhersage für welche Person ist. Ich habe versucht, die PersonID als Index festzulegen. Ich verwende in diesem Fall logistische Regression.

Problem ist: Ich bin nicht in der Lage, die Ausgabe, die ich von der logreg.predict-Methode auf PersonID erhalten. Ich weiß also nicht, welcher vorhergesagte Wert zu PersonID 1 gehört und so weiter.

Wie Sie aus meiner Frage schließen können, bin ich relativ neu in dem Thema. Also jede Hilfe wäre großartig! (vorzugsweise mit Beispiel personID). In Demo's sehe ich viele Vorhersagen basierend auf der manuellen Eingabe von zB 3 Werten, was für mein Problem nicht hilfreich ist.

OK, mein Versuch, Code hinzuzufügen. Ziemlich schwierig, da ich keine echten Daten angeben kann.

Ich habe mein logistisches Regressionsmodell. Ich passe das Modell an und es funktioniert.

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

Bitte fügen Sie der Frage den Code hinzu, den Sie verwenden. –

+1

Die Ausgabe von 'predict()' hat die gleiche Reihenfolge wie die Eingabe. Kannst du PersonID mit den Eingabedaten 'X' in Verbindung bringen? Verwenden Sie die gleiche Reihenfolge. –

+0

@MiriamFarber: Sie bekommen jetzt eine Idee von dem, was ich versuche, aber das ist kein Code, den Sie in Ihrem Notebook ausführen können. Reicht das aus, um zu sehen, wo ich falsch liege? –

Antwort

0

Die Vorhersagen Sie von logreg.predict(dataset2) erhalten, ist in der gleichen Reihenfolge wie die Eingabe. Die erste Reihe der Vorhersagen wird sich somit auf die erste PersonID in dataset2 beziehen. Sie haben auch direkt Outcome = logreg.predict(dataset2) verwendet. Sie haben noch keine Daten hinzugefügt, daher erhalten Sie einen Fehler.

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. Funktioniert ziemlich gut! –