其他:随机森林,数据集处理,网格搜索——机器学习笔记(八)
目录
一、随机森林
(一)什么是集成学习方
通过建立几个模型组合来解决单一预测问题。它的工作原理生成多个分类器/模型,各自独立地学习和做出预测。这些预测最后合成组合预测,因此优于任何一个单分类的做出预测。
也就是三个臭皮匠顶一个诸葛亮
(二)什么是随机森林
随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的总众数决定的。
比如训练了五棵树,四个是true那么就是true
(三)随机森林原理
1.训练集随机
用的BootStrap抽样的方法
假设五个[1,2,3,4,5],新的树的训练集,随机抽原始数据里的数,可重复,再抽5个
总结:N个样本中随机有放回的抽样N个

2.特征随机
M个特征中随机抽取m'个特征
且M>>m
降维
(四)API
设置数量,分割特征方法,最大深度,每个决策树最大特征数量

(五)实现
简单的建立个模型,可以设置一些参数

二、数据集
(一)来源
公司内部:百度
数据接口:花钱
不公开数据集:监控
学习可用数据集:
1)sklearn:scikit-learn: machine learning in Python — scikit-learn 1.3.0 documentation
2)kaggle:Kaggle: Your Machine Learning and Data Science Community
3)UCI:Home - UCI Machine Learning Repository
(二)scikit-learn数据集API介绍
1.sklearn.datasets
加载流行数据集
datasets.load_*()
获取小规模数据
datasets.fetch_*(data_home=None)
获取大规模数据集,函数第一个参数是表示把数据集下载目录
2.获取小的数据集
sklearn.datasets.load_iris()
加载iris化数据集,返回了数据
sklearn.datasets.load_boston()
加载波斯顿房价数据集
3.获取大的数据集

4.具体使用
两种方法都会返回datasets.base.Bunch(字典格式)

可以通过键找值,也可以直接找

具体实现

(三)数据划分
1.为什么划分
因为最后还要数据评估,因此还要将数据划分
训练数据:用于训练,构建模型
测试数据:在模型检验时候使用,用于评估模型
因为训练集肯定多一些
因此数据集百分之70~80
2.划分api
而且返回为了统一:x_train,x_test,y_train,y_test

3.具体实现

三、特征工程
决定最后模型:算法+特征工程
(一)为什么需要特征工程
数据和特征决定机器学习的上限,而模型和算法只是逼近这个上限而已。
(二)什么是特征工程
使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好作用的过程
sklearn来做特征工程
pandas:数据清洗,数据处理
特征包含:
特征抽取/特征提取
特征处理
特征降维
四、特征抽取
机器学习算法——统计方法——数学公式
而有些数据是字符串,文本类型——数字
1.将任意数据(如文本或图像)转换可用机器学习的数字特征
字典特征提取
文本特征提取
图像特征提取
2.提取API
sklearn.feature_extraction
(一)字典特征提取
vector:数学:向量,物理:矩阵也就对应着
迭代器:可以变量集合的接口


有的话就是1,没的就是0
应用
默认sparse=True为稀疏矩阵,坐标形式,哪一个点有1,除了0以外的标出,节省

把true高温哦false

应用场景:类别特征比较多,本身数据就是字典类型
(二)文本特征抽取
单词/句子/字母当作一个单位
单词更好处理
1.方法1
里面stop_words=[],如果你觉得还有虚一点的词,不需要的词,就可以写进去

2.实现方法1
输出sparse矩阵,不可以像字典那样转换,直接使用spares方法
调用后看到对特征的计数

中文的化没有空格,就是以一个句子来抽取,所以中文只能空格之后才行,但还有其他方法
3.中文文本分词

五、特征预处理
通过一些转换函数将特征数据转换为更加适合算法模型的特征数据过程
包含内容
数值型数据的无量纲化
归一化
标准化
API
sklearn.preprocessing
为什么要归一化/标准化
特征的单位或者大小相差较大,或某特征的方差相比其他特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其它的特征
就是一些数字比较大,一些数据比较小,权重不一样,无量纲化就ok


(一)归一化
1.定义
通过对原始数据进行变换把数据映射到(默认为[0,1])之间
2.公式


3.API
输入需要是二维数组,行是样本数,列就是几个特征
4.实际操作

发现正好在[0,1]之间

(二)标准化
如果数据有缺失值,异常值
异常值:最大值/最小值
而归一化正好用的是最大值和最小值求出来的,所以进行归一化非常收到影响,稳定性较差
1.定义
通过对元素数据进行变换,把数据变化到均值为0,标准差为1范围内
2.公式
mean:均值
标准差:集中程度

3.API
4.实际操作


六、转化器和预估器
(一)转化器——特征工程父类
1.实例化Transformer
2.调用fit_transform
转化标准差的时候
fit_transform()
fit():计算每一列的平均值,标准差
transform() (x-mean)/std进行最终转化
(二)估计器——特征工程父类

1.实例化estimator
2.estimator.fit(x_train,y_train):计算
——调用完毕代表模型生成
3.模型评估:
1)直接比对真实值
y_predict=estimator.predict(x.test)
然后比对目标值和真实结果
2)直接计算准确率
estimator.score()

七、模型选择与调优
(一)交叉验证
1.定义
我们将拿到的训练数据,分为训练和验证集,将数据分成四份,其中一份作为验证集,经过四组测试,每次都换不同验证,即得到四组模型结果,取平均值作为最终结果。

2.交叉验证的目的
让评估模型更加准确
(二)超参数搜索-网格搜索

1.API
交叉验证和网格搜索都有的API
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)