踏雪寻梅是什么意思| mido手表什么牌子| 呼呼是什么意思| 吃太烫的东西有什么坏处| 输氨基酸对身体有什么好处和坏处| 水浒传有什么故事| 保底和底薪有什么区别| 白喉采取什么隔离| 纪委是干什么的| 陈宝国的儿子叫什么| 后果的意思是什么| 脸上掉皮是什么原因| 耽美是什么| 砚是什么意思| 哥德巴赫猜想是什么| 夏天适合穿什么衣服| 候和侯有什么区别| 阳虚吃什么调理| 喝生姜水有什么好处| 750金是什么金| 三堂会审是什么意思| c1e驾照能开什么车| 养狗人容易得什么病| 嘴唇紫红色是什么原因| 四季春茶属于什么茶| canyou是什么意思| 防晒衣的面料是什么| 子弟是什么意思| 人流复查做什么检查| 血压高吃什么菜和水果能降血压| 雍正叫什么| 做梦梦见自己生孩子是什么意思| 什么是钝角| 为什么喜欢一个人| 劫是什么意思| 宝宝惊跳反射什么时候消失| e代表什么| 脚掌麻木是什么原因| 早上7点到9点是什么时辰| 早餐吃什么最有营养又减肥| 事宜是什么意思| 什么汤有营养| 5.2号是什么星座| 女生做彩超是检查什么| 被蚂蚁咬了怎么止痒消肿要擦什么药| 经常拉肚子是什么原因引起的| 面粉可以做什么好吃的| robinhood是什么牌子| 寿司用什么米做好吃| 血压高降不下来是什么原因| 梦到丧事场面什么意思| 7月16日什么星座| thc是什么意思| nt什么货币| 阿尔茨海默病吃什么药| 什么是地沟油| 什么东西补气血| 心功能iv级是什么意思| 经常喝蜂蜜水有什么好处和坏处| headache什么意思| 心电轴右偏是什么意思| 结膜炎吃什么药| 莫拉古是什么意思| 什么是吸附性义齿| 猫的尾巴有什么用处| 伤官是什么意思| 什么的雨| 晚上肚子疼是什么原因| 菲字五行属什么| 反流性食管炎有什么症状| 灰色配什么颜色好看| 文竹的寓意是什么| 为什么会有台风| 拉黑屎是什么原因| u是什么元素| 钻石和锆石有什么区别| 捡漏什么意思| 冻干粉是什么| 饴糖是什么糖| 人为什么不可以偏食| 子宫粘连是什么原因造成的| 十五岁是什么年华| 骨裂什么症状| 骨质疏松吃什么钙片| 性功能减退吃什么药好| 白球比低是什么原因| 什么叫色弱| 甲沟炎是什么引起的| 黄斑前膜是什么病| 初心是什么| 怀孕了胃不舒服是什么原因| 一见钟情是什么感觉| 脚掌发麻是什么原因| 月经一直不干净是什么原因引起的| 来减一笔是什么字| 什么是肋骨骨折| 血色素低是什么原因| 书店买不到的书是什么书| 补血补气吃什么最快最好| 灏是什么意思| 什么药止痛效果最好| 1月19日什么星座| 看诊是什么意思| 现在买什么股票好| 心脏疼是什么原因| 盗汗挂什么科| 蝗虫的呼吸器官是什么| 劳宫穴在什么位置| 双非是什么意思| 粟是什么| 青团是用什么做的| 蚂蚱吃什么食物| 总恶心是什么原因| 子宫内膜什么时候脱落| hpa是什么单位| 为什么没有西京| 7到9点是什么时辰| 梦见和尚是什么预兆| 飘了是什么意思| 色拉油是什么油| 一听是什么意思| 喝红糖水有什么好处和坏处| 麻豆是什么意思| 鸡蛋散黄是什么原因| 梦到狐狸是什么意思| 梦见山体滑坡是什么意思| 什么人不能吃黄精| 正财透干是什么意思| 四百分能上什么大学| 肛周瘙痒是什么原因| 四月初八是什么节日| 人出汗多是什么原因| 什么是二级医院| xo是什么酒| 吃什么东西养胃最有效| 鲁字五行属什么| 69年属什么生肖| 牙齿黄是什么原因造成的| 舌系带长有什么影响吗| 四面受敌是什么动物| 相知是什么意思| 台阶是什么意思| 梦见地震是什么意思| 振水音阳性提示什么| 忧虑是什么意思| 时过境迁什么意思| 什么是主观什么是客观| 春肖是什么生肖| 世界上最毒的蛇是什么蛇| 毛肚是什么部位| 腰间盘突出睡觉什么姿势好| 白细胞低是什么原因引起的| 什么是高热量食物有哪些| 烂脚丫用什么药| 家庭主妇是什么意思| 吃什么能拉肚子| 正装是什么意思| 蕊字五行属什么| 天蝎座什么星象| 诸什么意思| 胎心监护是检查什么| 为什么夏天容易拉肚子| 索是什么意思| 肝内高回声结节是什么意思| 白带是黄色是什么原因| 什么年马月| 什么野菜降血糖| 狼毫毛笔是什么毛| 什么的朋友| 右手无名指戴戒指什么意思| 枸杞和山楂泡水喝有什么功效| 地指什么生肖| 荔枝肉是什么菜系| 虚有其表的意思是什么| 双向什么意思| 七八年属什么| 免疫球蛋白有什么作用| 草字头下面一个高字读什么| 毕业礼物送什么| 什么叫逻辑思维| 女人脾虚吃什么药最好| 贫血有什么症状表现| 人突然晕倒是什么原因引起的| 1990属马的是什么命| 平均血红蛋白量偏高是什么意思| 尿道感染有什么现象| 感冒有痰吃什么药| oct是什么意思| 梦见拔花生是什么预兆| pg什么意思| 宫颈钙化灶是什么意思| 小孩吃牛肉有什么好处| 梦见给别人钱是什么意思| 指甲凹陷是什么原因| 乳房肿胀是什么原因| 尿酸是什么| 酸梅汤不适合什么人喝| 海带排骨汤海带什么时候放| 吃什么能提高免疫力| 青光眼是什么意思| 豪情万丈什么意思| 明矾和白矾有什么区别| 室内传导阻滞什么意思| 阴茎瘙痒是什么原因| 五彩斑斓是什么意思| 心经是什么意思| 胃癌低分化是什么意思| 脾胃虚寒吃什么中成药| 神经元特异性烯醇化酶是什么意思| 滚床单什么意思| 腌肉用什么淀粉| 膝盖疼做什么检查最好| 失眠吃什么药见效快| 端庄的意思是什么| 什么情况下需做肠镜| 鼠目寸光是什么生肖| 拔牙后可以吃什么| 戊午五行属什么| 长颈鹿吃什么树叶| 血糖查什么项目| sancanal是什么牌子| 什么药膏能让疣体脱落| 小酌怡情什么意思| 阎王叫什么名字| 红烧排骨用什么排骨比较好| 血压突然升高是什么原因| 长春有什么好吃的| 前列腺b超能检查出什么| 紫癜是什么原因引起的| 肺气不足有什么症状| 桂子是什么意思| 痛经吃什么食物| 枕大池增大什么意思| 命里缺金取什么名字好| 父亲节什么时候| 老年人口苦是什么原因| 儿童上火吃什么药最好| 为什么不建议做融合手术| 小青龙是什么龙虾| 带状疱疹是什么引起的| 什么是日间手术| 贝壳是什么垃圾| 坐骨神经痛是什么原因引起的| 四月十七号是什么星座| 月经推迟是什么原因导致的| 付之一炬什么意思| 乳房疼痛吃什么消炎药| 间接胆红素是什么| 山楂干泡水喝有什么功效| 万丈深渊是什么意思| 荧光黄是什么颜色| 五彩斑斓的意思是什么| 甘油三酯高吃什么药好| 沙发客是什么意思| 长脸适合什么发型男| 膀胱炎吃什么药最见效| 猪肝炒什么好吃| 酸奶和牛奶有什么区别| 肝火旺盛吃什么药效果最好| 端午节吃什么菜呢| 霍金得了什么病| 人艰不拆是什么意思| 护理员是干什么的| 滴滴什么意思网络用语| 百度

问题:专家您好: 1、草莓地因为连年种植黄...

大数据 机器学习
什么是数据挖掘?什么是机器学习?又如何进行Python数据预处理?本文将带领大家一同了解数据挖掘和机器学习技术,通过淘宝商品案例进行数据预处理实战,通过鸢尾花案例介绍各种分类算法。
百度 精准指导,形成合力。

什么是数据挖掘?什么是机器学习?又如何进行Python数据预处理?本文将带领大家一同了解数据挖掘和机器学习技术,通过淘宝商品案例进行数据预处理实战,通过鸢尾花案例介绍各种分类算法。

Python数据挖掘与机器学习技术入门实战

以下内容根据主讲嘉宾视频分享以及PPT整理而成。

本次课程包含了五个知识点:

  1. 数据挖掘与机器学习技术简介
  2. Python数据预处理实战
  3. 常见分类算法介绍
  4. 对鸢尾花进行分类案例实战
  5. 分类算法的选择思路与技巧

一、数据挖掘与机器学习技术简介

什么是数据挖掘?数据挖掘指的是对现有的一些数据进行相应的处理和分析,最终得到数据与数据之间深层次关系的一种技术。例如在对超市货品进行摆放时,牛奶到底是和面包摆放在一起销量更高,还是和其他商品摆在一起销量更高。数据挖掘技术就可以用于解决这类问题。具体来说,超市的货品摆放问题可以划分为关联分析类场景。

在日常生活中,数据挖掘技术应用的非常广泛。例如对于商户而言,常常需要对其客户的等级(svip、vip、普通客户等)进行划分,这时候可以将一部分客户数据作为训练数据,另一部分客户数据作为测试数据。然后将训练数据输入到模型中进行训练,在训练完成后,输入另一部分数据进行测试,最终实现客户等级的自动划分。其他类似的应用例子还有验证码识别、水果品质自动筛选等。

那么机器学习技术又是什么呢?一言以蔽之,凡是让机器通过我们所建立的模型和算法对数据之间的关系或者规则进行学习,最后供我们利用的技术都是机器学习技术。其实机器学习技术是一个交叉的学科,它可以大致分为两类:传统的机器学习技术与深度学习技术,其中深度学习技术包含了神经网络相关技术。在本次课程中,着重讲解的是传统的机器学习技术及各种算法。

由于机器学习技术和数据挖掘技术都是对数据之间的规律进行探索,所以人们通常将两者放在一起提及。而这两种技术在现实生活中也有着非常广阔的应用场景,其中经典的几类应用场景如下图所示:

 

1、分类:对客户等级进行划分、验证码识别、水果品质自动筛选等

机器学习和数据挖掘技术可以用于解决分类问题,如对客户等级进行划分、验证码识别、水果品质自动筛选等。

以验证码识别为例,现需要设计一种方案,用以识别由0到9的手写体数字组成的验证码。有一种解决思路是,先将一些出现的0到9的手写体数字划分为训练集,然后人工的对这个训练集进行划分,即将各个手写体映射到其对应的数字类别下面,在建立了这些映射关系之后,就可以通过分类算法建立相应的模型。这时候如果出现了一个新的数字手写体,该模型可以对该手写体代表的数字进行预测,即它到底属于哪个数字类别。例如该模型预测某手写体属于数字1的这个类别,就可以将该手写体自动识别为数字1。所以验证码识别问题实质上就是一个分类问题。

水果品质的自动筛选问题也是一个分类问题。水果的大小、颜色等特征也可以映射到对应的甜度类别下面,例如1这个类别可以代表甜,0这个类别代表不甜。在获得一些训练集的数据之后,同样可以通过分类算法建立模型,这时候如果出现一个新的水果,就可以通过它的大小、颜色等特征来自动的判断它到底是甜的还是不甜的。这样就实现了水果品质的自动筛选。

2、回归:对连续型数据进行预测、趋势预测等

除了分类之外,数据挖掘技术和机器学习技术还有一个非常经典的场景——回归。在前文提到的分类的场景,其类别的数量都有一定的限制。比如数字验证码识别场景中,包含了0到9的数字类别;再比如字母验证码识别场景中,包含了a到z的有限的类别。无论是数字类别还是字母类别,其类别数量都是有限的。

现在假设存在一些数据,在对其进行映射后,最好的结果没有落在某个0、1或者2的点上,而是连续的落在1.2、1.3、1.4…上面。而分类算法就无法解决这类问题,这时候就可以采用回归分析算法进行解决。在实际的应用中,回归分析算法可以实现对连续型数据进行预测和趋势预测等。

3、聚类:客户价值预测、商圈预测等

什么是聚类?在上文中提过,要想解决分类问题,必须要有历史数据(即人为建立的正确的训练数据)。倘若没有历史数据,而需要直接将某对象的特征划分到其对应的类别,分类算法和回归算法无法解决这个问题。这种时候有一种解决办法——聚类,聚类方法直接根据对象特征划分出对应的类别,它是不需要经过训练的,所以它是一种非监督的学习方法。

在什么时候能用到聚类?假如数据库中有一群客户的特征数据,现在需要根据这些客户的特征直接划分出客户的级别(如SVIP客户、VIP客户),这时候就可以使用聚类的模型去解决。另外在预测商圈的时候,也可以使用聚类的算法。

4、关联分析:超市货品摆放、个性化推荐等

关联分析是指对物品之间的关联性进行分析。例如,某超市内存放有大量的货品,现在需要分析出这些货品之间的关联性,如面包商品与牛奶商品之间的关联性的强弱程度,这时候可以采用关联分析算法,借助于用户的购买记录等信息,直接分析出这些商品之间的关联性。在了解了这些商品的关联性之后,就可以将之应用于超市的商品摆放,通过将关联性强的商品放在相近的位置上,可以有效提升该超市的商品销量。

此外,关联分析还可以用于个性化推荐技术。比如,借助于用户的浏览记录,分析各个网页之间存在的关联性,在用户浏览网页时,可以向其推送强关联的网页。例如,在分析了浏览记录数据后,发现网页A与网页C之间有很强的关联关系,那么在某个用户浏览网页A时,可以向他推送网页C,这样就实现了个性化推荐。

5、自然语言处理:文本相似度技术、聊天机器人等

除了上述的应用场景之外,数据挖掘和机器学习技术也可以用于自然语言处理和语音处理等等。例如对文本相似度的计算和聊天机器人。

二、Python数据预处理实战

在进行数据挖掘与机器学习之前,首先要做的一步是对已有数据进行预处理。倘若连初始数据都是不正确的,那么就无法保证最后的结果的正确性。只有对数据进行预处理,保证其准确性,才能保证最后结果的正确性。

数据预处理指的是对数据进行初步处理,把脏数据(即影响结果准确率的数据)处理掉,否则很容易影响最终的结果。常见的数据预处理方法如下图所示:

 

1、缺失值处理

缺失值是指在一组数据中,某行数据缺失的某个特征值。解决缺失值有两种方法,一是将该缺失值所在的这行数据删除掉,二是将这个缺失值补充一个正确的值。

2、异常值处理

异常值产生的原因往往是数据在采集时发生了错误,如在采集数字68时发生了错误,误将其采集成680。在处理异常值之前,自然需要先发现这些异常值数据,往往可以借助画图的方法来发现这些异常值数据。在对异常值数据处理完成之后,原始数据才会趋于正确,才能保证最终结果的准确性。

3、数据集成

相较于上文的缺失值处理和异常值处理,数据集成是一种较为简单的数据预处理方式。那么数据集成是什么?假设存在两组结构一样的数据A和数据B,且两组数据都已加载进入内存,这时候如果用户想将这两组数据合并为一组数据,可以直接使用Pandas对其进行合并,而这个合并的过程实际上就是数据的集成。

接下来以淘宝商品数据为例,介绍一下上文预处理的实战。

在进行数据预处理之前,首先需要从MySQL数据库中导入淘宝商品数据。在开启MySQL数据库之后,对其中的taob表进行查询,得到了如下的输出:

 

可以看到,taob表中有四个字段。其中title字段用于存储淘宝商品的名称;link字段存储淘宝商品的链接;price存储淘宝商品的价格;comment存储淘宝商品的评论数(一定程度上代表商品的销量)。

那么接下来如何将这些数据导入进来?首先通过pymysql连接数据库(如果出现乱码,则对pymysql的源码进行修改),连接成功后,将taob中的数据全部检索出来,然后借助pandas中的read_sql()方法便可以将数据导入到内存中。read_sql()方法有两个参数,第一个参数是sql语句,第二个参数是MySQL数据库的连接信息。具体代码如下图:

 

1、缺失值处理实战

对缺失值进行处理可以采用数据清洗的方式。以上面的淘宝商品数据为例,某件商品的评论数可能为0,但是它的价格却不可能为0。然而实际上在数据库内存在一些price值为0的数据,之所以会出现这种情况,是因为对部分数据的价格属性没有爬到。

那么如何才能判断出这些数据出现了缺失值呢?可以通过以下的方法来进行判别:首先对于之前的taob表调用data.describe()方法,会出现如下图所示的结果:

 

如何看懂这个统计结果?第一步要注意观察price和comment字段的count数据,如果两者不相等,说明一定有信息缺失;如果两者相等,则暂时无法看出是否有缺失情况。例如price的count为9616.0000,而comment的count为9615.0000,说明评论数据至少缺失了一条。

其他各个字段的含义分别为:mean代表平均数;std代表标准差;min代表最小值;max代表最大值。

那么如何对这些缺失数据进行处理?一种方法是删掉这些数据,还有一种方法是在缺失值处插入一个新值。第二种方法中的值可以是平均数或者中位数,而具体使用平均数还是中位数需要根据实际情况来决定。例如年龄这个数据(1到100岁),这类平稳、变化的级差不大的数据,一般插入平均数,而变化的间隔比较大的数据,一般插入中位数。

处理价格的缺失值的具体操作如下:

 

2、异常值处理实战

跟缺失值的处理过程类似,想要处理异常值,首先要发现异常值。而异常值的发现往往是通过画散点图的方法,因为相似的数据会在散点图中集中分布到一块区域,而异常的数据会分布到远离这块区域的地方。根据这个性质,可以很方便的找到数据中的异常值。具体操作如下图:

 

首先需要从数据中抽出价格数据和评论数据。通常的做法可以借助循环去抽取,但是这种方法太复杂,有一种简单的方法是这个数据框进行转置,这时候原先的列数据就变成了现在的行数据,可以很方便的获取价格数据和评论数据。接下来通过plot()方法绘制散点图,plot()方法第一个参数代表横坐标,第二个参数代表纵坐标,第三个参数代表图的类型,”o”代表散点图。最后通过show()方法将其展现出来,这样就可以直观的观测到离群点。这些离群点对数据的分析没有帮助,在实际操作中往往需要将这些离群点代表的数据删除或者转成正常的值。下图是绘制的散点图:

 

根据上图所示,将评论大于100000,价格大于1000的数据都处理掉,就可以达到处理异常值的效果。而具体的两种处理方法的实现过程如下:

第一种是改值法,将其改为中位数、平均数或者其他的值。具体操作如下图所示:

 

第二种是删除处理法,即直接删除这些异常数据,也是推荐使用的一种方法。具体操作如下图所示:

 

3、分布分析

分布分析是指对数据的分布状态进行分析,即观察其是线性分布还是正态分布。一般采用画直方图的方式来进行分布分析。直方图的绘制有以下几个步骤:计算极差、计算组距和绘制直方图。具体的操作如下图所示:

 

其中,借助arrange()方法来制定样式,arrange()方法第一个参数代表最小值,第二个参数代表最大值,第三个参数代表组距,接下来使用hist()方法来绘制直方图。

taob表中的淘宝商品价格直方图如下图所示,大致上符合正态分布:

 

taob表中的淘宝商品评论直方图如下图所示,大致上是递减的曲线:

 

4、词云图的绘制

有的时候常常需要根据一段文本信息来进行词云图的绘制,绘制的具体操作如下图:

 

实现的大致流程是:先使用cut()对文档进行切词,在切词完成之后,将这些词语整理为固定格式,然后根据所需的词云图的展现形式读取相应的图片(下图中的词云图是猫的形状),接着使用wc.WordCloud()进行词云图的转换,最后通过imshow()展现出相应的词云图。例如根据老九门.txt文档绘制的词云图效果如下图所示:

 

三、常见分类算法介绍

常见的分类算法有很多,如下图所示:

 

其中KNN算法和贝叶斯算法都是较为重要的算法,除此之外还有其他的一些算法,如决策树算法、逻辑回归算法和SVM算法。Adaboost算法主要是用于弱分类算法改造成强分类算法。

四、对鸢尾花进行分类案例实战

假如现有一些鸢尾花的数据,这些数据包含了鸢尾花的一些特征,如花瓣长度、花瓣宽度、花萼长度和花萼宽度这四个特征。有了这些历史数据之后,可以利用这些数据进行分类模型的训练,在模型训练完成后,当新出现一朵不知类型的鸢尾花时,便可以借助已训练的模型判断出这朵鸢尾花的类型。这个案例有着不同的实现方法,但是借助哪种分类算法进行实现会更好呢?

1、KNN算法

(1)、KNN算法简介

首先考虑这样一个问题,在上文的淘宝商品中,有三类商品,分别是零食、名牌包包和电器,它们都有两个特征:price和comment。按照价格来排序,名牌包包最贵,电器次之,零食最便宜;按照评论数来排序,零食评论数最多,电器次之,名牌包包最少。然后以price为x轴、comment为y轴建立直角坐标系,将这三类商品的分布绘制在坐标系中,如下图所示:

 

显然可以发现,这三类商品都集中分布在不同的区域。如果现在出现了一个已知其特征的新商品,用?表示这个新商品。根据其特征,该商品在坐标系映射的位置如图所示,问该商品最有可能是这三类商品中的哪种?

这类问题可以采用KNN算法进行解决,该算法的实现思路是,分别计算未知商品到其他各个商品的欧几里得距离之和,然后进行排序,距离之和越小,说明该未知商品与这类商品越相似。例如在经过计算之后,得出该未知商品与电器类的商品的欧几里得距离之和最小,那么就可以认为该商品属于电器类商品。

(2)实现方式

上述过程的具体实现如下:

 

当然也可以直接调包,这样更加简洁和方便,缺点在于使用的人无法理解它的原理:

 

(3)使用KNN算法解决鸢尾花的分类问题

首先加载鸢尾花数据。具体有两种加载方案,一种是直接从鸢尾花数据集中读取,在设置好路径之后,通过read_csv()方法进行读取,分离数据集的特征和结果,具体操作如下:

 

还有一种加载方法是借助sklearn来实现加载。sklearn的datasets中自带有鸢尾花的数据集,通过使用datasets的load_iris()方法就可以将数据加载出来,随后同样获取特征和类别,然后进行训练数据和测试数据的分离(一般做交叉验证),具体是使用train_test_split()方法进行分离,该方法第三个参数代表测试比例,第四个参数是随机种子,具体操作如下:

 

在加载完成之后,就可以调用上文中提到的KNN算法进行分类了。

2、贝叶斯算法

(1)、贝叶斯算法的介绍

首先介绍朴素贝叶斯公式:P(B|A)=P(A|B)P(B)/P(A)。假如现在有一些课程的数据,如下表所示,价格和课时数是课程的特征,销量是课程的结果,若出现了一门新课,其价格高且课时多,根据已有的数据预测新课的销量。

 

显然这个问题属于分类问题。先对表格进行处理,将特征一与特征二转化成数字,即0代表低,1代表中,2代表高。在进行数字化之后,[[t1,t2],[t1,t2],[t1,t2]]——[[0,2],[2,1],[0,0]],然后对这个二维列表进行转置(便于后续统计),得到[[t1,t1,t1],[t2,t2,t2]]——-[[0,2,0],[2,1,0]]。其中[0,2,0]代表着各个课程价格,[2,1,0]代表各个课程的课时数。

而原问题可以等价于求在价格高、课时多的情况下,新课程销量分别为高、中、低的概率。即P(C|AB)=P(AB|C)P(C)/P(AB)=P(A|C)P(B|C)P(C)/P(AB)=》P(A|C)P(B|C)P(C),其中C有三种情况:c0=高,c1=中,c2=低。而最终需要比较P(c0|AB)、P(c1|AB)和P(c2|AB)这三者的大小,又

  • P(c0|AB)=P(A|C0)P(B|C0)P(C0)=2/4*2/4*4/7=1/7
  • P(c1|AB)=P(A|C1)P(B|C1)P(C1)=0=0
  • P(c2|AB)=P(A|C2)P(B|C2)P(C2)=0=0

显然P(c0|AB)最大,即可预测这门新课的销量为高。

(2)、实现方式

跟KNN算法一样,贝叶斯算法也有两种实现方式,一种是详细的实现:

 

 

另一种是集成的实现方式:

 

3、决策树算法

决策树算法是基于信息熵的理论去实现的,该算法的计算流程分为以下几个步骤:

  • (1)先计算总信息熵
  • (2)计算各个特征的信息熵
  • (3)计算E以及信息增益,E=总信息熵-信息增益,信息增益=总信息熵-E
  • (4)E如果越小,信息增益越大,不确定因素越小

决策树是指对于多特征的数据,对于第一个特征,是否考虑这个特征(0代表不考虑,1代表考虑)会形成一颗二叉树,然后对第二个特征也这么考虑…直到所有特征都考虑完,最终形成一颗决策树。如下图就是一颗决策树:

 

决策树算法实现过程为:首先取出数据的类别,然后对数据转化描述的方式(例如将“是”转化成1,“否”转化成0),借助于sklearn中的DecisionTreeClassifier建立决策树,使用fit()方法进行数据训练,训练完成后直接使用predict()即可得到预测结果,最后使用export_graphviz进行决策树的可视化。具体实现过程如下图所示:

 

4、逻辑回归算法

逻辑回归算法是借助于线性回归的原理来实现的。假如存在一个线性回归函数:y=a1x1+a2x2+a3x3+…+anxn+b,其中x1到xn代表的是各个特征,虽然可以用这条直线去拟合它,但是由于y范围太大,导致其鲁棒性太差。若想实现分类,需要缩小y的范围到一定的空间内,如[0,1]。这时候通过换元法可以实现y范围的缩小:

  • 令y=ln(p/(1-p))
  • 那么:e^y=e^(ln(p/(1-p)))
  • => e^y=p/(1-p)
  • =>e^y*(1-p)=p => e^y-p*e^y=p
  • => e^y=p(1+e^y)
  • => p=e^y/(1+e^y)
  • => p属于[0,1]

这样y就降低了范围,从而实现了精准分类,进而实现逻辑回归。

逻辑回归算法对应的实现过程如下图所示:

 

5、SVM算法

SVM算法是一种精准分类的算法,但是其可解释性并不强。它可以将低维空间线性不可分的问题,变为高位空间上的线性可分。SVM算法的使用十分简单,直接导入SVC,然后训练模型,并进行预测。具体操作如下:

 

尽管实现非常简单,然而该算法的关键却在于如何选择核函数。核函数可分为以下几类,各个核函数也适用于不同的情况:

  • (1)线性核函数
  • (2)多项式核函数
  • (3)径向基核函数
  • (4)Sigmoid核函数

对于不是特别复杂的数据,可以采用线性核函数或者多项式核函数。对于复杂的数据,则采用径向基核函数。采用各个核函数绘制的图像如下图所示:

 

5、Adaboost算法

假如有一个单层决策树的算法,它是一种弱分类算法(准确率很低的算法)。如果想对这个弱分类器进行加强,可以使用boost的思想去实现,比如使用Adaboost算法,即进行多次的迭代,每次都赋予不同的权重,同时进行错误率的计算并调整权重,最终形成一个综合的结果。

Adaboost算法一般不单独使用,而是组合使用,来加强那些弱分类的算法。

五、分类算法的选择思路与技巧

首先看是二分类还是多分类问题,如果是二分类问题,一般这些算法都可以使用;如果是多分类问题,则可以使用KNN和贝叶斯算法。其次看是否要求高可解释性,如果要求高可解释性,则不能使用SVM算法。再看训练样本数量、再看训练样本数量,如果训练样本的数量太大,则不适合使用KNN算法。最后看是否需要进行弱-强算法改造,如果需要则使用Adaboost算法,否则不使用Adaboost算法。如果不确定,可以选择部分数据进行验证,并进行模型评价(耗时和准确率)。

综上所述,可以总结出各个分类算法的优缺点为:

  • KNN:多分类,惰性调用,不宜训练数据过大
  • 贝叶斯:多分类,计算量较大,特征间不能相关
  • 决策树算法:二分类,可解释性非常好
  • 逻辑回归算法:二分类,特征之间是否具有关联无所谓
  • SVM算法:二分类,效果比较不错,但可解释性欠缺
  • Adaboost算法:适用于对弱分类算法进行加强

韦玮,企业家,资深IT领域专家/讲师/作家,畅销书《精通Python网络爬虫》作者,阿里云社区技术专家。

责任编辑:未丽燕 来源: 阿里云云栖社区
相关推荐

2025-08-05 14:01:37

Python数据挖掘机器学习

2025-08-05 16:54:38

2025-08-05 14:08:02

机器学习数据挖掘

2025-08-05 14:35:59

机器学习数据挖掘数据模型

2025-08-05 17:12:29

机器学习数据清洗美团

2025-08-05 10:22:20

机器学习人工智能计算机

2025-08-05 08:00:00

PythonOrange3机器学习

2025-08-05 15:33:42

Python网络爬虫核心技术框架

2025-08-05 10:28:35

XMLWeb数据挖掘

2025-08-05 08:57:31

机器学习电商数据挖掘

2025-08-05 12:44:14

机器学习数据挖掘

2025-08-05 13:15:15

机器学习时间序列分析数据缺失

2025-08-05 01:26:22

数据挖掘

2025-08-05 12:00:00

Python机器学习

2025-08-05 13:30:56

SparkSpark MLlib机器学习

2025-08-05 09:26:34

Orange交互式数据挖掘机器学习

2025-08-05 14:59:37

2025-08-05 10:38:22

机器学习

2025-08-05 09:13:14

程序员数据挖掘

2025-08-05 14:43:37

Python机器学习数据抓取
点赞
收藏

51CTO技术栈公众号

嘴唇发干是什么原因 ear什么意思 女性尿浑浊是什么原因 减肥吃什么米 刑克是什么意思
缪斯女神什么意思 南瓜长什么样子的图片 张飞穿针歇后语下一句是什么 入坑是什么意思 4月27是什么星座
有毒是什么意思 酋长是什么意思 1898年属什么生肖 嗓子痛吃什么药好 胸腔积液是什么原因造成的
迂回什么意思 消防支队长是什么级别 主家是什么意思 芥末是什么做的 傻人有傻福什么意思
左侧肋骨疼是什么原因aiwuzhiyu.com 7月31号是什么星座hcv9jop0ns4r.cn 痰中带血吃什么药hcv8jop4ns6r.cn 阳痿早泄挂什么科hcv9jop0ns7r.cn 皮肤发白一块一块的是什么病hcv8jop3ns3r.cn
银杏是什么gysmod.com 本子是什么意思hcv8jop1ns0r.cn 额头出油多是什么原因hcv8jop1ns7r.cn 什么是挂科hcv9jop3ns5r.cn 为什么会得飞蚊症hcv8jop1ns3r.cn
怎么看微信好友什么时候加的wuhaiwuya.com 秦始皇的名字叫什么hcv8jop4ns3r.cn lancome是什么牌子的hcv9jop5ns9r.cn 果五行属什么hcv7jop9ns6r.cn hpv和tct有什么区别hcv9jop2ns4r.cn
苦瓜什么人不能吃hcv8jop2ns3r.cn 碱性磷酸酶高是什么意思hcv8jop6ns9r.cn 女孩子为什么会痛经hcv8jop1ns0r.cn 什么叫培根zhongyiyatai.com 高岗为什么自杀gangsutong.com
百度