构建并评价分类模型
- 使用sklearn 估计器构建支持向量机(SVM)模型
其实现的过程:
训练集(训练样本)通过 分类算法 建立分类模型 得到训练规则,然后根据分类模型测试,再将给出测试集和待测集 进行测试。
#使用sklearn 估计器构建SVM模型
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
cancer=load_breast_cancer()
cancer_data=cancer['data']
cancer_target=cancer['target']
cancer_names=cancer['feature_names']
#将数据集划分为训练集、测试集
cancer_data_train,cancer_data_test,cancer_target_train,cancer_target_test=\
train_test_split(cancer_data,cancer_target,test_size=0.2,random_state=22)
#数据标准化
stdScaler=StandardScaler().fit(cancer_data_train)
cancer_trainStd=stdScaler.transform(cancer_data_train)
cancer_testStd=stdScaler.transform(cancer_data_test)
#建立SVM模型
svm=SVC().fit(cancer_trainStd,cancer_target_train)
print('建立的SVM模型为:\n',svm)
#预测训练集结果
cancer_target_pred=svm.predict(cancer_testStd)
print('预测前20个结果为:\n',cancer_target_pred[:20])
#将预测值和真实结果做比对,求出预测对的结果和预测错的结果,并求出准确率
#分类结果的混淆矩阵与准确率
import numpy as np
true=np.sum(cancer_target_pred==cancer_target_test)
print('预测对的结果数目为:',true)
print('预测错的结果数目为:',cancer_target_test.shape[0]-true)
print('预测结果准确率为:',true/cancer_target_test.shape[0])
- 评价分类模型
为了有效判断一个预测模型的性能表现,需要通过一些指标来衡量。
#分类模型常用评价方法
from sklearn.metrics import accuracy_score,precision_score,recall_score,f1_score,cohen_kappa_score
print('使用SVM预测breast_cancer数据的准确率为:',accuracy_score(cancer_target_test,cancer_target_pred))
print('使用SVM预测breast_cancer数据的精准率为:',precision_score(cancer_target_test,cancer_target_pred))
print('使用SVM预测breast_cancer数据的召回率为:',recall_score(cancer_target_test,cancer_target_pred))
print('使用SVM预测breast_cancer数据的F1值为:',f1_score(cancer_target_test,cancer_target_pred))
print('使用SVM预测breast_cancer数据的Cohen`s Kappa系数为:',cohen_kappa_score(cancer_target_test,cancer_target_pred))
#分类模型评价报告
from sklearn.metrics import classification_report
print('使用SVM预测breast_cancer数据的分类报告为:\n',classification_report(cancer_target_test,cancer_target_pred))
通过绘制ROC 曲线的方式来评价分类模型
#绘制ROC 曲线
from sklearn.metrics import roc_curve
import matplotlib.pyplot as plt
##求出ROC曲线的x轴和y轴
fpr,tpr,thresholds=roc_curve(cancer_target_test,cancer_target_pred)
plt.figure(figsize=(10,6))
plt.xlim(0,1)#设定x的范围
plt.ylim(0.0,1.1) #设定y轴的范围
plt.xlabel('False Pdstive Rate')
plt.ylabel('True Pdstive Rate')
plt.plot(fpr,tpr,linewidth=2,linestyle='-',color='red')
plt.show()