包括来自 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 给出错误答案