Python 如何在决策树中计算精确召回率?

Python 如何在决策树中计算精确召回率?,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我尝试在标准数据集“iris.csv”中预测 我有一个错误 File "C:/Users/Ultra/PycharmProjects/poker_ML/decision_tree.py", line 20, in <module> average_precision = average_precision_score(testY, y_score) File "C:\Users\Ultra\PycharmProjects\poker_ML\venv\lib\site-pa

我尝试在标准数据集“iris.csv”中预测

我有一个错误

File "C:/Users/Ultra/PycharmProjects/poker_ML/decision_tree.py", line 20, in <module>
    average_precision = average_precision_score(testY, y_score)
  File "C:\Users\Ultra\PycharmProjects\poker_ML\venv\lib\site-packages\sklearn\metrics\ranking.py", line 241, in average_precision_score
    average, sample_weight=sample_weight)
  File "C:\Users\Ultra\PycharmProjects\poker_ML\venv\lib\site-packages\sklearn\metrics\base.py", line 74, in _average_binary_score
    raise ValueError("{0} format is not supported".format(y_type))
ValueError: multiclass format is not supported
文件“C:/Users/Ultra/PycharmProjects/poker\u ML/decision\u tree.py”,第20行,在
平均精度=平均精度分数(测试,y分数)
文件“C:\Users\Ultra\PycharmProjects\poker\ML\venv\lib\site packages\sklearn\metrics\ranking.py”,第241行,平均精度分数
平均值,样本重量=样本重量)
文件“C:\Users\Ultra\PycharmProjects\poker\ML\venv\lib\site packages\sklearn\metrics\base.py”,第74行,二进制平均分数
raise VALUERROR(“{0}格式不受支持”。格式(y_类型))
ValueError:不支持多类格式
如何计算3类的精确召回率? sklearn中决策树的精确召回工作原理。也许我在计算“y_分数”时出错了?

根据
平均精度_分数
无法处理多类分类

相反,您可以这样使用:

# Decision tree
...
y_pred = decision.predict(testX)
y_score = decision.score(testX, testY)
print('Accuracy: ', y_score)

# Compute the average precision score
from sklearn.metrics import precision_score
micro_precision = precision_score(y_pred, testY, average='micro')
print('Micro-averaged precision score: {0:0.2f}'.format(
      micro_precision))

macro_precision = precision_score(y_pred, testY, average='macro')
print('Macro-averaged precision score: {0:0.2f}'.format(
      macro_precision))

per_class_precision = precision_score(y_pred, testY, average=None)
print('Per-class precision score:', per_class_precision)
请注意,您需要指定如何平均分数。如果您的数据集显示标签不平衡(而
iris
没有),这一点尤其重要

# Decision tree
...
y_pred = decision.predict(testX)
y_score = decision.score(testX, testY)
print('Accuracy: ', y_score)

# Compute the average precision score
from sklearn.metrics import precision_score
micro_precision = precision_score(y_pred, testY, average='micro')
print('Micro-averaged precision score: {0:0.2f}'.format(
      micro_precision))

macro_precision = precision_score(y_pred, testY, average='macro')
print('Macro-averaged precision score: {0:0.2f}'.format(
      macro_precision))

per_class_precision = precision_score(y_pred, testY, average=None)
print('Per-class precision score:', per_class_precision)