栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

随机梯度下降分类SGDClassifier以及随机森林法在python中的应用实例

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

随机梯度下降分类SGDClassifier以及随机森林法在python中的应用实例

随机梯度下降分类SGDClassifier在python中的应用实例
  • 一、任务
  • 二、数据集
  • 三、导入的包中方法、函数
  • 四、代码及解释

本文从初学者的角度,帮助了解二分类机器学习算法的运用流程,以具体的例子介绍scikit learn包的使用。

一、任务

识别图片中的数字是不是5(二分类问题)。

二、数据集

7000张图片数据,每张图片包含1-10任一手写的数字。在基础的csv格式数据集中,每张图片用784个像素特征表示(当值为0时,代表该位置无手写笔迹),每张图片都已标记好所代表的数字。

三、导入的包中方法、函数

sklearn包所包含的方法函数众多,为便于记忆,现按照使用顺序,罗列出import的函数。函数具体的使用方法都可以在网址 https://scikit-learn.org/stable/user_guide.html 中找到。

from sklearn.datasets import fetch_openml 
from sklearn.linear_model import SGDClassifier
from sklearn.model_selection import cross_val_predict
from sklearn.metrics import precision_score,recall_score
from sklearn.metrics import f1_score
from sklearn.ensemble import RandomForestClassifier

1、openml类似于Kaggle,包含众多公开的机器学习数据集和项目。sklearn已与该网站打通,通过fetch_openml函数下载数据。
2、sklearn.linear_model中除了 SGDClassifier外,还有LogisticRegression、LinearRegression等常用线性模型函数。
3、 cross_val_predict是model validation的环节,对每一个输入数据点生成交叉验证的估计。
4、metrics包含的度量模型预测效果的函数众多,详情参阅https://scikit-learn.org/stable/modules/classes.html?highlight=sklearn%20metrics#module-sklearn.metrics。
5、关于ensemble-based的算法,诸如随机森林法,后期完善。

四、代码及解释
import pandas as pd 
import numpy as np
from sklearn.datasets import fetch_openml
#导入数据
mnist=fetch_openml('mnist_784',version=1)
#拿到的数据是字典格式,字典data/target键值以np array的数组存储
X,y=mnist['data'],mnist['target']
# y数据格式为object需要转换成整数型
y=y.astype(np.uint8)
#划分训练集和测试集
X_train,X_test,y_train,y_test=X[:6000],X[6000:],y[:6000],y[6000:]
#数字五时为TURE,否则为False
y_train_5=(y_train==5)
y_test_5=(y_train==5)
# 模型训练
sgd_clf=SGDClassifier(random_state=42)
#cv=3表示将数据分为3folds,分别在2折上训练模型,在余下的1折上验证模型,并将余下1折中样本的预测输出作为最终输出结果的一部分。
sgd_y_train_pred=cross_val_predict(sgd_clf,X_train,y_train_5,cv=3)
#比较原数据与预测数据值
sgd_ps=precision_score(y_train_5,sgd_y_train_pred)
sgd_rs = recall_score(y_train_5,sgd_y_train_pred)
sgd_f1 = f1_score(y_train_5,sgd_y_train_pred) 
#默认method是None,当用了decision_function将传回所有数据判定概率/分数,用于后续算出ROC值,None时相当于算法自动给出判定,大于0.5则是TURE,小于0.5则是False.
y_scores_sgd = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3, method="decision_function")
auc_sgd=roc_auc_score(y_train_5,y_scores_sgd)
#随机森林
rfc=RandomForestClassifier(n_estimators=100,random_state=42)
y_predicted_forest=cross_val_predict(rfc, X_train, y_train_5)
p_forest=precision_score(y_train_5,y_predicted_forest)
re_forest=recall_score(y_train_5,y_predicted_forest)
f1_forest=f1_score(y_train_5,y_predicted_forest) 
#每一个分类器都有属于自己的method,以下求率定估计值是固定的格式搭配
y_probas_forest=cross_val_predict(rfc, X_train, y_train_5,cv=3,method='predict_proba')
#与SGDClassifer不同,随机森林发返回的分数值有两列,第一列为预测值0的概率,第二列为预测值为1的概率,所以需要取第二列。
y_scores_forest=y_probas_forest[:,1]
auc_forest=roc_auc_score(y_train_5,y_scores_forest)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/321997.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号