UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted sa

from sklearn import metrics

y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]

y_true_1 = [0, 1, 2, 0, 1, 2]
y_pred_1 = [0, 2, 3, 0, 0, 1]

y_true_2 = [0, 1, 2, 0, 1, 2]
y_pred_2 = [0, 1, 1, 0, 0, 1]


print metrics.precision_score(y_true, y_pred, average='macro')
# print metrics.precision_score(y_true_1, y_pred_1, average='macro')
# print metrics.precision_score(y_true_2, y_pred_2, average='macro')

打印第一句结果为:

0.222222222222

第二句结果为:

0.166666666667

第三句结果为:

0.333333333333
C:\Python27\lib\site-packages\sklearn\metrics\classification.py:1113: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples.
  'precision', 'predicted', average, warn_for)

当预测的值中不包含有实际值时会报错。
请参考:sklearn.metrics.precision_score

### 回答1: 机器翻译:未定义度量警告:在没有预测样本的标签中,精度未定义并被设置为0.0。使用“zero_division”参数来控制这种行为。 正确的翻译:未定义度量警告:在没有预测样本的标签中,精度未定义并被设置为0.0。可以使用“zero_division”参数来控制此行为。 ### 回答2: 这是一条关于机器学习模型评估的警告信息,意思是某些标签中没有预测值,从而导致精度无法定义,因此被设置为0.0。解决这个问题可以使用参数“zero_division”来控制这种行为。 在机器学习中,我们经常使用精度(accuracy)作为模型的评估指标。精度是指预测正确的样本数占总样本数的比例。但是当某个标签中没有预测值时,我们无法计算该标签的精度,因为分母为0,这时就会出现“precision is ill-defined”的警告信息。 为了解决这个问题,我们可以使用sklearn库中的“zero_division”参数来控制模型的行为。该参数有两个取值,分别是True和False。 当“zero_division”为True时,如果某个标签中没有预测值,那么该标签的精度就会被设置为0.0。这种行为可以避免出现警告信息,但是会使得模型的评估结果不够准确。 当“zero_division”为False时,如果某个标签中没有预测值,那么模型会抛出一个“ZeroDivisionError”的异常。这种行为可以确保模型评估的准确性,但是需要根据具体情况进行处理。 总之,机器学习模型评估中出现“precision is ill-defined”的警告信息是常见问题,使用“zero_division”参数可以解决这个问题,但需要权衡准确性和实际情况进行选择。 ### 回答3: 这是一个来自机器学习框架scikit-learn的警告信息。这个警告通常在模型评估时出现,并且表示数据集存在某些标签,在预测中没有出现。这意味着模型无法预测这些标签的样本。为了避免精度出现无意义的结果,并且保持程序的稳定性,scikit-learn会将这些标签的精度设置为0.0。同时,scikit-learn也提供了一个"zero_division"参数,让用户可以设置自己想要的处理方式。 当发现出现这个警告时,我们需要仔细检查数据集的标签是否被正确地分配,并确保数据集的标签集和模型的预测结果集完全一致。如果标签集有缺失,我们需要考虑是否需要补充数据集,或者重新校准标签集并重新训练模型。 除了标签集的问题,还有可能是模型的性能出现异常的原因。在面对一些特殊的场景时,比如绝大多数数据都属于某个标签,或者数据中的标签有高度的相关性时,一些算法可能表现不佳。在这种情况下,我们需要考虑使用其他的算法或调整当前算法的参数。 总之,当出现undefinedmetricwarning警告时,我们需要仔细检查标签集和模型,保证数据集和模型都没有问题,并且合理地设置"zero_division"参数,以避免程序出现死循环或其他问题。同时,我们也需要注意在不同数据集和算法下,可能会出现各种各样的问题,需要仔细处理。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值