简 介: 运行对比了 分类器的比较? 中的sklearn中的分类的性能对比。这为我们理解机器学习中的特性提供了理解基础。

关键词sklearnpython

#mermaid-svg-UbOwlPLCBCgTjcxf {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-UbOwlPLCBCgTjcxf .error-icon{fill:#552222;}#mermaid-svg-UbOwlPLCBCgTjcxf .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-UbOwlPLCBCgTjcxf .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-UbOwlPLCBCgTjcxf .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-UbOwlPLCBCgTjcxf .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-UbOwlPLCBCgTjcxf .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-UbOwlPLCBCgTjcxf .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-UbOwlPLCBCgTjcxf .marker{fill:#333333;stroke:#333333;}#mermaid-svg-UbOwlPLCBCgTjcxf .marker.cross{stroke:#333333;}#mermaid-svg-UbOwlPLCBCgTjcxf svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-UbOwlPLCBCgTjcxf .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-UbOwlPLCBCgTjcxf .cluster-label text{fill:#333;}#mermaid-svg-UbOwlPLCBCgTjcxf .cluster-label span{color:#333;}#mermaid-svg-UbOwlPLCBCgTjcxf .label text,#mermaid-svg-UbOwlPLCBCgTjcxf span{fill:#333;color:#333;}#mermaid-svg-UbOwlPLCBCgTjcxf .node rect,#mermaid-svg-UbOwlPLCBCgTjcxf .node circle,#mermaid-svg-UbOwlPLCBCgTjcxf .node ellipse,#mermaid-svg-UbOwlPLCBCgTjcxf .node polygon,#mermaid-svg-UbOwlPLCBCgTjcxf .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-UbOwlPLCBCgTjcxf .node .label{text-align:center;}#mermaid-svg-UbOwlPLCBCgTjcxf .node.clickable{cursor:pointer;}#mermaid-svg-UbOwlPLCBCgTjcxf .arrowheadPath{fill:#333333;}#mermaid-svg-UbOwlPLCBCgTjcxf .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-UbOwlPLCBCgTjcxf .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-UbOwlPLCBCgTjcxf .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-UbOwlPLCBCgTjcxf .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-UbOwlPLCBCgTjcxf .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-UbOwlPLCBCgTjcxf .cluster text{fill:#333;}#mermaid-svg-UbOwlPLCBCgTjcxf .cluster span{color:#333;}#mermaid-svg-UbOwlPLCBCgTjcxf div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-UbOwlPLCBCgTjcxf :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

分类器比较
目 录
Contents
sklearn分类器
数据集合
测试代码
总结

§分类器比较


  在 分类器的比较? 给出了在sklearn的python包中的几类分类器性能的比较。

1.1 sklearn分类器

  在人工数据集上比较scikit-learn中的几种分类器。这个例子的重点是说明不同分类器的决策边界的性质。这些例子所传达的直觉不一定会传递给真实的数据集,因此,这一点应该有所把握。

  特别是在高维空间中,数据更容易被线性分离,而朴素贝叶斯和线性支持向量机等分类器的简单性可能导致比其他分类器更好的泛化。

1.1.1 分类器

  测试的分类器总共十个:

names = ["Nearest Neighbors", "Linear SVM", "RBF SVM", "Gaussian Process","Decision Tree", "Random Forest", "Neural Net", "AdaBoost","Naive Bayes", "QDA"]
* Nearest Neighbors
* Linear SVM
* RBF SVM
* Gaussian Process
* Decision Tree
* Random Forest
* Neural Net
* AdaBoost
* Naive Bayes
* QDA

1.2 数据集合

  图中显示实色训练点和半透明的测试点。右下角显示测试集的分类准确率。

▲ 图1.1.1 训练数据集合 左:弯月数据集合;中:圆环数据集合;右:线性可分数据集合

▲ 图1.2.2 左:Nearest Neighbors;中:Linear SVM; 右:RBF SVM

▲ 图1.2.3 左:Gaussion Process;中:Decision Tree; 右:Random Forest

▲ 图1.2.4 左:Neural Net;左中:Adaboost; 右中:Naive Bayes;右:QDA

1.3 测试代码

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY                     -- by Dr. ZhuoQing 2021-12-24
#
# Note:
#============================================================from headm import *                 # =import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_moons, make_circles, make_classification
from sklearn.neural_network import MLPClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import RBF
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis#------------------------------------------------------------h = .02  # step size in the meshnames = ["Nearest Neighbors", "Linear SVM", "RBF SVM", "Gaussian Process","Decision Tree", "Random Forest", "Neural Net", "AdaBoost","Naive Bayes", "QDA"]#------------------------------------------------------------classifiers = [KNeighborsClassifier(3),SVC(kernel="linear", C=0.025),SVC(gamma=2, C=1),GaussianProcessClassifier(1.0 * RBF(1.0)),DecisionTreeClassifier(max_depth=5),RandomForestClassifier(max_depth=5, n_estimators=10, max_features=1),MLPClassifier(alpha=1, max_iter=1000),AdaBoostClassifier(),GaussianNB(),QuadraticDiscriminantAnalysis()]#------------------------------------------------------------X, y = make_classification(n_features=2, n_redundant=0, n_informative=2,random_state=1, n_clusters_per_class=1)
rng = np.random.RandomState(2)
X += 2 * rng.uniform(size=X.shape)
linearly_separable = (X, y)datasets = [make_moons(noise=0.3, random_state=0),make_circles(noise=0.2, factor=0.5, random_state=1),linearly_separable]#------------------------------------------------------------
figure = plt.figure(figsize=(27, 9))
i = 1#------------------------------------------------------------# iterate over datasets
for ds_cnt, ds in enumerate(datasets):# preprocess dataset, split into training and test partX, y = dsX = StandardScaler().fit_transform(X)X_train, X_test, y_train, y_test = \train_test_split(X, y, test_size=.4, random_state=42)x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5xx, yy = np.meshgrid(np.arange(x_min, x_max, h),np.arange(y_min, y_max, h))# just plot the dataset firstcm = plt.cm.RdBucm_bright = ListedColormap(['#FF0000', '#0000FF'])ax = plt.subplot(len(datasets), len(classifiers) + 1, i)if ds_cnt == 0:ax.set_title("Input data")# Plot the training pointsax.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_bright,edgecolors='k')# Plot the testing pointsax.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_bright, alpha=0.6,edgecolors='k')ax.set_xlim(xx.min(), xx.max())ax.set_ylim(yy.min(), yy.max())ax.set_xticks(())ax.set_yticks(())i += 1# iterate over classifiersfor name, clf in zip(names, classifiers):ax = plt.subplot(len(datasets), len(classifiers) + 1, i)clf.fit(X_train, y_train)score = clf.score(X_test, y_test)# Plot the decision boundary. For that, we will assign a color to each# point in the mesh [x_min, x_max]x[y_min, y_max].if hasattr(clf, "decision_function"):Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])else:Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])[:, 1]# Put the result into a color plotZ = Z.reshape(xx.shape)ax.contourf(xx, yy, Z, cmap=cm, alpha=.8)# Plot the training pointsax.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_bright,edgecolors='k')# Plot the testing pointsax.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_bright,edgecolors='k', alpha=0.6)ax.set_xlim(xx.min(), xx.max())ax.set_ylim(yy.min(), yy.max())ax.set_xticks(())ax.set_yticks(())if ds_cnt == 0:ax.set_title(name)ax.text(xx.max() - .3, yy.min() + .3, ('%.2f' % score).lstrip('0'),size=15, horizontalalignment='right')i += 1#------------------------------------------------------------
plt.tight_layout()
plt.show()#------------------------------------------------------------
#        END OF FILE : TEST2.PY
#============================================================

※ 总结 ※


  运行对比了 分类器的比较? 中的sklearn中的分类的性能对比。这为我们理解机器学习中的特性提供了理解基础。


■ 相关文献链接:

  • 分类器的比较?

● 相关图表链接:

  • 图1.1.1 训练数据集合
    左:弯月数据集合;中:圆环数据集合;右:线性可分数据集合
  • 图1.2.2 左:Nearest Neighbors;中:Linear SVM; 右:RBF SVM
  • 图1.2.3 左:Gaussion Process;中:Decision Tree; 右:Random Forest
  • 图1.2.4 左:Neural Net;左中:Adaboost; 右中:Naive Bayes;右:QDA

sklearn中分类器的比较相关推荐

  1. TF-IDF 原理及sklearn中的tf-idf实例分析

    背景介绍 在一个大的文本语料库中,一些单词将出现很多次(例如 "the", "a", "is" 是英文),因此对文档的实际内容没有什么有意义 ...

  2. sklearn中的xgboost_xgboost来了

    一.xgboost前奏 1,介绍一下啥是xgboost XGBoost全称是eXtreme Gradient Boosting,即极限梯度提升算法.它由陈天奇所设计,致力于让提升树突破自身的计算极限, ...

  3. sklearn中的交叉验证(Cross-Validation)

    sklearn中的交叉验证(Cross-Validation) cross validation大概的意思是:对于原始数据我们要将其一部分分为traindata,一部分分为test data.trai ...

  4. sklearn中GBDT的一些参数、属性、方法的理解

    文章目录 GBDT 分类器 引入 重要参数 loss learning_rate subsample n_estimators criterion max_depth min_samples_leaf ...

  5. 集成学习voting Classifier在sklearn中的实现

    机器学习的算法有很多,对于每一种机器学习算法,考虑问题的方式都略微有所不同,所以对于同一个问题,不同的算法可能会给出不同的结果,那么在这种情况下,我们选择哪个算法的结果作为最终结果呢?那么此时,我们完 ...

  6. sklearn中SVM的可视化

    文章目录 第一部分:如何绘制三维散点图和分类平面 第二部分:sklearn中的SVM参数介绍 第三部分:源代码and数据 最近遇到一个简单的二分类任务,本来可用一维的线性分类器来解决,但是为了获得更好 ...

  7. sklearn中的xgboost_XGBoost的介绍、应用、调参、知识点

    XGBoost XGBoost是一个优化的分布式梯度增强库,旨在实现高效,灵活和便携. 安装 python库文件安装:pip install xgboost 高阶安装可以参考: 这里​xgboost. ...

  8. 机器学习教程 之 SKlearn 中 PCA 算法的运用:人脸识别实例

    文章目录 一.PCA原理简介 二. sklearn 中的PCA 三. PCA降维进行人脸识别 四.更多资源下载 一.PCA原理简介 关于主成分分析算法,即 Principal conponent an ...

  9. sklearn中实现多分类任务(OVR和OVO)

    sklearn中实现多分类任务(OVR和OVO) 1.OVR和OVO是针对一些二分类算法(比如典型的逻辑回归算法)来实现多分类任务的两种最为常用的方式,sklearn中专门有其调用的函数,其调用过程如 ...

最新文章

  1. 1957模拟计算机,统考计算机作业
  2. S01E05 Android体系结构
  3. go语言学习,channel消费者和生产者
  4. mysql 笔试题_MySQL笔试题详解(一)(中等难度)
  5. 5 交换机-direct (路由)
  6. git关闭密码自动存储_项目在 git 里怎样合理的保存配置文件(服务器密码等敏感内容)...
  7. 产品经理学习---高级产品经理
  8. windows 端口映射
  9. kubernetes视频教程笔记 (26)-集群调度-节点亲和性
  10. 影视剧中的歌曲怎么录制 怎么录背景音乐
  11. SPSS 25软件安装教程
  12. zoom怎么解除静音_Zoom参会者入会后的注意事项
  13. 全国62个城市建筑轮廓矢量数据
  14. 理解 Flexbox:你需要知道的一切
  15. html给图片添加边框
  16. 何谓Palm size-PC及Pocket PC?
  17. VC常见的108个问题
  18. 博客已死?移动互联网时代博客的价值
  19. OpenCV开发笔记(四十四):红胖子8分钟带你深入了解霍夫圆变换(图文并茂+浅显易懂+程序源码)
  20. 常用笔刷(blender)

热门文章

  1. GIT使用总结(二)
  2. vue项目多入口教程
  3. 飞塔安全实验室:2016年物联网将成为新的战场
  4. yaf_dispatcher.c 的 yaf_dispatcher_fix_default函数
  5. 请妥善保管自己的QQ等网络帐号
  6. Java基础学习总结(15)——java读取properties文件总结
  7. React-生命周期杂记
  8. Node中require方法的简单实现
  9. Java程序员需要熟悉的库
  10. angular-oauth2 —— NG 的 OAuth2 认证模块