赞
踩
随机森林它实际上是一个包含多个决策树的分类器,每一个子分类器都是一颗CART分类回归树,所以随机森林既可以做分类,又可以做回归。
在做好分类算法的时候,我们需要经常调节网络参数,目的是得到更好的分类结果,实际上一个分类算法有很多参数,取值范围也很广,这样我们该怎么办?
GridSearchCV就是帮助我们去调参的一个工具,它是python的参数自动搜索模块。我们只需要告诉它想要调优的参数有哪些以及参数的取值范围,它就会把所有的情况都跑一边,然后告诉我们哪个参数最优
调用方法:
from sklearn.model_selection import GridSearchCV
使用随机森林对iris进行数据分析,假设我们想知道n_estimators在1-10的范围内取哪个值的分类结果最好
#使用随机森林进行分类 from sklearn.ensemble import RandomForestClassifier #利用GridSearchCV寻找最优参数 from sklearn.model_selection import GridSearchCV from sklearn.datasets import load_iris rf = RandomForestClassifier() parameters = {'n_estimators':range(1,11)} iris = load_iris() #使用GridSearchCV进行参数调优 clf = GridSearchCV(estimator=rf,param_grid=parameters) #对iris数据集进行分类 clf.fit(iris.data,iris.target) print('最优分数:%.4lf' % clf.best_score_) print('最优参数:',clf.best_params_) #结果 最优分数:0.9600 最优参数: {'n_estimators': 5}
这样当我们采用随机森林作为分类器的时候,最优的准确率为0.96,当n_estimators=6的时候是最优参数,也就是随机森林一共有6个子决策树
做分类的时候往往都是有步骤的,比如先对数据进行规范化处理,也可以使用PCA方法(一种常用的降维方法)对数据降维,最后使用分类器分类
在python中有一种pipeline管道机制。管道机制就是让我们把每一步都按顺序列下来,从而创建pipeline流水线作业,每一步都采用(“名称”,“步骤”)的方式来表示
首先,先采用StandardScaler方法对数据规范化,即采用数据规范化为均值为0,方差为1的正态分布,然后采用PCA方法对数据进行将维,最后采用随机森林进行分类
具体代码如下:
from sklearn.model_selection import GridSearchCV
pipeline = Pipeline([
('scaler',StandardScaler()),
('pca',PCA()),
('randomforestclassifier',RandomForestClassifier())
])
逻辑回归作为常用的数据挖掘算法,也是我们必要掌握的技能之一
逻辑回归也叫作logistic回归,虽然名字中带有“回归”,但它实际上是分类方法,主要用于解决二分类的问题,也可以解决多分类问题
在g(z)的结果在0-1之间,当Z越大的时候,g(z)越大,当z趋于无穷大的时候,g(z)趋近于1。同样当z趋近于无穷小的时候,g(z)趋近于0。同时,函数值以0.5为中心
为什么逻辑回归算法是基于sigmoid函数实现的:
当我们要实现一个二分类任务,0即为不发生,1即为发生。我们给定一些历史数据x和y。
其中X代表样本的n个特征,y代表正例和负例,也就是0或者1的取值。通过历史样本的学习,我们可以得到一个模型,当给定新的X的时候,可以预测出Y。这里我们得到的Y是一个预测的概率,通常不是0%和100%,而是中间得到取值,那么我们就可以认为概率大于50%的时候,即为发生(正例),概率小于50%的时候,即为不发生(负例)。这样就完成了二分类的预测。
我们之前对模型做评估时,通常采用的是准确率,它指的是分类器正确分类的样本数与总体样本数之间的比例。这个指标对大部分的分类情况是有效的,不过当分类结果严重不平衡的时候,准确率很难反应模型的好坏。
实际上,对于分类器不平衡的情况,有两个指标非常重要,它们分别是精确度和召回率
精确率 p= TP/(TP+FP)
召回率 R = TP/(TP+FN)
混淆矩阵也叫误差矩阵,实际上它就是TP,FP,TN,FN这四个数值的矩阵表示,帮助我们判断预测值和实际值相比,对了多少。
然后使用了sklearn中的precision_curve函数,通过预测值和真实值来计算精确率-召回率曲线,precision_recall_curve函数会计算在不同概率阈值情况下的精确率和召回率。最后定义plot_precision_recall函数,绘制曲线
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。