我在使用Python进行机器学习模型的开发。我试图预测人们是否会转换会员身份。我尝试了几种模型,现在其中一个模型似乎运行得不错。
下一步:我想用我的模型进行预测。我遇到的问题是,我想知道哪个预测对应于哪个人。我尝试将PersonID设置为索引。在这种情况下,我使用了逻辑回归。
问题是:我无法通过PersonID将logreg.predict方法的输出结果连接起来。因此,我不知道预测值1对应于哪个PersonID,等等。
从我的问题中你可能会得出结论,我在这个领域还是相对新手。所以任何帮助都将非常受欢迎!(最好是使用personID的例子)。在演示中,我看到很多基于手动输入的预测,例如3个值,这对我的问题没有帮助。
好的,这是我尝试添加代码。相当困难,因为我无法包含实际数据。
我有我的逻辑回归模型。我对模型进行了拟合,它工作得很好。
from sklearn.linear_model import LogisticRegressionlogreg = 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;L153;2;4;0;38;2;2;0;1;1;1;1;0154;1;0;0;5;1;2;1;0;0;1;2;1155;1;1;0;6;2;2;1;0;0;1;22;1156;1;4;0;7;3;2;1;0;0;2;25;1157;1;4;0;64;4;2;1;1;1;3;132;0158;1;2;0;72;2;2;1;1;1;1;1;0159;1;1;0;49;2;2;1;1;1;1;56;1160;1;0;1;13;2;2;1;1;0;1;56;1161;1;0;0;67;2;2;1;1;1;1;33;0162;1;0;0;66;2;2;1;1;1;1;33;0
回答:
你从logreg.predict(dataset2)
得到的预测结果与输入的顺序相同。所以预测结果的第一行将对应于dataset2
中的第一个PersonID
。此外,你直接使用了Outcome = logreg.predict(dataset2)
。你还没有拟合任何数据,所以会得到一个错误。
from sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import cross_val_scoreimport numpy as npimport pandas as pd# create some dummy dataX2 = 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 functionlogreg.fit(X2,y2)# creating some sample data againdataset2 = pd.DataFrame(np.asarray(np.random.normal(size=(1000,12))))Outcome = logreg.predict(dataset2) # predict the outcomedataset2.loc[:,'Outcome'] = Outcome # adding it to original data