包括来自 SciKit Learn Prediction 的标签

Posted

技术标签:

【中文标题】包括来自 SciKit Learn Prediction 的标签【英文标题】:Include Labels from SciKit Learn Prediction 【发布时间】:2020-11-13 05:45:56 【问题描述】:

我已经成功地对下面的数据集进行了预测,但我正试图弄清楚如何将模型的预测输出映射回 TEAM 标签。我正在使用 Python 3、Pandas 和 SciKit Learn。

样本数据:

Team    A   B    C  Score
Red     5   7   15  100
Green   4   8   22  57
Blue    3   8   33  23
Yellow  6   8   44  122 

这是我设置的简单线性回归的示例。

#file input
learning = sample_data

#features
feature_cols = ['A','B','C']


#feature harness
X = learning.loc[:, feature_cols]

#target harness
Y = learning.Score

#model fit
model = LinearRegression()
model.fit(X, Y)

# set up model harness for X
Xnew = learning.values

# set up model harness for Y
ynew = model.predict(Xnew)

print(ynew)

使用它,我可以生成如下预测数组:

[108.3970182  181.02527571 230.70598661 120.18243645]

但我正在尝试获得如下所示的结果,因此当我将没有 SCORE 的新数据输入模型时,我可以预测每个团队的 SCORE:

[Red:108.3970182  Green:181.02527571 Blue:230.70598661 Yellow:120.18243645]

我对格式很灵活,我只需要将预测输出与输入中的每个特定团队进行匹配。

【问题讨论】:

【参考方案1】:

您可以将它们作为新列添加到数据集。


# new data new_data (assumes DataFrame)
# You don’t have to pass new_data.values to Scikit-learn 
# Scikit-learn accepts DataFrame as it is

predictions = model.predict(new_data)

new_data['predictions'] = predictions 

print(new_data)

【讨论】:

【参考方案2】:

您想要在数据中添加新列吗:

learning['prediction'] = ynew

或者你想要一本字典:

d = k:v for k,v in zip(learning['Team'], ynew)

【讨论】:

与上述相同的评论 - 当我尝试将 Team 作为 feature_col 运行时,我收到一个错误 > ValueError: could not convert string to float: 'Red'

以上是关于包括来自 SciKit Learn Prediction 的标签的主要内容,如果未能解决你的问题,请参考以下文章

Cloud ML Engine 和 Scikit-Learn:“LatentDirichletAllocation”对象没有“predict”属性

scikit-learn/svm - 在“predict_proba”之后获取概率和相关标签

scikit-learn:cross_val_predict 仅适用于分区

Scikit-learn predict_proba 给出错误答案

scikit-learn中的predict_proba和decision_function有啥区别?

predict_proba 的 Scikit-learn RandomForestClassifier 输出