机器学习:在混淆矩阵中出错

Machine Learning: Getting error in Confusion Matrix

运行宁随机森林回归模型时,运行宁混淆矩阵时出现错误。该模型能够预测 y_pred 但我无法检查准确性,因为我无法 运行 准确性矩阵。

数据类型:

type(y_test)
Out[124]: numpy.ndarray

type(y_pred)
Out[125]: numpy.ndarray

下面是我的混淆矩阵代码:

from sklearn.metrics import confusion_matrix
matrix = confusion_matrix(y_test, y_pred)

print(matrix)

from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)

错误:

confusion_matrix(y_test, y_pred)

Traceback (most recent call last):

File "<ipython-input-121-7a3dbcfd18a0>", line 1, in <module>
confusion_matrix(y_test, y_pred)

File "/Users/srikantswamy/anaconda3/lib/python3.6/site-packages/sklearn  /metrics/classification.py", line 253, in confusion_matrix
y_type, y_true, y_pred = _check_targets(y_true, y_pred)

File "/Users/srikantswamy/anaconda3/lib/python3.6/site-packages/sklearn /metrics/classification.py", line 88, in _check_targets
raise ValueError("{0} is not supported".format(y_type))

ValueError: continuous is not supported

监督学习主要解决的问题是回归和分类。有不同的方法来区分它们,但基本上如果你的输出是连续的,假设你输入一个向量并期望一个实数作为输出,你将面临回归问题,而如果你的输出包含 class es(离散输出),假设你输入一个向量并期望是或否,从 0 到 9 的数字,一种动物等。你正面临分类问题。

在class化问题中,您可以使用准确度、错误class化、交叉熵、f1 分数等指标,因为它们依赖于检查输入是否在正确的 class,但在回归问题中没有办法做到这一点,只需尝试想象一个具有无限 class 的混淆矩阵。在回归中,常见的指标是,例如,均方误差和平均绝对误差。

总结:

  • 如果您遇到 class化问题,您应该切换到另一个模型,例如随机森林分类器。
  • 如果您遇到回归问题,您应该切换到另一个指标,例如均方误差。使用此指标的有用可视化可能是错误的直方图。

给出一个简单的答案:混淆矩阵是table,通常用于描述分类模型的性能(或"classifier") 。在您的情况下,您正在尝试找到连续变量的混淆矩阵。对于回归使用均方误差。 看看这个讲座 pdf:http://www.it.uu.se/edu/course/homepage/sml/lectures/lecture3_handout.pdf