分类模型构建

分类模型构建

  分类是指构造一个分类模型,输入样本的特征值,输出对应的类别,将每个样本映射到预先定义好的类别中。分类模型若建立在已有类标记的数据集上,则属于有监督学习。在实际应用场景中,分类算法被用于行为分析,物品识别,图像检测等。

模块 函数 算法名称
linear_model LogisticRegression 逻辑斯蒂回归
svm SVC 支持向量机
neighbors KNeighborsClassifier K最近邻分类
naive_bayes GaussianNB 高斯朴素贝叶斯
tree DecisionTreeClassifier 分类决策树
ensemble RandomForestClassifier 随机森林分类
ensemble GradientBoostingClassifier 梯度提升分类树
from sklearn.datasets import load_breast_cancer  # 乳腺癌
from sklearn.model_selection import train_test_split
# 数据导出
data = load_breast_cancer()
X = data['data']
y = data['target']
names = data['feature_names']
# 划分数据集
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=1234)
# 标准化
from sklearn.preprocessing import StandardScaler
Standard = StandardScaler().fit(X_train)  # 训练产生标准化的规则
Xtrain = Standard.transform(X_train)  # 将规则应用于训练集
Xtest = Standard.transform(X_test)  # 将规则应用于测试集
# 模型构建
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier().fit(Xtrain,y_train)
y_pred = knn.predict(Xtest)

分类算法评价函数

方法名称 最佳值 sklearn函数
Precision(精确率) 1.0 metrics.precision_score
Recall(召回率) 1.0 metrics.recall_score
F1值 1.0 metrics.f1_score
Cohen’s Kappa系数 1.0 metrics.cohen_kappa_score
ROC曲线 最靠近y轴 metrics. roc_curve
from sklearn import metrics
precision_score(y_test, y_pred)

0.9066666666666666

recall_score(y_test,y_pred)

0.9855072463768116

f1_score(y_test,y_pred)

0.9444444444444444

cohen_kappa_score(y_test,y_pred)

0.8496538081107814

roc_curve(y_test,y_pred)

(array([0. , 0.15555556, 1. ]),
array([0. , 0.98550725, 1. ]),
array([2, 1, 0]))

  当然,我们还可以偶尔开一下挂,一应俱全啊,美滋滋。

from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))
             	precision    recall  f1-score   support

          0       	0.97      0.84      0.90        45
          1      	0.91      0.99      0.94        69

avg / total          0.93      0.93      0.93       114

 
  最后,再送你们一段画”ROC曲线“的代码,可直接copy的呦~~~

from sklearn.metrics import roc_curve
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'  ## 改字体
## 求出ROC曲线的x轴和Y轴
fpr, tpr, thresholds = roc_curve(y_test,y_pred)
plt.figure(figsize=(10,6))
plt.xlim(0,1) ##设定x轴的范围
plt.ylim(0.0,1.1) ## 设定y轴的范围
plt.xlabel('假正率')
plt.ylabel('真正率')
plt.plot(fpr,tpr,linewidth=2, linestyle="-",color='red')
plt.show()

  下课。

一个佛系的博客更新者,随手写写,看心情吧 (っ•̀ω•́)っ✎⁾⁾
原文地址:https://www.cnblogs.com/WoLykos/p/9566485.html