特征预处理
是指通过一些转换函数将特征数据转换成更加适合算法模型的特征数据的过程。
预处理包含的内容有:
归一化
标准化
归一化:
通过对原始数据进行变换把数据映射到(默认为[0,1]之间)
归一化的公式和实例:将x归一化为x''
代码:
#导入数据的归一化模块和标准化模块 from sklearn.preprocessing import MinMaxScaler,StandardScaler
#数据的归一化 def minmax_demo(): ''' 数据的归一化 :return: ''' #1 获取数据 data = pd.read_csv("dating.txt") #只要数据的前三列 data = data.iloc[:,:3] print(data) #2 实例化一个转换器类(可以设置归一化范围,如2--3) transfer = MinMaxScaler(feature_range=[2,3]) #3 调用fit_transform data_new = transfer.fit_transform(data) print('data_new:\n',data_new) return None
结果:
但是如果数据中的异常值是最大最小值,那么归一化的结果就会收到影响,所以归一化的鲁棒性较差,只适合传统精确小数据场景。
标准化:
通过对原始数据进行变换,把数据变换到均值为0,标准差为1的范围内。
公式:
x' = (x - mean) / a mean是平均值,a是标准差
对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变。
对于标准化来说: 如果出现异常点,由于具有一定的数据量,少量的异常点对于平均值的影响并不大,从而方差的改变较小。
代码:
#数据的标准化(消除最大最小值出现异常而影响了归一化的问题) def stand_demo(): ''' 数据的标准化 :return: ''' # 1 获取数据 data = pd.read_csv("dating.txt") # 只要数据的前三列 data = data.iloc[:, :3] print(data) # 2 实例化一个转换器类 transfer = StandardScaler() # 3 调用fit_transform data_new = transfer.fit_transform(data) print('data_new:\n', data_new) return None
结果:
数据的标准化在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据的场景。