代码依旧使用癌症诊断代码
模型评估:
官网查看
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
# grid网格 search搜索 cv:cross_validation
# 搜索算法最合适的参数
from sklearn.model_selection import GridSearchCV
# 导包准确率得分
from sklearn.metrics import accuracy_score
accuracy_score(y_test,y_) #准确率得分,与上述计算结果一致
# 取出来最好的模型,进行预测
# 也是直接使用gcv去预测,结果一样的
knn_best = gcv.best_estimator_
knn_best.predict(X_test)
accuracy_score(y_test,y_)
交叉表
pd.crosstab(index = y_test,columns=y_,rownames=['True'],colnames=['predict']) #交叉表
X_test.shape
pd.crosstab(index = y_test,columns=y_,rownames=['True'],colnames=['predict'],
margins = True) #交叉表
分类指标之一
from sklearn.metrics import confusion_matrix
confusion_matrix(y_test,y_)
from sklearn.metrics import classification_report
print(classification_report(y_test,y_,target_names = ['B','M']))
分别为精确率,召回率和F-measures,是用来评价模型的指标
recall 正样本的概率
# 真实的
y_test.value_counts()
# 预测
Series(y_).value_counts()
np.round(73/74,2)
np.round(36/40,2)
presicion准确率
计算公式表
# presicion
np.round(73/(73+4),2)
np.round(36/37,2)
f1-score计算方法
np.round((2*0.95*0.99)/(0.95+0.99),2)
np.round((2*0.97*0.9)/(0.97+0.9),2)
精确率,召回率和f1-score都是越大越好,一般情况下,其中带score的都是越大越好