婚嫁网站设计,对招聘网站页面设计做建议,万由nas做网站,wordpress后台页地址修改什么是数据挖掘?数据挖掘指的是对现有的一些数据进行相应的处理和分析#xff0c;最终得到数据与数据之间深层次关系的一种技术。例如在对超市货品进行摆放时#xff0c;牛奶到底是和面包摆放在一起销量更高#xff0c;还是和其他商品摆在一起销量更高。作者#xff1a;韦…什么是数据挖掘?数据挖掘指的是对现有的一些数据进行相应的处理和分析最终得到数据与数据之间深层次关系的一种技术。例如在对超市货品进行摆放时牛奶到底是和面包摆放在一起销量更高还是和其他商品摆在一起销量更高。作者韦玮来源Python爱好者社区本文包含了五个知识点数据挖掘与机器学习技术简介Python数据预处理实战常见分类算法介绍对鸢尾花进行分类案例实战类算法的选择思路与技巧一、数据挖掘与机器学习技术简介什么是数据挖掘?数据挖掘指的是对现有的一些数据进行相应的处理和分析最终得到数据与数据之间深层次关系的一种技术。例如在对超市货品进行摆放时牛奶到底是和面包摆放在一起销量更高还是和其他商品摆在一起销量更高。数据挖掘技术就可以用于解决这类问题。具体来说超市的货品摆放问题可以划分为关联分析类场景。在日常生活中数据挖掘技术应用的非常广泛。例如对于商户而言常常需要对其客户的等级(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文档绘制的词云图效果如下图所示