数据等级
本书认为数据可以分为四大等级,分为是:定类、定序、定距、定比,其中定类和定序都是定性的数据,定距和定比是定量的数据。
定类是离散的、无序的,举例:人名、油漆名称、动物物种:猴子、马、牛等
定序是有序类别、可以比较的,举例:考试等级:Great、Good、Not bad、Bad等或 0 - 6 表示心情的好坏程度
定距是有数据意义的、但是做除法是没有意义的,比如温度
定比是连续的、存在有意义的绝对零点、可以做除法
特征增强
特征清洗是指调整已有的列和行,特征增强是指在数据集中删除和添加新的列;
这里会提到:
- 识别数据的缺失值
- 删除有害数据
- 输入(填充)缺失值
- 对数据进行归一化/标准化
- 构建新特征
- 手动或自动选择特征
- 特征转换(数据矩阵计算转换到不同的维度)
EDA exploratory data analysis
在接触数据的时候,需要做一次EDA,对数据有一个大致的了解,在Python中,常用的包是pandas、numpy、matplotlib、seaborn;导入所需包如下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
plt.style.use('fivethirtyeight')
这一步一般会包括基本的五数总括、数据分布等,简单的相关分析和方差分析,缺失值分布、每列数据类型等
缺失值处理
缺失值无外乎两个处理方式:1. 删除 2.填充
删除: dropna(), 删除比较粗暴,当缺失行数占比非常少,少到可以忽略的情况可以考虑;否则一般建议填充缺失值
填充缺失值
平均值: df[col].fillna(df[col].mean(),inplace=True)
或借助scikit-learn的preprocessing
from sklearn.preprocessing import Imputer
imputer = Imputer(strategy='mean')
col_names = df.columns
imputed_array = imputer.fit_tansform(df)
# 因为Imputer的输出不是dataframe而是np.ndarray,需要转换为dataframe
df_imputed = pd.DataFrame(imputed_array, columns=col_names)
扩展阅读 : 引入一下Imputer的方法
sklearn.preprocessing.Imputer(missing_values=‘NaN’, strategy=‘mean’, axis=0, verbose=0, copy=True)
- missing_values 指缺失值, 默认值NaN, 可以是整数或NaN(np.nan)
- strategy 替换策略, 值为mean、median、most_frequent, 分别的意思是列的均值、中位数、众数
- axis 轴数,默认axis=0代表列,axis=1代表行
- copy 是否复制 默认为True, 当copy是False时,直接将transform的结果替换到原来的dataframe中
归一化和标准化
当每个特征的均值、最小值、最大值和标准差差别很大时,对于某些量纲影响较大的机器学习模型来说,归一化操作能很好去处量纲带来的影响。
常用的归一化方法:❏ Z-Score标准化;❏ min-max标准化;❏ 行归一化。
Z-Score: