这几天在看 sklearn 的文档,发现他的分类器有很多,这里做一些简略的记录。

大致可以将这些分类器分成两类: 1)单一分类器,2)集成分类器

一、单一分类器

下面这个例子对一些单一分类器效果做了比较

from sklearn.cross_validation import cross_val_score
from sklearn.datasets import make_blobs# meta-estimator
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.ensemble import GradientBoostingClassifier from sklearn.naive_bayes import GaussianNB
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysisclassifiers = {'KN': KNeighborsClassifier(3),'SVC': SVC(kernel="linear", C=0.025),'SVC': SVC(gamma=2, C=1),'DT': DecisionTreeClassifier(max_depth=5),'RF': RandomForestClassifier(n_estimators=10, max_depth=5, max_features=1),  # clf.feature_importances_'ET': ExtraTreesClassifier(n_estimators=10, max_depth=None),  # clf.feature_importances_'AB': AdaBoostClassifier(n_estimators=100),'GB': GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0), # clf.feature_importances_'GNB': GaussianNB(),'LD': LinearDiscriminantAnalysis(),'QD': QuadraticDiscriminantAnalysis()}X, y = make_blobs(n_samples=10000, n_features=10, centers=100, random_state=0)for name, clf in classifiers.items():scores = cross_val_score(clf, X, y)print(name,'\t--> ',scores.mean())

下图是效果图:

二、集成分类器

集成分类器有四种:Bagging, Voting, GridSearch, PipeLine。最后一个PipeLine其实是管道技术

1.Bagging

from sklearn.ensemble import BaggingClassifier
from sklearn.neighbors import KNeighborsClassifiermeta_clf = KNeighborsClassifier()
bg_clf = BaggingClassifier(meta_clf, max_samples=0.5, max_features=0.5)

2.Voting

from sklearn import datasets
from sklearn import cross_validation
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import VotingClassifieriris = datasets.load_iris()
X, y = iris.data[:, 1:3], iris.targetclf1 = LogisticRegression(random_state=1)
clf2 = RandomForestClassifier(random_state=1)
clf3 = GaussianNB()eclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('gnb', clf3)], voting='hard', weights=[2,1,2])for clf, label in zip([clf1, clf2, clf3, eclf], ['Logistic Regression', 'Random Forest', 'naive Bayes', 'Ensemble']):scores = cross_validation.cross_val_score(clf, X, y, cv=5, scoring='accuracy')print("Accuracy: %0.2f (+/- %0.2f) [%s]" % (scores.mean(), scores.std(), label))

3.GridSearch

import numpy as npfrom sklearn.datasets import load_digitsfrom sklearn.ensemble import RandomForestClassifier
from sklearn.grid_search import GridSearchCV
from sklearn.grid_search import RandomizedSearchCV# 生成数据
digits = load_digits()
X, y = digits.data, digits.target# 元分类器
meta_clf = RandomForestClassifier(n_estimators=20)# =================================================================
# 设置参数
param_dist = {"max_depth": [3, None],"max_features": sp_randint(1, 11),"min_samples_split": sp_randint(1, 11),"min_samples_leaf": sp_randint(1, 11),"bootstrap": [True, False],"criterion": ["gini", "entropy"]}# 运行随机搜索 RandomizedSearch
n_iter_search = 20
rs_clf = RandomizedSearchCV(meta_clf, param_distributions=param_dist,n_iter=n_iter_search)start = time()
rs_clf.fit(X, y)
print("RandomizedSearchCV took %.2f seconds for %d candidates"" parameter settings." % ((time() - start), n_iter_search))
print(rs_clf.grid_scores_)# =================================================================
# 设置参数
param_grid = {"max_depth": [3, None],"max_features": [1, 3, 10],"min_samples_split": [1, 3, 10],"min_samples_leaf": [1, 3, 10],"bootstrap": [True, False],"criterion": ["gini", "entropy"]}# 运行网格搜索 GridSearch
gs_clf = GridSearchCV(meta_clf, param_grid=param_grid)
start = time()
gs_clf.fit(X, y)print("GridSearchCV took %.2f seconds for %d candidate parameter settings."% (time() - start, len(gs_clf.grid_scores_)))
print(gs_clf.grid_scores_)

4.PipeLine

第一个例子

from sklearn import svm
from sklearn.datasets import samples_generator
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_regression
from sklearn.pipeline import Pipeline# 生成数据
X, y = samples_generator.make_classification(n_informative=5, n_redundant=0, random_state=42)# 定义Pipeline,先方差分析,再SVM
anova_filter = SelectKBest(f_regression, k=5)
clf = svm.SVC(kernel='linear')
pipe = Pipeline([('anova', anova_filter), ('svc', clf)])# 设置anova的参数k=10,svc的参数C=0.1(用双下划线"__"连接!)
pipe.set_params(anova__k=10, svc__C=.1)
pipe.fit(X, y)prediction = pipe.predict(X)pipe.score(X, y)                        # 得到 anova_filter 选出来的特征
s = pipe.named_steps['anova'].get_support()
print(s)

第二个例子

import numpy as npfrom sklearn import linear_model, decomposition, datasets
from sklearn.pipeline import Pipeline
from sklearn.grid_search import GridSearchCVdigits = datasets.load_digits()
X_digits = digits.data
y_digits = digits.target# 定义管道,先降维(pca),再逻辑回归
pca = decomposition.PCA()
logistic = linear_model.LogisticRegression()
pipe = Pipeline(steps=[('pca', pca), ('logistic', logistic)])# 把管道再作为grid_search的estimator
n_components = [20, 40, 64]
Cs = np.logspace(-4, 4, 3)
estimator = GridSearchCV(pipe, dict(pca__n_components=n_components, logistic__C=Cs))estimator.fit(X_digits, y_digits)

本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/5132203.html,如需转载请自行联系原作者

再论sklearn分类器相关推荐

  1. sklearn分类器算法:逻辑回归及案例分析

    分类算法之逻辑回归 逻辑回归(Logistic Regression),简称LR.它的特点是能够是我们的特征输入集合转化为0和1这两类的概率.一般来说,回归不用在分类问题上,因为回归是连续型模型,而且 ...

  2. sklearn分类器算法:决策树与随机森林及案例分析

    分类算法之决策树 决策树是一种基本的分类方法,当然也可以用于回归.我们一般只讨论用于分类的决策树.决策树模型呈树形结构.在分类问题中,表示基于特征对实例进行分类的过程,它可以认为是if-then规则的 ...

  3. sklearn分类器性能评估

    分类器性能评估 在许多实际问题中,衡量分类器任务的成功程度是通过固定的性能指标来获取.一般最常见使用的是准确率,即预测结果正确的百分比.然而有时候,我们关注的是负样本是否被正确诊断出来.例如,关于肿瘤 ...

  4. sklearn分类器:朴素贝叶斯

    朴素贝叶斯 朴素贝叶斯(Naive Bayes)是一个非常简单,但是实用性很强的分类模型.朴素贝叶斯分类器的构造基础是贝叶斯理论. 概率论基础 概率定义为一件事情发生的可能性.事情发生的概率可以 通过 ...

  5. sklearn中分类器的比较

    简 介: 运行对比了 分类器的比较? 中的sklearn中的分类的性能对比.这为我们理解机器学习中的特性提供了理解基础. 关键词: sklearn,python #mermaid-svg-UbOwlP ...

  6. 尝试使用sklearn自动进行多模型预测并计算权重

    待解决的问题 在拥有多个模型的情况下,是否可以通过给多个模型分配权重(weight),使得加权后的多模型预测结果要好于单模型? 思路 是否存在通用的多模型weight计算方式? 如果没有,是否存在其他 ...

  7. Python小白机器学习教程:Sklearn精讲

    点击"简说Python",选择"置顶/星标公众号" 福利干货,第一时间送达! 本文授权转载自王的机器 禁二次转载 作者:王圣元 阅读文本大概需要 60 分钟 老 ...

  8. 盘一盘 Python 系列 - Sklearn

    全文共 26745 字,106 幅图表, 预计阅读时间 67 分钟. 0 引言 本文是 Python 系列的第十一篇 Python 入门篇 (上) Python 入门篇 (下) 数组计算之 NumPy ...

  9. 分类器MNIST交叉验证准确率、混淆矩阵、精度和召回率(PR曲线)、ROC曲线、多类别分类器、多标签分类、多输出分类

    本博客是在Jupyter Notebook下进行的编译. 目录 MNIST 训练一个二分类器 使用交叉验证测量精度 混淆矩阵 精度和召回率 精度/召回率权衡 ROC曲线 多类别分类器 错误分析 多标签 ...

  10. 非常详细的sklearn介绍

    0 引言 Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具.它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面的 AP ...

最新文章

  1. 句法分析应用领域及意义
  2. 数学图形(1.42)拱形曲线
  3. java内部类的特点
  4. TreeView 实现单选与多选!
  5. UVA11069 A Graph Problem【递推】
  6. python基础教程免费下载-《Python机器学习基础教程》高清版免费PDF下载
  7. 【原】数据分析/数据挖掘/机器学习---- 必读书目
  8. BZOJ 1934 善意的投票
  9. 如何在微软的下载商店找到下载的图片?
  10. tulater成语词典 chm格式 和 EXE格式
  11. GAN-评价指标IS以及FID、KID
  12. iOS iPhone X底部设置高度 白色底部显示
  13. 百度商桥点击咨询自定义按钮
  14. upc Cafebazaar’s Chess Tournament 思维 + FFT
  15. 无线网ppp服务器失败怎么办,【妙招】不能上网怎么办,史上最全宽带故障简单处理办法!...
  16. 2015版本的pdf文件合并拆分软件
  17. 百度 翻译 api 使用
  18. kali的网络设置及三种网络模式
  19. Spring MVC原理解析
  20. 全国30米土地利用数据分享(1980-2020)

热门文章

  1. JDBC连接池DBUtils使用
  2. java 实现多重继承
  3. Mysql设置允许外网访问
  4. 关于Java字符串的几个重点
  5. XCode下的iOS单元测试(转)
  6. 项目中的设计模式【适配器模式】
  7. python+selenium+chrome driver 64位环境配置
  8. 项目如何开始:怎样和客户谈需求(转)
  9. 03-创建模型操作---用户添加
  10. 日更第4期-2015-1-19-openFrameworks系列第三讲-面向对象的小球们