数据挖掘实战
特征工程
数据处理
Data vs Feature
- 列:特征
从原始数据中提取特征供算法和模型使用
- 特征越好,灵活性越强
- 特征越好,模型越简单
- 特征越好,性能越出色
特征工程:
- 数据处理
- 统一量纲:标准化,归一化
- 虚拟变量
- 缺失值填充
- 特征选择
- 维度压缩
0-1标准化
线性变化,$\frac{x-min}{max-min}$
Z标准化
均值和标准差进行数据的标准化,$\frac{x-\overline{x}}{\Sigma_i(x_i-\overline{x})^2}$
Normalizer归一化
单位范数,$\frac{x}{\Sigma_i(x_i)^2}$
虚拟变量
哑变量转换,get_dummies
缺失值
原因
- 无法获取
- 遗漏
- 处理错误
解决办法
- 数据补齐
- 删除缺失行
- 不处理
特征选择
- 是否发散
即看变量是否有区分度,通过方差选择。[选择方差大于阈值]
- 是否相关
考察特征值与目标值的相关系数
- 递归特征消除法
进行多轮训练,保留指定的特征数
- 模型选择法 (有待深入了解原理)
建好的模型对象传入选择器,根据建好的模型,自动选择最好的特征值
维度压缩
- 主成分分析 Principal Components Analysis
PCA API
from sklearn.decomposition import PCA
聚类
- 聚类分析:无监督学习,无分类目标变量
按照个体特征进行分类,同一类别的个体之间具有较高的相似度
指标
- Q型聚类,样本、聚类
距离:欧氏距离,欧式平方距离,马氏距离etc
- R型聚类,指标、变量
相似系数:皮尔逊相关系数、夹角余弦、指数相似系数etc
常用方法
- K-Means
- DBSCAN密度
- 层次聚类
K-Means
利用均值把数据分成K类
- K类
- Means均值
目标:把N个样本点划分到K类中,是的每个点都属于它最近的质心对应的类
sklearn.cluster.Kmeans(n_clusters=8)
fit(data)
preict(data)#课程中未介绍,后续加深了解
DBSCAN密度
Density-Based Spatial Clustering of Application with Noise
- 密度
- 领域(指相邻的点?)
- 核心点
- 边界点
- 噪声点
model=sklearn.cluster.DBSCAN(eps, min_samples)
model.fit_predict(data)
层次聚类
Hierarchical Clustering
树聚类,层次架构反复聚合
linkage = scipy.cluster.hierarchy.linkage(data,method='single')
# single/complete/centroid
scipy.cluster.hierarchy.dendrogram(linkage)
scipy.cluster.hierarchy.fcluster(linkage,n,criterion='maxclust')