Python 为什么混淆矩阵在其计算度量中不显示准确性

Python 为什么混淆矩阵在其计算度量中不显示准确性,python,machine-learning,knn,confusion-matrix,Python,Machine Learning,Knn,Confusion Matrix,在数据集上运行knn方法后,我尝试计算精度。但是它的输出并没有显示其中的精度度量。我如何修正它以显示其计算测量的准确性? 谢谢你的考虑 以下是数据集: 这是我的密码: !pip install sklearn !pip uninstall pandas !pip install pandas==1.2.0 import pandas as pd import math import numpy as np import matplotlib.pyplot as plt from google.

在数据集上运行knn方法后,我尝试计算精度。但是它的输出并没有显示其中的精度度量。我如何修正它以显示其计算测量的准确性? 谢谢你的考虑

以下是数据集:

这是我的密码:

!pip install sklearn
!pip uninstall pandas
!pip install pandas==1.2.0
import pandas as pd
import math
import numpy as np
import matplotlib.pyplot as plt
from google.colab import files
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, confusion_matrix
#-----------------read file---------------------------
uploaded = files.upload()
with open('dataset.csv', 'r') as data:
   df3 = pd.read_csv(data , encoding = ('ansi'))
   df = pd.DataFrame(df3)
   print (df)
   df["TargetProId"]=df["TargetProId"].fillna("Unknown")
   #------new--------
   del df['TaskState']
   del df['Price']
#----------------------preprocessing------------------
#----------function definition------------------
def string_to_int(s):
    ord3 = lambda x : '%.3d' % ord(x)
    return int(''.join(map(ord3, s)))

id_cols = [k for k in df.columns if k.lower().endswith('id')]
#id_cols.append('TaskState')
df[id_cols] = df[id_cols].applymap(string_to_int)
#----------------------set data------------------------
x = df.iloc[:,0:10]
y = df.iloc[:,11]
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.3)
print(X_train.shape, y_train.shape)
print(X_test.shape, y_test.shape)
#-------------------------normalize--------------------
scaler = StandardScaler()
scaler.fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
#-----------------------------knn-----------------------
classifier = KNeighborsClassifier(n_neighbors=math.floor(math.sqrt(24855)))
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
#-------------------------result------------------------
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))

您可以使用以下代码计算精度:

from sklearn.metrics import accuracy_score

accuracy = accuracy_score(y_test, y_pred)

混淆矩阵不应显示准确性。但是你可以直接从它的对角线得到它…所有元素的对角线元素之和。。。