如何在sklearn中处理评分方法?

2024-06-28 19:06:30 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我上一个问题的扩展How to convert a groupby().mean() into a callable object?

我非常感谢本论坛给予我的帮助,特别是阿尔贝托·加西亚·拉博索,他回答了我关于这一模式的问题。在

当我继续时,会出现更多的错误。这个对我来说似乎很难纠正。它是关于模型的性能评估。我试图使用.score(pred_值,real_值),但错误提示输入值不在[index]中:

KeyError: 'None of [[87.333333333333329, 76.0, 81.5, 87.333333333333329, 87.333333333333329, 76.0, 81.5]] are in the [index]'

我不知道该怎么解释。索引在哪里?如何访问它并解决问题?在

我已经考虑了很久了。我还是解决不了这个问题。如有任何帮助,我将不胜感激。谢谢您。在

型号

^{pr2}$

数据输入和模型测试

names = ["John", "Mary", "Suzie", "John", "John", "Mary", "Suzie"]
scores = [80, 70, 75, 90, 92, 82, 88]
dd = pd.DataFrame({"name": names, "score": scores})

ddnames = list(dd['name'])
ddscores = list(dd['score'])

B = MeanClassifier()
Bfit = B.fit(ddnames, ddscores)

Bpred = B.predict(dd['name'])
#print(Bpred)

print(B.score(Bpred, ddscores))  #The error appears here

Tags: name模型indexnames错误johnddlist
1条回答
网友
1楼 · 发布于 2024-06-28 19:06:30

代码中有两个问题……第一个问题是score方法。在

就像分数的定义是-

score(X, y[, sample_weight])

只需提到score在后端调用predict本身。在

其中X是您的特征集,y是您的真实数据。你提供的是预测列表和真实列表。所以把这句话改成-

print(B.score(ddnames, ddscores))

但是如果你运行这个,你会得到另一个错误-

Can't handle mix of multiclass and continuous

你得到这个错误的原因是你继承了ClassifierMixin并做了一个回归任务。因此,简单地说,您给出的是连续输出,但是{}将其视为一个分类问题。在

所以只要继承RegressorMixin就可以了。在

^{pr2}$

输出-

0.395607701564

相关问题 更多 >