样本数据的载体:
- 通常情况下历史数据不会存储在数据库中,而是存储在文件中(csv文件)
数据库存储数据存在的问题:
- 性能瓶颈:数据量级大的数据很难存储和进行高效的读写。
- 数据存储格式不符合机器学习要求的数据格式。
数据样本的获取途径:
- kaggle:数据竞赛平台
- UCI数据集:是一个常用的机器学习标准测试数据集
- sklearn
特征工程
- 特征工程是将原始数据转换为更好的代表预测模型的潜在问题的特征的过程,从而提高对未知数据预测的准确性。
特征抽取
- 采集到的样本中的特征数据往往很多时候为字符串或者其它类型的数据,所以要进行转换。
特征值化
- 特征提取对文本等数据进行特征值化,特征值化为了让机器更好的理解数据。
One-Hot编码
编码的值就不会设计数值大小,优先级等问题
特征的预处理
对数值型的数据进行处理
无量纲化
将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布。
无量纲化可以加快求解速度,而在距离类模型中,譬如K近邻,K-Means聚类中,无量纲化可以帮我们提升模型精度,避免某一个取值范围特别大的特征对距离计算造成影响。
但是对于决策树和数的集成算法中,对决策树不需要无量纲化,决策树可以把任意数据处理得很好。
预处理就是用来实现无量纲化的方式。
方式:
- 归一化
- 标准化
归一化
如果认为每一个特征都同等重要,则必须进行归一化处理。
可以使用KNN的算法对特征影响进行说明。
归一化的实现:
特点:通过对原始数据进行变换把数据映射到默认为[0,1]之间
x’ = (x-min)/(max-min)
归一化后的数据服从正态分布/高斯分布。
在特定场景下最大值和最小值是变化的,并且最大值最小值很容易受到异常值影响,所以归一化有一定的局限性,需要用到标准化。
标准化
当数据按均值中心化后,再按标准差缩放,数据就会服从均值为0,方差为1的正态分布。
特征选择的原因:
- 冗余:部分特征的相关度高,容易消耗计算机的资源。例如楼层和高度对房价影响相似。
- 噪点:部分特征对预测结果有偏执影响。例如户主的身高、血型对房价影响不大。
特征选择工具:
- Filter(过滤式)
- Embeded(嵌入式):决策树模型会自己选择出对其重要的特征。
- PCA降维,使用了协方差矩阵。
Filter过滤式(方差过滤)
原理:这是通过特征本身的方差来筛选特征的类,比如一个特征本身的方差很小,这表示样本在这个特征上基本没有差异,可能特征中的大多数值都一样,甚至整个特征的取值相同,那这个特征对于样本区分没有什么作用。所以无论接下来的特征工程要做什么,都要优先消除方差为0或者方差较低的特征。
如果只想留下一半的特征,那么可以设定一个让特征总数减半的方差阈值,只要找到特征方差的中位数,再将这个中位数作为参数threshold的值输入就好了。
np.median(feature.var(axis=0))
PCA降维(主成分分析):是一种分析,简化数据集的技术,利用了协方差矩阵技术
用低维度数据表示高维度
分类算法基于的是目标数据为离散型数据
回归算法基于的是目标算法为连续型数据
KNN分类模型(K-近邻算法)
- K-近邻算法采用测量不同特征值之间的距离方法进行分类(k-Nearest Neighbor,KNN)
- K值不同会导致模型的分类不同
- 欧几里得距离
- 模型的超参数:如果模型超参数有不同的取值且对模型的分类或预测会产生直系的影响。
- 可以通过画学习线选择最优的K值
K折交叉验证
- 目的:选出最为适合的模型超参数的取值,然后将超参数的值作用到模型的创建中。
- 使用较差拆分出不同的训练集和测试集分别计算模型的精准度,然后求出的精准度的均值就是此次交叉验证的结果。将交叉验证作用到不同的超参数中,选取出精准度最高的超参数作为模型的超参数即可。
- 实现思路:将数据集平均分割成k个等份,使用一份数据作为测试数据,其余作为训练数据,
- 较差验证还可以帮助进行模型选择
线性回归