
机器学习入门之分类、决策树、随机森林、KNN、SVM、分类、AUC、准确率、平均准确率、召回率、F1
发布日期:2022-03-09 00:49:09
浏览次数:18
分类:技术文章
本文共 5826 字,大约阅读时间需要 19 分钟。
文章目录
前言
前言:这篇提示:以下是本篇文章正文内容,下面案例可供参考
机器学习入门之分类
"""全局数据集"""from sklearn.datasets import make_blobs,make_moonsimport matplotlib.pyplot as pltimport numpy as np%matplotlib inlineX,Y = make_moons(n_samples=100,noise = 0.1,random_state=0)plt.scatter(X[:,0],X[:,1],c=Y)plt.show()
一、决策树(DecisionTree)
1、决策树拟合
#Decisiontree#决策树from sklearn import treemodel = tree.DecisionTreeClassifier()model.fit(x_train,y_train)print('test score',model.score(x_test,y_test))x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1#生成矩阵坐标x,y 返回np.arange类型的列表xx, yy = np.meshgrid(np.arange(x_min, x_max, .02),np.arange(y_min, y_max, .02))
'''np.c_:是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等shape是查看数据有多少行多少列reshape更改数组维数'''z = model.predict(np.c_[xx.ravel(), yy.ravel()])
z = z.reshape(xx.shape) plt.pcolormesh(xx, yy, z.reshape(xx.shape), shading='auto', cmap= 'Paired')plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.spring, edgecolors='k')plt.show()
在这里插入图片描述
2、决策树 准确率 平均准确率 召回率 F1 AUC
from sklearn import treefrom sklearn.metrics import accuracy_score #准确率from sklearn.metrics import precision_score #精确率from sklearn.metrics import recall_score #召回率from sklearn.metrics import f1_score #f1_scorefrom sklearn.metrics import roc_auc_score
#AUC
model=tree.DecisionTreeClassifier(random_state=0)model.fit(x_train,y_train)y_true = y_testy_pred = model.predict(x_test)y_pro = model.predict_proba(x_test)i = '决策树'print(f'{i} Accuracy:',accuracy_score(y_true,y_pred))print(f'{i} Precison:',precision_score(y_true,y_pred))print(f'{i} Recall :',recall_score(y_true,y_pred))print(f'{i} F1
:',f1_score(y_true,y_pred))# print(f'{i} AUC
:',roc_auc_score(y_true,y_pro[:,1]) )print(f'{i} Auc',roc_auc_score(y_true,y_pro[:,1]))
二、随机森林(RandomFrorest)
1、随机森林拟合
from sklearn.ensemble import RandomForestClassifierfrom sklearn.model_selection import cross_val_score# from sklearn.model_selection import train_test_splitrfc = RandomForestClassifier()score = cross_val_score(rfc, X, Y, cv=10).mean()print('默认参数随机森林得分',score)# 调参,绘制学习曲线来调参n_estimators(对随机森林影响较大大)score_lt = []# 每隔10步建立一个随机森林,获得不同n_estimators的得分for i in range(0,100,10):
rfc = RandomForestClassifier(n_estimators=i+1,random_state=0)
score = cross_val_score(rfc, X,Y, cv=10).mean()
score_lt.append(score)score_max = max(score_lt)print('更改参数后最大得分:{}'.format(score_max),'子树数量为:{}'.format(score_lt.index(score_max)*10+2))# 绘制学习曲线x = np.arange(1,101,10)plt.subplot(111)plt.plot(x, score_lt, 'r-')plt.show()
随机森林算法比较强大,即使是在默认参数下,你也能获得很高的分数
从上述代码我们发现,在随机森林模型默认参数情况下使用交叉验证得分为0.97在进行n_emitmators参数调优后,达到了0.97的评分最优参数为: 42
#将随机森林字数设为42rfc = RandomForestClassifier(n_estimators=42, random_state=0)rfc.fit(X,Y)score = cross_val_score(rfc, X, Y, cv=10).mean()print(score)x_min,x_max = np.min(X[:,0]-1),np.max(X[:,0]+1)y_min,y_max = np.min(X[:,1]-1),np.max(X[:,1]+1)xx,yy = np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))z = rfc.predict(np.vstack((xx.ravel(), yy.ravel())).transpose())z = z.reshape(xx.shape)plt.subplot(111)plt.pcolormesh(xx, yy, z.reshape(xx.shape), shading='auto', cmap='Accent')plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.spring, edgecolors='k')plt.show()
2、准确率 平均准确率 召回率 F1 AUC
from sklearn.metrics import accuracy_score #准确率from sklearn.metrics import precision_score #精确率from sklearn.metrics import recall_score #召回率from sklearn.metrics import f1_score #f1_scorefrom sklearn.metrics import auc
#AUC
model=RandomForestClassifier(random_state=0)model.fit(x_train,y_train)y_true = y_testy_pred = model.predict(x_test)y_pro = model.predict_proba(x_test)i = '随机森林'print(f'{i} Accuracy:',accuracy_score(y_true,y_pred))print(f'{i} Precison:',precision_score(y_true,y_pred))print(f'{i} Recall :',recall_score(y_true,y_pred))print(f'{i} F1
:', f1_score(y_true,y_pred))print(f'{i} Auc',roc_auc_score(y_true,y_pro[:,1]))
三、KNN(KNeighborsClassifier)
1、KNN拟合
#KNNfrom sklearn.neighbors import KNeighborsClassifierknn = KNeighborsClassifier()knn.fit(x_train,y_train)print('test score:',knn.score(x_test,y_test))x_min, x_max = X[:,0].min()-1,X[:,0].max()+1y_min, y_max = X[:,1].min()-1,X[:,1].max()+1xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))z = knn.predict(np.c_[xx.ravel(),yy.ravel()]) z = z.reshape(xx.shape)plt.pcolormesh(xx,yy,z.reshape(xx.shape),shading='auto',cmap='Set3')plt.scatter(X[:,0],X[:,1],c=Y,cmap=plt.cm.rainbow,edgecolors='k')plt.show()
2、准确率 平均准确率 召回率 F1 AUC
model=KNeighborsClassifier()model.fit(x_train,y_train)y_true = y_testy_pred = model.predict(x_test)y_pro = model.predict_proba(x_test)i = 'KNN'print(f'{i} Accuracy:',accuracy_score(y_true,y_pred))print(f'{i} Precison:',precision_score(y_true,y_pred))print(f'{i} Recall :',recall_score(y_true,y_pred))print(f'{i} F1
:', f1_score(y_true,y_pred))print(f'{i} Auc',roc_auc_score(y_true,y_pro[:,1]))
四、SVM(SVC)
1、SVM拟合
#SVCfrom sklearn.svm import SVC# for i in range(0,10,1):model = SVC(gamma=9)model.fit(x_train,y_train)print('test score:',model.score(x_test,y_test))x_min, x_max = X[:,0].min()-1,X[:,0].max()+1y_min, y_max = X[:,1].min()-1,X[:,1].max()+1xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))z = model.predict(np.c_[xx.ravel(),yy.ravel()]) z = z.reshape(xx.shape)plt.pcolormesh(xx,yy,z.reshape(xx.shape),shading='auto',cmap='Set2')plt.scatter(X[:,0],X[:,1],c=Y,cmap=plt.cm.rainbow,edgecolors='k')plt.show()
2、准确率 平均准确率 召回率 F1 AUC
model=SVC(gamma=9,probability=True)model.fit(x_train,y_train)y_true = y_testy_pred = model.predict(x_test)y_pro = model.predict_proba(x_test)i = 'SVM'print(f'{i} Accuracy:',accuracy_score(y_true,y_pred))print(f'{i} Precison:',precision_score(y_true,y_pred))print(f'{i} Recall :',recall_score(y_true,y_pred))print(f'{i} F1
:', f1_score(y_true,y_pred))print(f'{i} Auc',roc_auc_score(y_true,y_pro[:,1]))
留言
以上代码仅供学习参考使用,由于个人代码水平不足,有的错误可以指出,便于修改。
转载地址:https://blog.csdn.net/m0_56636466/article/details/121502770 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2023年01月13日 08时19分15秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
最新文章
jdk+Tomcat+JSP经典配置实例
2019-12-11 21:45:32
跟我一起学Windows Workflow Foundation(6)-----制作一个基本的定制活动(发邮件)
2019-12-11 21:45:32
Log Explorer SQL日志查看
2019-12-11 21:45:32
WXWinter专题
2019-12-11 21:45:32
精妙Sql语句
2019-12-11 21:45:31
VS SP1 安装前准备工作
2019-12-11 21:45:31
Toad 使用快速入门
2019-12-11 21:45:31
WorkflowRuntime与PersistenceService
2019-12-11 21:45:31
WWF的一些注意点[新手向]
2019-12-11 21:45:32
破解SWT-Designer
2019-12-11 21:45:32
持久化前需保证数据库MSDTC设置是否正确.
2019-12-11 21:45:30
WORKFLOW目录(文章整理列表)
2019-12-11 21:45:31
Error 1 Inconsistent accessibility: parameter type 编译错误
2019-12-11 21:45:31
Serializable 的作用?
2019-12-11 21:45:31
Windows Workflow开发演练
2019-12-11 21:45:30
Workflow instance 保存机制
2019-12-11 21:45:30
简单状态机Workflow基于Web应用
2019-12-11 21:45:30
Windows Workflow学习文档
2019-12-11 21:45:28
《WF编程》笔记目录
2019-12-11 21:45:29
wwf票证实例教程
2019-12-11 21:45:29