机器学习使用样本数据集训练模型:
- 如果数据集出现问题,那么训练结果也会出现问题(garbage in, garbage out.);
- 通常需要对数据集进行检查,对有问题的数据集进行预处理;
举例:
```
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
house = pd.read_csv('data\boston.csv')
print(house.shape)
```
数据项说明
- CRIM:城镇人均犯罪率;
- ZN:住宅用地超过25000的比例;
- INDUS:城镇非零售商用土地的比例;
- CHAS:查理斯河空变量(如果边界是河流,则为1;否则为0);
- NOX:一氧化氮浓度;
- RM:住宅平均房间数;
- AGE:1940年之前建成的自用房屋比例;
- DIS:到波士顿五个中心区域的加权距离;
- RAD:辐射性公路的接近指数;
- TAX:每10000美元的全值财产税率;
- PTRATIO:城镇师生比例;
- B:1000(Bk-0.63)^ 2,其中 Bk 指代城镇中黑人的比例;
- LSTAT:人口中地位低下者的比例;
- MEDV:自住房的平均房价,以千美元为单位;
- 预期结果:
- 无缺失值、重复值;、
- 所包含的特征项都是经过相关性分析筛选出来的,此外还有预测目标;
- 非数值型特征使用独热编码;
- 数值型特征经过标准化处理;
- drop:参考pandas部分笔记
- fill:参考pandas部分笔记
- df.fillna(method=“ffill”) 填充相邻的数据;
- interpolate;插入值
- 举例
根据前后数据,线性填充缺失数据;df = df.interpolate(method='linear')
- 举例
重复的样本数据,没有处理意义;
df.drop_duplicates()
特征选择
- 原则:
- 特征应尽量选择与目标线性相关,否则属于无用特征;
- 各特征项之间应当尽量不相关,否则属于冗余特征;
- 使用皮尔逊相关系数作为统计指标:
- 系数:
- 如果系数大于零:两个随机变量正相关(同增同减);
- 如果系数小于零,表示负相关;
- 系数等于零表示系数不相关;
- 相关系数绝对值越大则相关程度越大;
- 计算公式
ρ = Cov(X,Y)/σ_x * σ_y- Cov(X,Y)为X与Y的协方差,分母为X、Y的标准差;
- pandas中使用
可计算各个特征项之间的相关系数;df.corr(method='pearson')
- 系数:
- 筛选后得到的特征项重新构成新数据集;
- 布尔型特征:
- 对于二元性特征(是否、有无、男女)可转换为0-1编码;
- pandas中的series类的map()方法可以将二元特征映射为布尔型;
- 离散型类别特征:
- 比如:籍贯(北京、上海、山东……)、颜色(红、绿、蓝……)
- 当按顺序使用整数进行编码时会将本来无序的序列变成有序序列,可能会对后续机器学习造成干扰;
- 将其分解成n个0-1形式的数据;
- 独热编码(one-hot):是否北京、是否上海、是否山东……
尽量消除量纲、同一不同特征项的取值范围,这就是数据标准化(缩放);
- 取值范围不同的原因:
- 数据集不同特征项之间的取值范围可能存在较大差异;
- 不同量纲也会到取值范围;
- 取值范围不同造成的影响:
- 取值范围的差异会造成特征项之间的不平等;
- 常用方法:调用sklearn.preprocessing模块
- Min-Max标准化
min = min_x_i , max = max_x_i
m_i = (x_i - min)/(max - min)
此时m_i∈[0, 1]- sklearn库中的preprocessing.MinMaxScaler模块;
mmScaler = MinMaxScaler() m = mmScaler.transform(df)["X", "Y"] new_df = pd.dataframe(m, columns=["X", "Y"])
- sklearn库中的preprocessing.MinMaxScaler模块;
- Z-score标准化:
将数据转化为Z分数;
对原始数据实施了去中心化(使均值为0)和归一化(使方差为1)- 首先计算样本点的均值μ_x和方差σ_x;
- 使用公式:z_i = (x_i - μ_x)/σ_x
- sklearn库中的preprocessing.StandardScaler模块:
zScaler = StandardScaler() z = mmScaler.transform(df)["X", "Y"] new_df = pd.dataframe(m, columns=["X", "Y"])
- Min-Max标准化
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)