我正在查看scikit-learn文档,并意识到大多数绘图曲线支持都存在二进制分类。
我想为我的多类分类器绘制precision_recall曲线和学习曲线。
model1=LogisticRegression()
y_d = model1.predict_proba(matrix_test)
我想知道是否存在使用稀疏的matrix_test大小(22428,22000)绘制precision_recall曲线和学习曲线的方法,并且标签是大小为np的数组(22428,)?
答案 0 :(得分:2)
如果您查看definiton of Precision and Recall,您会发现那里存在不对称性,不会直接转换为更高维度。假设类是 C 1 和 C 2 ,然后任意,其中一个它们被认为是“真”,而另一个被认为是“假”(你也可以注意到没有对称性:反转“真”和“假”不会给出相同的结果)。在更高的维度上,这根本不能直接完成。
但是,有很多方法可以提出启发式扩展。假设你的课程是 C 1 ,...,C m 。您可以从 C i 类的视点计算 m 精度和回忆,然后取(加权)平均值。权重应该反映出课程的重要性。
请注意,这正是用于二进制情况的方案,其中“True”类的权重选择为1,“False”类的权重选择为0(再次强调这个分数的任意不对称)。
在实施方面,这是微不足道的。假设你的混淆矩阵是m
。然后从类 i 的角度来看,精度为m[i, i] / np.sum(m[:, i])
,召回为m[i, i] / np.sum(m[i, :])
。