机器学习常用的分类器比较-实例

article/2025/9/28 5:47:16

这篇学习文章是在上一篇博客(http://blog.csdn.net/july_sun/article/details/53088673)的基础上,从机器学习的四要素(数据,算法和模型,计算机硬件,机器学习平台)角度出发用实例将各个分类器做一比较,下面就开始这段代码的奇妙旅程吧~~

第一:计算机硬件

本例中只要普通的64位 win系统即可,使用的python是W64的Anaconda,这个python平台的好处是已安装好经常使用的ML包,如sklearn和数据处理包,如numpy和scipy.

第二:机器学习平台

首先,本例中用到了数据处理包numpy对数据进行预处理,当然也可以直接使用scipy包,如果调用scipy就可以直接使用numpy,因为scipy是基于numpy的.

其次,在机器学习模型训练和参数选择时使用万能的sklearn库,里面包含了机器学习的最广泛使用的算法

第三:数据

step1:数据收集

网上有大量的免费数据和文本可以拿来使用,也可以自己简单生成或者是用sklearn的datasets的数据集,亦或是sklearn的make_regression来生成纯数据以及带有噪声的数据,本例中使用的是中国气象数据网2015年的上海的气象数据来让计算机学习上海这一年中的气温和一些因素的关系,即监督学习,其中Y是气温.

代码如下:

import numpy as npW = ['C:\\Users\\123\\Desktop\\weather\\2015.txt',]weather = np. loadtxt ( W [0] , skiprows =1)weather[: ,7 ] = weather[: ,7 ] / 10plt . figure ()
plt . axis ([0 , 370 , -5, 40])
plt . ylabel (" Temperatures"  )
plt . xlabel (" Month"  )
plt . xticks ([30 , 58, 89, 119 , 150 , 180 ,211 , 242 , 272 , 303 , 333 , 364],['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] )plt . title (' Temperatures trent chart of Shanghai in year 2015 ')plt . plot ( np.arange(len(weather)),weather[: , 7 ],label=2015,marker='*',linestyle='-',color="black")
plt . legend()
plt . show()

可视化如下:

step2:数据清洗

首先要看一下数据是否是完整的,如果不完整(可能缺失或者不对齐等)就需要清洗数据,这一步对后续模型的选择以及结果很重要,因为这篇文章重点在机器学习分类器的比较,所以选择了数据比较完整的气象数据~~

第四:算法和模型

step1:特征工程(feature selection)

Y是气温,X是6个与气温相关的参量,为了预测准确,要排除X之间的相关性,找到独立的与Y 相关的X,用到了相关系数来对比

代码如下:

np. random . shuffle ( weather )
z = (weather [:, 7], weather [: ,5] , weather [: ,10],weather [: ,11] , weather [: ,13] ,weather [: ,16] , weather [: ,21])
z = np. transpose (z)
cor = np. corrcoef (z, rowvar =0)
np.savetxt("C:\\Users\\123\\Desktop\\weather\\mydata.csv",cor,delimiter=",")

由相关系数找到和气温最相关的四个变量作为输入x

step2:CV交叉验证来看一下不同分类器会不会overfitting,以Random Forest分类器为例

代码如下:

from sklearn.ensemble import RandomForestRegressor
from sklearn.learning_curve import validation_curvenp. random . shuffle ( weather )
y = weatherall [:, 7]
x = np. vstack ((weatherall [:, 10], weatherall [:, 11],weatherall [:, 14], weatherall [:, 21])) 
x = np. transpose (x)
x = preprocessing . scale (x)
RF = RandomForestRegressor()
train_loss,test_loss = validation_curve(RF,x,y,,cv=10,scoring='mean_squared_error'.train_sizes=[0.1,0.25,0.5,0.75,1])
train_loss_mean = -np.mean(train_loss,axis=1)
test_loss_mean = -np.mean(test_loss,axis=1)plt.figure()
plt.plot(param_range,train_loss_mean,'o-',c='r',label='Training')
plt.plot(param_range,test_loss_mean,'o-',c='b',label='Cross_validation')
plt.xlabel('Training exapmles')
plt.ylabel('Loss')
plt.legend(loc='best')
plt.title("10 CV on Random Forest ")
plt.show()

可视化如下:

从可视化结果看,training过程中训练集合验证集的loss一直下降,说明能计算机能一直很好的学到知识,不会有overfitting的问题,换用其他几个模型(lr/DT/SVM/KNN/SGD/GB)也是同样的效果,这可能和数据有直接的关系.

step3:各个分类器的比较(残差,错误率),以GradientBoost为例,其他的LInear Regression,SGD,KNN,SVM,DT和集成算法RF,ET都是类似的方法

代码如下:

gb = GradientBoostingRegressor()
y_gb = gb . fit ( x_train , y_train).predict ( x_test )
print "Residual sum of Gradient Boosting Regression squares is", np. mean(( y_gb - y_test ) ** 2)
得到各个分类器的结果如下:

从error看出,在Sklearn默认参数的前提下,集成算法的错误率是最低的.

将Gradient Boost的训练集,测试集和预测集可视化:可以看出来预测结和之前可视化的2015年的气温跟分布趋势还是比较吻合的.



以上就是机器学习的基本的流程以及模型选择以及结果预测,总结如下:

1.data和feature比算法和模型重要,data和feature已经决定了误差上界,模型和算法只是逼近这一上界的手段

2.sklearn的各种算法的调参对错误率结果也会产生影响,在默认参数的情况下,准确率的的排列顺序是集成算法>SVM>DT>其他,但是也可以通过优化参数来提高各分类器的准确率

3.在机器学习过程中,overfitting是一定要注意的,通过cv_可以看出来分类器过拟合的情况

4.总体而言,集成分类器比单个的机器学习分类器的效果要好,这是集成学习将多个个体分类器联合起来预测结果,分而治之,弱弱变强的思想.

5.在实际应用中要视具体问题以及自己的硬件等条件以及期望达到的精度来选择,毕竟每一种分类器都不是万能的,都有其优缺点(博客http://blog.csdn.net/july_sun/article/details/53088673已提过),适合自己的才是最好的



http://chatgpt.dhexx.cn/article/4Ao2udUW.shtml

相关文章

模式识别之分类器

常见分类器介绍 1、SVM分类器(监督学习分类器) 答:训练样本必须先标识不同类别,然后进行训练。SVM算法就是找一个超平面,对于已经被标记的训练样本,SVM训练得到一个超平面,使得两个类别训练集中…

常用分类器的效果对比

如果把机器学习归为两大类,那么主要的工作可以分为:分类和聚类。而分类任务基本上占整个机器学习或者是数据挖掘领域的70%,可见我们遇到的很多问题,都可以用分类的算法进行解决。机器学习发展到现在,许多被证实有效的分类算法被提…

监督学习之分类学习:线性分类器

监督学习之分类学习:线性分类器 如果想了解更多的知识,可以去我的机器学习之路 The Road To Machine Learning通道 Introduction 分类学习是最为常见的监督学习问题,并且其中的经典模型也最为广泛地被应用。其中,最基础的便是二分类(Binary Classification) 问题…

【线性分类器】线性分类器理论知识

文章目录 一、图像分类任务二、线性分类器:2.1 图像表示:2.2 损失函数:多类支持向量机损失: 2.3 正则项与超参数:K折交叉验证: 2.4 优化算法:梯度下降法(SGD)&#xff1a…

分类器的相关概念

昨天,人民网 发了一条八卦微博,盘点“雨神”(萧敬腾)是如何炼成的。微博称,网友统计发现,在萧敬腾 近年12次主要行程中,有10次他的“现身”让当地下起了雨,下雨的概率为83.3%。 图1 …

二类分类器构造多类分类器

from: http://tech.ddvip.com/2009-03/1238054080112304.html 从 SVM的那几张图可以看出来,SVM是一种典型的两类分类器,即它只回答属于正类还是负类的问题。而现实中要解决的问题,往往是多类的问题(少部分例外&#xf…

KNN分类器

1.1 KNN的主要研究内容 (1)分类器的基本原理及算法内容 (2)利用现有的公开数据集(鸢尾花)实现分类器分类 (3)利用某种评价标准对分类结果进行分析评判 1.2分类的定义…

机器学习学习笔记(三)之分类器

分类器: 输入数据,识别是什么类,可以拓展为更广泛的用途。 将特征数据化,作为判断的依据。 和regression有相似的地方,但也有很大区别,把最好不把classification当作regression做 对于有多个分组的如cla…

分类器

分类器的作用:常规任务是利用给定的类别、已知的训练数据来学习分类规则和分类器,然后对未知数据进行分类(或预测)。逻辑回归(logistics)、SVM等常用于解决二分类问题,对于多分类问题&#xff0…

机器学习-分类-线性分类器

在一个机器学习任务中,如果每一条数据的目标值是离散的,则该任务是一个分类任务。 解决分类问题基本的方法有:线性分类器、决策树、朴素贝叶斯、人工神经网络、K近邻(KNN)、支持向量机(SVM)&am…

加密芯片大对比

市面上加密芯片,让人看的眼花缭乱,本文对各家加密芯片作了分析及对比 https://files.cnblogs.com/files/walta99/%E5%8A%A0%E5%AF%86%E8%8A%AF%E7%89%87%E5%A4%A7%E5%AF%B9%E6%AF%94.pdf 转载于:https://www.cnblogs.com/walta99/p/8484469.html

硬件加密芯片

TF32A09 芯片简介 产品描述 TF32A09系列芯片是同方股份有 限公司计算机系统本部自主研发的一 款高速度、高性能32位信息安全SoC 芯片。该芯片集成了高速的安全算法 和通讯接口,摒弃了传统的数据加解 密处理方式,使数据流加解密速度大 幅提升&#x…

芯片程序保护-常规芯片加密方式

芯片程序为什么要保护 针对于市场上越来越多的芯片解密方案的成熟和扩大,目前很对客户存在一个对于自己的产品会被同行或者其他竞争者抄袭的情况,对于硬件这块通常情况下是无法防止被抄的。但对于电路板的核心芯片和程序部分,是存在一些方式…

ATSHA204A加密芯片攻略——使用篇

ATSHA204A加密芯片是ATMEL公司研发的一款高安全性的,功能丰富的加密IC,使用SHA-256算法进行加密操作,内置16*32字节的slot(EEPROM)可以存储用户数据和秘钥,唯一的9字节序列号用于区分其他芯片,还有512bits的OTP区用于保…

硬件加密芯片介绍

同方股份有限公司计算机系统本部自主研发的一款高速度、高性能32位信息安全S高速加密芯片TF32A09系列。该系列芯片集成了高速的安全算法和通讯接口,摒弃了传统的数据加解密处理方式,使数据流加解密速度大幅提升,适用于高速数据流加密。 TF32A…

STM32芯片加密的方法

stm32加密方法: flash加密 96位ID号加密 96位id号 id校验 反汇编 Id存到数组,程序执行之前与数组之中的ID比较,如果相同继续执行,不同则终止执行 加密步骤: ①设计一套加密算法,利用MCU内部的unique ID作…

加密芯片十大品牌对比

加密芯片十大品牌对比 各大品牌加密芯片厂商都为各自的加密芯片定了型号,用户在进行加密芯片的选型时,如果没有明确的参考依据,很难效率而准确的选取到合适的加密芯片。作者结合自身经验,为大家提供一些简单实用的加密芯片选型建…

芯片加密与解密技术方法

目录: 一、简介 二、硅芯片安全措施的演变 三、总结 ------------------------------------------------------------------------------------------------------------- 一、简介 IC集成电路在早期,除法律和经济外,几乎没有保护措施…

His系统简介、医院信息系统(Hospital Information System

医院信息系统(Hospital Information System)是利用计算机技术、网络及通讯技术、多媒体技术,快速、准确、有效地整合医院业务信息和管理信息,实现医院信息最大限度的采集、传输、存储,从而使医院内部资源最有效的利用和…

开源项目-his医院信息系统

哈喽,大家好,今天给大家带来的开源系统是-his医院信息系统 系统主要有收费管理,药房管理,医生工作站,基础信息,统计等模块 登录 角色管理 部门管理 药品类别 药品编码 药品库存 需求计划表