【问题标题】:Predicted values Machine Learning Python, how do I join them back to the set?预测值机器学习 Python,我如何将它们加入集合?
【发布时间】:2018-01-31 18:06:15
【问题描述】:

我将 Python 用于机器学习模型。我试图预测人们是否会转换会员资格。我尝试了几种模型,现在,其中一种似乎运行良好。

下一步:我想用我的模型进行预测。我遇到的问题是我想看看哪个预测是针对哪个人的。我试图将 PersonID 设置为索引。在这种情况下,我使用逻辑回归。

问题是:我无法加入从 PersonID 上的 logreg.predict 方法获得的输出。所以我不知道PersonID 1 属于什么预测值等等。

正如您可能从我的问题中得出的结论,我对这个主题相对较新。所以任何帮助都会很棒! (最好以使用 personID 为例)。在演示中,我看到很多基于手动输入例如 3 个值的预测,这对我的问题没有帮助。

好的,我尝试添加代码。相当困难,因为我无法包含实际数据。

我有我的逻辑回归模型。我适合模型并且它有效。

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

【问题讨论】:

  • 请在问题中添加您正在使用的代码。
  • predict() 的输出与输入的顺序相同。您能否将 PersonID 与输入数据 X 关联起来。使用相同的顺序。
  • @MiriamFarber:您现在知道我在尝试什么,但这不是您可以在笔记本中运行的代码。这足以看出我哪里出错了吗?
  • 需要将 csv 加载到 X2y2 的代码。
  • data = pd.read_csv ('...') X = data X2 = X.Values y = data['Conversion'] y2=y.values

标签: python pandas machine-learning scikit-learn logistic-regression


【解决方案1】:

您从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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 2016-09-02
    • 1970-01-01
    • 2018-10-02
    • 2011-10-04
    • 1970-01-01
    • 2020-02-03
    相关资源
    最近更新 更多