标签: confusion-matrix

混淆矩阵与其上的分类/错误分类实例的数量(Python/Matplotlib)

我正在使用matplotlib绘制一个混淆矩阵,其代码如下:

from numpy import *
import matplotlib.pyplot as plt
from pylab import *

conf_arr = [[33,2,0,0,0,0,0,0,0,1,3], [3,31,0,0,0,0,0,0,0,0,0], [0,4,41,0,0,0,0,0,0,0,1], [0,1,0,30,0,6,0,0,0,0,1], [0,0,0,0,38,10,0,0,0,0,0], [0,0,0,3,1,39,0,0,0,0,4], [0,2,2,0,4,1,31,0,0,0,2], [0,1,0,0,0,0,0,36,0,2,0], [0,0,0,0,0,0,1,5,37,5,1], [3,0,0,0,0,0,0,0,0,39,0], [0,0,0,0,0,0,0,0,0,0,38] ]

norm_conf = []
for i in conf_arr:
    a = 0
    tmp_arr = []
    a = sum(i,0)
    for j in i:
        tmp_arr.append(float(j)/float(a))
    norm_conf.append(tmp_arr)

plt.clf()
fig = plt.figure()
ax = fig.add_subplot(111)
res = ax.imshow(array(norm_conf), cmap=cm.jet, interpolation='nearest')
cb = fig.colorbar(res)
savefig("confmat.png", format="png")
Run Code Online (Sandbox Code Playgroud)

但我想在混淆矩阵中显示数字,就像这个图形(右图).我怎样才能conf_arr在图形上绘图?

混淆矩阵

python matplotlib confusion-matrix

10
推荐指数
1
解决办法
6901
查看次数

10
推荐指数
2
解决办法
5万
查看次数

如何从R中的confusionMatrix检索整体精度值?

在R插入库中,如果我得到如下的混淆矩阵,是否有办法检索整体精度0.992?我无法获得这个单值,因为我需要存储这个值并将其用于以后的处理.这有可能吗?

 Prediction    A    B    C    D    E
          A 1114    2    0    0    0
          B    9  745    5    0    0
          C    0    6  674    4    0
          D    0    0    3  640    0
          E    0    0    2    1  718
Run Code Online (Sandbox Code Playgroud)

总体统计

            Accuracy : 0.992         
              95% CI : (0.989, 0.994)
 No Information Rate : 0.286         
 P-Value [Acc > NIR] : <2e-16        

               Kappa : 0.99          
Run Code Online (Sandbox Code Playgroud)

Mcnemar的测试P值:NA

按班级统计:

                     Class: A Class: B Class: C Class: D Class: E
 Sensitivity             0.992    0.989    0.985    0.992    1.000
 Specificity             0.999 …
Run Code Online (Sandbox Code Playgroud)

r confusion-matrix r-caret

10
推荐指数
1
解决办法
2万
查看次数

为什么我的混淆矩阵只返回一个数字?

我正在做二元分类。每当我的预测等于真实情况时,我就会sklearn.metrics.confusion_matrix返回一个值。难道没有问题吗?

from sklearn.metrics import confusion_matrix
print(confusion_matrix([True, True], [True, True])
# [[2]]
Run Code Online (Sandbox Code Playgroud)

我期望类似的东西:

[[2 0]
 [0 0]]
Run Code Online (Sandbox Code Playgroud)

python confusion-matrix scikit-learn

9
推荐指数
1
解决办法
3749
查看次数

R包插入符号混乱矩阵缺少类别

我使用的功能confusionMatrix[Rcaret来计算一些数据我有一些统计数字.我一直把我的预测以及我的实际值放到函数中,以便tableconfusionMatrix函数中使用表格,如下所示:

table(predicted,actual)
Run Code Online (Sandbox Code Playgroud)

但是,有多种可能的结果(例如A,B,C,D),我的预测并不总是代表所有可能性(例如只有A,B,D).table函数的结果输出不包括缺少的结果,如下所示:

    A    B    C    D
A  n1   n2   n2   n4  
B  n5   n6   n7   n8  
D  n9  n10  n11  n12
# Note how there is no corresponding row for `C`.
Run Code Online (Sandbox Code Playgroud)

confusionMatrix函数无法处理缺失的结果并给出错误:

Error in !all.equal(nrow(data), ncol(data)) : invalid argument type
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以使用table不同的函数来获取缺少的零行或使用confusionMatrix不同的函数,以便将缺失的结果视为零?

作为注释:由于我随机选择要测试的数据,有时候实际结果中也没有表示类别,而只是预测.我不相信这会改变解决方案.

r missing-data confusion-matrix r-caret

8
推荐指数
2
解决办法
2万
查看次数

RTextTools中的Create_Analytics

我试图将Text文档分类为多个类别.我的下面的代码工作正常

matrix[[i]] <- create_matrix(trainingdata[[i]][,1], language="english",removeNumbers=FALSE,stemWords=FALSE,weighting=weightTf,minWordLength=3)                              
container[[i]] <- create_container(matrix[[i]],trainingdata[[i]][,2],trainSize=1:50,testSize=51:100) ,
models[[i]] <- train_models(container[[i]], algorithms=c("MAXENT","SVM"))
results[[i]] = classify_models(container[[i]],models[[i]])
Run Code Online (Sandbox Code Playgroud)

当我尝试下面的代码来获得精度,召回,准确度值:

analytic[[i]]  <- create_analytics(container[[i]], results[[i]])
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error in `row.names<-.data.frame`(`*tmp*`, value = c(NA_real_, NA_real_ : 
  duplicate 'row.names' are not allowed
Run Code Online (Sandbox Code Playgroud)

Categoriestext格式.如果我转换categoriesNumeric- 上面的代码工作正常.

是否有工作来保持text格式的类别,并获得精度,召回,准确值.

我的目标是获得多级分类器的精度,召回率,准确度值和混淆矩阵.是否有任何其他包来获取多类文本分类器的上述值(一个与所有)

precision r text-mining document-classification confusion-matrix

8
推荐指数
1
解决办法
1780
查看次数

R如何使用插入符包可视化混淆矩阵

我想把我放在混淆矩阵中的数据可视化.有没有一个函数我可以简单地把混淆矩阵和它可视化它(绘制它)?

我想做的例子(Matrix $ nnet只是一个包含分类结果的表):

Confusion$nnet <- confusionMatrix(Matrix$nnet)
plot(Confusion$nnet)
Run Code Online (Sandbox Code Playgroud)

我的混乱$ nnet $表看起来像这样:

    prediction (I would also like to get rid of this string, any help?)
    1  2
1   42 6
2   8 28
Run Code Online (Sandbox Code Playgroud)

r confusion-matrix

8
推荐指数
5
解决办法
1万
查看次数

Scikit - 更改阈值以创建多个混淆矩阵

我正在建立一个分类器,通过贷款俱乐部数据,并选择最好的X贷款.我训练了一个随机森林,并创建了通常的ROC曲线,混淆矩阵等.

混淆矩阵将分类器的预测(森林中树木的多数预测)作为参数.但是,我希望在不同的阈值下打印多个混淆矩阵,知道如果我选择10%最佳贷款,20%最佳贷款等会发生什么.

我从阅读其他问题中知道,改变门槛通常是一个坏主意,但有没有其他方法可以看到这些情况下的混淆矩阵?(问题A)

如果我继续更改阈值,我应该假设这样做的最佳方法是预测问题然后手动阈值,将其传递给混淆矩阵?(问题B)

classification threshold confusion-matrix random-forest scikit-learn

8
推荐指数
1
解决办法
3329
查看次数

如何计算Scikit中多类分类的混淆矩阵?

我有一个多类分类任务.当我基于scikit示例运行我的脚本时如下:

classifier = OneVsRestClassifier(GradientBoostingClassifier(n_estimators=70, max_depth=3, learning_rate=.02))

y_pred = classifier.fit(X_train, y_train).predict(X_test)
cnf_matrix = confusion_matrix(y_test, y_pred)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

File "C:\ProgramData\Anaconda2\lib\site-packages\sklearn\metrics\classification.py", line 242, in confusion_matrix
    raise ValueError("%s is not supported" % y_type)
ValueError: multilabel-indicator is not supported
Run Code Online (Sandbox Code Playgroud)

我试图传递labels=classifier.classes_confusion_matrix(),但它没有帮助.

y_test和y_pred如下:

y_test =
array([[0, 0, 0, 1, 0, 0],
   [0, 0, 0, 0, 1, 0],
   [0, 1, 0, 0, 0, 0],
   ..., 
   [0, 0, 0, 0, 0, 1],
   [0, 0, 0, 1, 0, 0],
   [0, 0, 0, 0, 1, 0]]) …
Run Code Online (Sandbox Code Playgroud)

python classification confusion-matrix scikit-learn

8
推荐指数
2
解决办法
1万
查看次数

使用 one-hot 代码的 Tensorflow 混淆矩阵

我使用 RNN 进行多类分类,这是我的 RNN 主要代码:

def RNN(x, weights, biases):
    x = tf.unstack(x, input_size, 1)
    lstm_cell = rnn.BasicLSTMCell(num_unit, forget_bias=1.0, state_is_tuple=True) 
    stacked_lstm = rnn.MultiRNNCell([lstm_cell]*lstm_size, state_is_tuple=True) 
    outputs, states = tf.nn.static_rnn(stacked_lstm, x, dtype=tf.float32)

    return tf.matmul(outputs[-1], weights) + biases

logits = RNN(X, weights, biases)
prediction = tf.nn.softmax(logits)

cost =tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=Y))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)
train_op = optimizer.minimize(cost)

correct_pred = tf.equal(tf.argmax(prediction, 1), tf.argmax(Y, 1)) 
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))
Run Code Online (Sandbox Code Playgroud)

我必须将所有输入分类为 6 个类,每个类都由一个热代码标签组成,如下所示:

happy = [1, 0, 0, 0, 0, 0]
angry = [0, 1, 0, 0, 0, 0] …
Run Code Online (Sandbox Code Playgroud)

confusion-matrix tensorflow one-hot-encoding multiclass-classification

8
推荐指数
1
解决办法
4563
查看次数