Python机器学习——Sklearn学习笔记

Sklearn 学习笔记

人工智能->机器学习->深度学习 所属分支

 

图片.png

学习资源来自网站https://www.bilibili.com/video/av39137333

数据分析框架

如何多维度对手头的数据进行描述

 

数据分析汇总用到的统计学基础知识

 

 

机器学习知识域思维导图

 


图片.png

图片.png


图片.png

图片.png


图片.png

图片.png

机器学习简要介绍

图片.png

图片.png


图片.png

图片.png

特征工程为将预处理过的数据转化为可以被算法所用的数据 date string 类型转为可处理的数据类型

数据集&sklearn基本介绍

图片.png

图片.png


图片.png

图片.png

sklearn 数据集导入

*用导入数据集名称代替

图片.png

图片.png


图片.png

图片.png


数据集返回值是继承自py的字典可以用dataset.key得到value
图片.png

图片.png

 

数据集的划分 训练集和测试集

图片.png

图片.png

 

随机数种子 和testsize根据需求可不填 随机数种子决定盲抽哪些数据当做测试
而在当比较不同算法性能时 需要控制随机数种子变量一致!!这时候需要自行设定
返回值顺序要格外注意!取名见下

 


图片.png

图片.png

特征工程介绍

精度差距:算法(基本都用现成,差别不大)+特征值提取

图片.png

图片.png


图片.png

图片.png


pandas处理缺失值 某些错误值 拿到干净的数据用于学习
何为特征提取?
文本,图像分类时 将字符串等无法处理的数据转换为可以用数学公式计算的数值 如onehot编码(对每一种类别都平等看待,让编码方式不表示各类的大小关系如001 010 011就隐含了大小比较)
图片.png

图片.png


sparse=True(默认)表明返回的是稀疏矩阵表示形式(数据结构中讲过 只表示非0项及其在矩阵中所在位置) 见下方
transform dictionary(字典数组) to vector/matrix(数值)
将数据集中每一个样本都转化为一个同维度向量 one hot编码,多个向量构成一个矩阵 下面的应用将类别转为one hot编码牺牲了存储空间但保证了各类别的平等
图片.png

图片.png


为了解决使用onehot编码导致矩阵稀疏的缺陷,fit transform使用稀疏矩阵的表示方式来压缩空间 左下图
图片.png

图片.png


下图为上述三个函数的使用方法
图片.png

图片.png


应用场景:用于像 泰坦尼克数据集中有 pclass sex等多个特征的情况 而这些特征的取值范围一般都固定且比较少 此时可以将这些特征统统使用字典特征抽取 得到稀疏矩阵
图片.png

图片.png

 

文本特征提取:

图片.png

图片.png

 

stop_words参数指定不考虑哪些无实际意义的词 可以上网查询常见停用词表
transfer.fit_transform(data)默认返回稀疏矩阵格式 可以用toarray函数转化为正常矩阵


图片.png

图片.png

 

对于中文句子需要采用分词预处理 同时会省略其中的单字词


图片.png

图片.png


用jieba库进行分词处理
图片.png

图片.png


(‘ ’.join用于将jieba库把一句话分割成的各段分词用‘ ’重新拼接成一个完整的字符串)
中文文本特征提取完整流程
图片.png

图片.png

文本特征抽取之tfidfvectorize (tf表示词频term frequency idf 逆向文件词频为inverse document frequency)

在进行文本分类时,我们是通过出现次数较多的词来进行类别判断的,但是一些常用的虚词关联词可能会由此产生干扰,故我们要从中找出关键词

图片.png

图片.png


用tfidvectorize便可找出关键词
图片.png

图片.png


一个tf和idf的计算案例 idf和tf越高越有可能成为关键词 返回的结果矩阵也是衡量重要性的数值(日后机器学习中便是用此数据) 16:06
图片.png

图片.png

 

特征预处理(归一化 标准化)

图片.png

图片.png

 

采取特征预处理的原因:避免计算欧几里得距离时 各类数据之间的尺度不同对整体距离计算的影响(下图里程数和时间比明显不是一个量级,机器学习时只能学到里程数的特征,但实际上三者同等重要)


图片.png

图片.png

 

需要对上数据作无量纲化/归一化/标准化处理,将不同规格数据转化为同一规格:
1.归一化


图片.png

图片.png


计算例子:
图片.png

图片.png


对应api图片.png

图片.png


图片.png

图片.png

 

2.数据标准化
归一化存在缺陷:一旦最大值和最小值是异常点 将会严重影响归一结果 归一化仅适用于小数据场景
(所以一般特征处理都用标准化处理):


图片.png

图片.png

异常点对均值影响不大
API:


图片.png

图片.png


图片.png

图片.png

降维

ndarry中维数即数组嵌套的层数 0维标量 1维向量 2维矩阵
此处降维指的是对上述二维数组dataframe(样本,特征)降低列/特征个数,实质上是除去存在一定相关程度特征(如降雨量和湿度)的冗余信息,最终筛选出各不相关的特征。

方法一:filter过滤

1.方差选择法 去除方差较小的特征(因为可能样本之间该特征值都高度一致 对模型学习无太大帮助)


图片.png

图片.png

  1. 相关系数法 衡量各特征之间相关程度以排除相关特征
    相关系数有多种计算方法,此处采用皮尔森系数


    图片.png

    图片.png

     

    使用实例 返回一个二元素的数组,首元素即为相关系数


    图片.png

    图片.png


    当发现两个特征之间相关性极其高时可以采用
    1.选择其一
    2.两者加权求和形成一个新特征并舍弃二者

    3.主成分分析 pca


    图片.png

    图片.png


    案例:对水壶拍照 从三维到二维 不同角度拍摄可能会影响最终对水壶识别
    故pca要保证减少损失信息可以还原原貌

又比如对平面五个点降维(投影)使结果仍为五个点

图片.png

图片.png


可见pca涉及矩阵运算实现降维

 

 

 

api:图片.png

图片.png

使用例子:
(保留两个特征)


图片.png

图片.png

降维案例之instcart菜篮子分析

探究各用户对商场不同类别物品偏好,由此制定不同营销策略 代码部分飘过

sklearn 转换器预估器

用于分类算法
转换器(特征工程的父类):昨天用于特诊工程的fit_transform
可以分割成fit(进行一些必要数据的计算如均值) 和transform两个api一起用 那为什么还要单独剥离出fit呢因为在标准化api中fit用于对数据进行求平均值 标准差的操作而transform则用来进行(x-mean)/std的最终操作,fit_transform整合二者 将fit算出的数值保存在转换器中 并用在后续的transform操作中

注意:后续鸢尾花案例中为了使训练集和测试集用相同的均值和标准差进行标准化,用到了这一原理

图片.png

图片.png

估计器(分类 回归 无监督算法的父类):


图片.png

图片.png

 

既然是父类 则代表子类机器学习算法中有公共流程 即
(x_train是训练集的特征值 y_train是训练集的目标值即标签 )


图片.png

图片.png

图片.png

图片.png

KNN算法

k个nearest neighbor k取值任意
核心思想 根据你的k个最近邻居类别来推断你的类别(k个邻居在场桥则我也在场桥)物以类聚 人以群分
那么如何确定邻居是谁?通过欧氏距离 曼哈顿距离(各特征差绝对值累加)明可夫斯基距离等计算


图片.png

 

注意k值过小会受到异常值的影响,和异常点离得最近则受牵连

而k值过大容易导致结果判断错误,极易受样本数目小且不均衡的影响

 可以用交叉验证获取最优k

同样进行knn分类器训练之前需要对数据作标准化处理

 

 

KNN 算法api


图片.png

图片.png

应用案例之鸢尾花分类


图片.png

 


图片.png

 

KNN算法性能分析
懒惰算法:需要计算各点之间的距离并比较


图片.png

模型选择和调优(k值的自动选择)

图片.png

图片.png

交叉验证 n折交叉验证
作用在于判断当前取的k=1,3,5..值得到的最终识别性能如何,数据量大时可以取较小的n否则耗时过多


图片.png

图片.png


图片.png

图片.png

 

目的:让根据某一k值训练出的模型的评估结果更加准确可信

网格搜索(grid search)
自动完成对k取值范围内所有k的模型训练并进行比较,由此选出最优k值


图片.png

图片.png

 

上述二者合为一个api


图片.png

图片.png

facebook位置预测 4(该案例的特征和目标之间的关系尚未明确)


图片.png

图片.png


图片.png

图片.png

 

problem :由于数据量过大(千万级别的记录)可以先筛选其中一小部分用来分析,同时对于time时间戳特征 需要将其转化为更有意义的特征如年月日时分秒,最后由于签到地点place_id如果是仅出现一两次则对于广告投放意义不大,可以过滤之
流程分析如下


图片.png

图片.png

代码实现 用到的pd数据预处理api to_datetime和datatimeindex可以之后看视频

经过这次事件可以发现耗费精力最多的部分在数据处理上,其余基本可照搬套路

朴素贝叶斯算法(概括就是朴素加贝叶斯)

 

图片.png

图片.png


朴素的含义:假设特征之间是相互独立的 故p(a,b)=p(a)p(b) p(a,b|c)=p(a|c)p(b|c)
作用:如此一来就能算出原样本中不存在的特殊样本的概率 用于后续贝叶斯计算
图片.png

图片.png

 

图片.png

图片.png

 

贝叶斯:贝叶斯公式

应用场景:文本分类 单词作为特征

当样本数目太少时 还是不可避免会出现某一条件下概率为0的情况,


图片.png

图片.png

此时可以使用拉普拉斯平滑系数


图片.png

图片.png

 

特征值个数m此处为单词的种数 即6

m为所有不重复的单词个数(看到19)
使用api建立贝叶斯分类模型,之后用fit函数从训练集中寻找规律:


图片.png

图片.png

朴素贝叶斯总结:


图片.png

图片.png

贝叶斯用于文本分类


图片.png

图片.png

图片.png

图片.png


图片.png

图片.png

只要比较 pc 和 p非c的概率值 就可已确定到底是不是c这一类别了 而要求概率也只要求分子 根据独立原理 分子又可以变成


图片.png

图片.png

决策树(分类器同样要经过数据集训练后得到)

图片.png

 

构建树的准则:高效进行决策 即越重要(区分度越高如在借贷中最看重工作有无 无工作一定不会批准贷款)的特征距离根节点越接近 判断顺序越靠前


图片.png

 


图片.png


图片.png

 

特征重要程度判断依据:信息增益


图片.png

图片.png

 

当知道某一特征后消除的不确定性(信息熵)最多,那么它就是最重要的特征,信息增益最高
考虑年龄这一特征的信息熵H(),增益g()


图片.png

图片.png


图片.png

 


对每一个特征都经过上述计算得出信息增益后可以构建决策树(有房子一定会给你贷款,没有再看其他 )
图片.png

 

模型建立api

图片.png

 

代码示例(决策树无需进行标准化操作哦)

图片.png

 

通过上述实验可见决策树的预测准确度反而不如knn,故可知不同算法有其特定使用场景,机器学习科学家需要做的工作就是让模型扬长避短,知人善任

决策树可视化

 

图片.png

图片.png


http://www.webgraphviz.com/ (需要再谷歌浏览器使用

 

优缺点

图片.png

 

决策树——大数据实践课程学习

 

 (原来决策树还是贪心算法的应用哦)  每次选择信息增益最高的属性作为下一个分支节点  终止条件见下

第二个条件的意思是分到一定程度后如发现年龄 》35的都会买保险  那么就不需要再往下分了

构建完树之后可能还需要剪枝

在c4.5中可以采用的终止条件

 

老师安利的 专为小白打造的数据分析、挖掘、可视化软件weka (可以用于论文展示结果数据)  但功能比较简单

泰坦尼克号预测

图片.png

图片.png

 

11:55

线性回归

图片.png

图片.png

回归问题:目标值为连续的
应用场景:


图片.png

图片.png

 

定义: 假定存在一个从特征值到目标值的对应函数并求出它,如从平时期末成绩得到总评成绩 一般可以y用一个矩阵来表示该函数


图片.png

图片.png


图片.png

图片.png


非线性关系的函数也可以叫做线性模型 如图片.png

图片.png

如何找到合适的线性模型即确定权重和偏置(模型参数) 用于训练呢

损失函数

图片.png

图片.png

图片.png

图片.png

 

机器学习模型会利用该函数自动通过一些求导调参方法来降低损失值

优化方法 :梯度下降 勤奋努力的平凡人

(通用性极强)利用迭代根据导数不断调整参数权重w1和偏置w0,这就是机器学习的“学习”过程


图片.png

图片.png

 

(α为步长/学习率,偏导数为梯度)

梯度下降api

图片.png

图片.png

 

回归系数即权重,数据集中特征的个数和权重个数是相同的 学习率/步长的确定为动态调整,初始时步长较长提高效率,后逐步变短提高准确度 使用invscaling方法

波士顿房价预测(梯度下降篇)

图片.png

图片.png

跳到逻辑回归

图片.png

图片.png

常见应用场景


图片.png

图片.png

 

预测广告点击率实际就是广告是否被点击(两种情况)

“回归”命名由来


图片.png

图片.png

 

将上述的结果带入下面的x中,得到一个结果(0到1之间) 结果映射关系图见下


图片.png

图片.png

图片.png

图片.png

 

结果大于(阈值,自定义)0.5 小于0.5对应两个类别

关键问题仍然在于如何确定权重和偏置使得预测效果最佳
即构建损失函数
使用对数似然损失来表示损失大小

图片.png

图片.png

y=1表示真实值属于该类别 y=0表示不属于该类别
图片.png

图片.png

 

图像横坐标表示sigmoid函数得到的0~1范围内的结果 纵坐标表示对应loss的大小 即预测结果sigmoid输出值和正确结果0/1偏差越大 loss数值越大

 

上述分段函数整合成一个公式即为图片.png

图片.png

实例计算损失函数

图片.png

图片.png

逻辑回归api

图片.png

图片.png

跳到roc曲线和auc指标

图片.png

图片.png

 

auc的值为红色虚线和坐标轴围成的三角形面积
评价模型最终看auc


图片.png

图片.png

 

roc曲线绘制依赖于下两个指标


图片.png

图片.png

对应的api

图片.png

图片.png

kmeans

该算法属于无监督学习:无目标值

kmeans原理、步骤

k值可以根据需求自定义 或用于调优找达到最优聚类效果的k


图片.png

图片.png

 

原中心点指的是上一次计算出的新中心点


图片.png

图片.png

kmeans 对应的api

 

图片.png

图片.png


n——cluster为k的值
labels不是函数的参数 而是该预估模型的一个可以查看的参数,用于显示结果

 

聚类流程

图片.png

图片.png

聚类评估(轮廓系数 追求 高内聚低耦合)

图片.png

图片.png


图片.png

图片.png

 

聚类效果最好情况:bi>>ai ,sci->1
最差情况为趋近-1 所以轮廓系数在-1和1之间 越趋近1效果越好 趋近-1效果越差


图片.png

图片.png

轮廓系数对应api(所有评估器都在metrics中)

图片.png

图片.png

kmeans 总结

图片.png

图片.png

应用场景:在分类的标签定义出来之前先用聚类进行过渡

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值