Day 42: 归一化,标准化,处理缺失值

Python 回忆录

  • 2021/1/24
    • 特征预处理
      • 归一化
        • 特点
        • MinMaxScaler
        • 归一化总结
      • 标准化
        • 特点
        • StandarScaler
        • 标准化总结
      • 如何处理缺失值
        • Imputer

2021/1/24

特征预处理

Day 42: 归一化,标准化,处理缺失值_第1张图片
其实就是把得到的数据样本,特征数据转换算法可用的数据。

  • 对于数值型数据,用到两大方法来预处理 : 1.归一化,2.标准化。还有缺失值的预处理
  • 对于类别型数据, 用one-hot编码来预处理
  • 对于时间类型数据,用时间切分方法来预处理

归一化

sklearn的预处理APIsklearn.preprocessing所有预处理方法都在这个模块里面

特点

通过对原始数据变化,映射到默认的[0,1]这个区间
Day 42: 归一化,标准化,处理缺失值_第2张图片
数据变化后最终的数字是X"

目的是为了某一个特征不会对最终结果造成更大影响

MinMaxScaler

MinMaxScaler(feature_range = (0,1)...): 每个特征会缩放到指定范围(默认[0,1])

-MinMaxScaler.fit_transform(x): X:numpy array格式的数据[n_samples,n_features]. 返回一个转换后相同形状的array

归一化总结

在特定场景下最大值和最小值 很容易受到异常点的影响,所以这种归一化的鲁棒性(反应产品稳定的词)较差,只适合传统精确小数据场景(平常应用中很少有这样的场景,所以也很少用归一化)。

标准化

特点

通过对原始数据进行变换把数据变换到均值为0,标准差为1的范围内。
Day 42: 归一化,标准化,处理缺失值_第3张图片

目的也是为了某一个特征数据不会对最终结果造成更大的影响。

StandarScaler

标准化的APIsclkit-learn.preprocessing.StandardScaler
处理之后所有数据都聚集在均值为0附近标准差为1

  • StandardScaler.fit_transform(x)X:numpy array格式数据,返回一个转换后相同形状的array
  • StandardScaler.mean_原始数据中每列特征的平均值
  • StandardScaler.std_原始数据每列特征的方差
from sklearn.preprocessing import MinMaxScaler,StandarScaler

def ss():
	std = StandarScaler()
	data = std.fit_transform([[1,-1,3],[2,4,2],[4,6,-2]])
	print(data)

if __name__ == "__main__":
	ss()

输出
Day 42: 归一化,标准化,处理缺失值_第4张图片

标准化总结

相对于归一化来说,标准化可以有少量异常特征。在已有样本足够多的情况下很稳定,适合大数据场景

如何处理缺失值

一般用pandas处理缺失值,sklearn也提供了方法,但是没有必要。

  1. 删除:如果一行或者一列的数据缺失达到一个比例,建议直接删除整行或者整列。但是如果数据本来就不是很多,删除后数据变得更少了,就不选择删除。
  2. 插补:用每行或者每列的平均数或者中位数进行填补。一般建议按列填补(因为这样是同一个特征,所以数据意义相同)

pandas: dropna,fillna时 空缺的数值必须是np.nan的格式。所以要用replace(“?”,np.nan)先把数据转换一下。

Imputer

imputer(missing_values='NaN',strategy='mean',axis='0'):完成缺失值的插补

  • imputer.fit_transform(X)X:numpy array格式数据,返回一个转换后相同形状的array
from sklearn.preprocessing import imputer
import numpy #下面有np.nan格式的缺失值

def im():
	#NaN, nan 都可以
	im = Imputer(missing_value='NaN',strategy='mean',axis='0')
	data= im.fit_transform([[1,2],[np.nan,3],[7,6]])
	return None

if __name__ == "__main__":
	im()

#今天感谢妈sir让我来到这个世界感受这么多的美好,希望在新的一岁里成家立业,学习更多的知识。

你可能感兴趣的:(学习记录,学习成长,学习笔记,python,大数据,机器学习,数据分析)