1、数据预处理与特征工程
- 数据挖掘的5大流程:
- 获取数据
- 数据预处理
数据预处理是从数据中检测、纠正或删除损坏、不准确或不适用于模型记录的过程。
可能问题:数据类型不同,比如有的是文字,有的是数字,有的含时间序列,有的连续,有的间断;也可能,数据质量不行,有噪声,有异常,有缺失,数据出错,量纲不一,有重复,数据是偏态,数据量太大或太小。
数据预处理的目的:让数据适应模型,匹配模型的需求。
3.特征工程
特征工程:是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取特征以及创造特征来实现。创造特征:降维算法实现。
可能问题:特征之间有相关性,特征和标签无关,特征太多或太小,或无法表现出应有的数据现象或数据真实面貌。
特征工程的目的:降低计算成本;提升模型上限;
4. 建模,测试模型并预测结果
5. 上线,验证模型效果
- sklearn中数据预处理和特征工程模块:
(1)模块preprocessing:数据预处理
(2)模块Impute:填补缺失值专用
(3)模块feature_selection:特征选择
(4)模块decomposition:降维
2、数据预处理preprocessing & Impute
2.1 数据无量纲化
数据的无量纲化包括中心化(Zero_centered或Mean-subtraction)处理和缩放处理Scale。中心化的本质是让所有记录减去一个固定值,即让样本数据平移到某个位置,缩放本质是除以一个固定值,降数据固定在某个范围内,取对数也是一种缩放处理。
(1)数据归一化(Normalization或Min-Max Scaling):preprocessing.MinMaxScaler
归一化后的数据服从正态分布:
class sklearn.preprocessing.MinMaxScaler(feature_range=(0, 1), *, copy=True)[source]
最小值、最大值= feature_range
import pandas as pd
from sklearn.preprocessing import MinMAXScaler
>>> data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
>>> scaler = MinMaxScaler()
>>> print(scaler.fit(data)) # fit 计算用于以后缩放的最小值和最大值
MinMaxScaler()
>>> print(scaler.data_max_)
[ 1. 18.]
>>> print(scaler.transform(data)) # transform根据feature_range缩放X
[[0. 0. ]
[0.25 0.25]
[0.5 0.5 ]
[1. 1. ]]
>>> print(scaler.transform([[2, 2]]))
[[1.5 0. ]]
# inverse_transform() 根据feature_range 撤销X的缩放比例
result_ = scaler.fit_transform(data) #训练和导出结果一步达成
scaler.inverse_transform(result) #将归一化后的结果逆转
#使用MinMaxScaler的参数feature_range实现将数据归一化到[0,1]以外的范围中
data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]]
scaler = MinMaxScaler(feature_range=[5,10]) #实例化
r