当前位置: 首页 > 面试题库 >

Scikit学习:如何获得真肯定,真否定,假肯定和假否定

文华美
2023-03-14
问题内容

我的问题:

我有一个很大的JSON文件的数据集。我阅读并将其存储在trainList变量中。

接下来,我对其进行预处理-以便能够使用它。

完成后,我便开始分类:

  1. 我使用kfold交叉验证方法以获得平均准确度并训练分类器。
  2. 我进行了预测,并获得了该折痕的准确性和混乱度矩阵。
  3. 在此之后,我想获得的True Positive(TP)True Negative(TN)False Positive(FP)False Negative(FN)值。我将使用这些参数来获得 敏感性特异性

最后,我将使用它来放入HTML,以显示带有每个标签TP的图表。

码:

我目前拥有的变量:

trainList #It is a list with all the data of my dataset in JSON form
labelList #It is a list with all the labels of my data

方法的大部分:

#I transform the data from JSON form to a numerical one
X=vec.fit_transform(trainList)

#I scale the matrix (don't know why but without it, it makes an error)
X=preprocessing.scale(X.toarray())

#I generate a KFold in order to make cross validation
kf = KFold(len(X), n_folds=10, indices=True, shuffle=True, random_state=1)

#I start the cross validation
for train_indices, test_indices in kf:
    X_train=[X[ii] for ii in train_indices]
    X_test=[X[ii] for ii in test_indices]
    y_train=[listaLabels[ii] for ii in train_indices]
    y_test=[listaLabels[ii] for ii in test_indices]

    #I train the classifier
    trained=qda.fit(X_train,y_train)

    #I make the predictions
    predicted=qda.predict(X_test)

    #I obtain the accuracy of this fold
    ac=accuracy_score(predicted,y_test)

    #I obtain the confusion matrix
    cm=confusion_matrix(y_test, predicted)

    #I should calculate the TP,TN, FP and FN 
    #I don't know how to continue

问题答案:

如果您有两个包含预测值和实际值的列表;看起来就像您所做的那样,您可以将它们传递给一个函数,该函数将使用以下内容来计算TP,FP,TN,FN:

def perf_measure(y_actual, y_hat):
    TP = 0
    FP = 0
    TN = 0
    FN = 0

    for i in range(len(y_hat)): 
        if y_actual[i]==y_hat[i]==1:
           TP += 1
        if y_hat[i]==1 and y_actual[i]!=y_hat[i]:
           FP += 1
        if y_actual[i]==y_hat[i]==0:
           TN += 1
        if y_hat[i]==0 and y_actual[i]!=y_hat[i]:
           FN += 1

    return(TP, FP, TN, FN)

我认为您可以从这里计算出您感兴趣的利率,以及其他性能指标(例如特异性和敏感性)。



 类似资料:
  • 我在一本编码书中看到了以下宏定义。 没有任何解释。 请向我解释这些将如何作为和工作。

  • 根据 [执行子 #1] 表达式E1[E2](根据定义)与*((E1)(E2))相同,但对于数组操作数,如果该操作数是左值,则结果是左值;否则结果是xvalue。 其中 由 [expr.add#4.2] 确定 将具有整数类型的表达式 J 添加到指针类型的表达式 P 中或从中减去该表达式 J 时,结果的类型为 P。 […] 否则,如果P指向具有n个元素的数组对象x的数组元素i([dcl.array])

  • 问题内容: 有人可以使用以下示例数据解释JavaScript Truthy和Falsy。我读过其他主题,但仍然感到困惑。 根据我的理解,我相信这是唯一的真理,而其余的都是虚假的-这是正确的吗? 问题答案: 据我了解,我相信var a = 1; 是唯一的真理,其余都是虚假的-这是正确的吗? 没有。 var a = 0; 数字零是 虚假的 。但是,请注意,字符串零是真实的。 var a = 10 ==

  • 好的,这是一段代码。代码的功能是获取一个值并确定它是奇数还是偶数。 现在我的问题在于为什么这样做有效。我现在的看法是-- num%2返回一个值。如果num为3,则num%2=1。为什么1的值满足if条件? 我假设这是一个1和0的问题,但我尝试了与%4相同的代码,如果返回3,它仍然满足if语句。 我理解这对一些人来说可能是一个基本问题,所以我为理解这一点可能太慢而道歉。非常感谢。 谢谢你的帮助!我现

  • 问题内容: 我对分配给False,True的测试值感到困惑 要检查真实值,我们只需 假怎么样? 问题答案: 从Python样式指南中: 对于序列(字符串,列表,元组),请使用空序列为假的事实。 [..] 不要使用==将布尔值与True或False进行比较。

  • 我现在有这个可以用的 我想添加一个条件,在这里我只会出售时,购买是虚假的如下,但它没有工作 为什么它不工作? 有什么建议吗?非常感谢。