归一化:
from sklearn.preprocessing import MinMaxScaler import pandas as pd def minmax_demo(): """ 归一化 :return: """ # 1、获取数据 data = pd.read_csv(r"D:/machine learning/dating") data = data.iloc[:, :3] print("data:\n", data) # 2、实例化一个转换器类 transfer = MinMaxScaler(feature_range=[0, 1]) # 3、调用fit_transform data_new = transfer.fit_transform(data) print("data_new:\n", data_new) return None
注意最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。解决方案如下:
标准化
通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内;
from sklearn.preprocessing import StandardScaler import pandas as pd def stand_demo(): """ 标准化 :return: """ # 1、获取数据 data = pd.read_csv("dating.txt") data = data.iloc[:, :3] print("data:\n", data) # 2、实例化一个转换器类 transfer = StandardScaler() # 3、调用fit_transform data_new = transfer.fit_transform(data) print("data_new:\n", data_new) return None
在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
原文:https://www.cnblogs.com/sima-3/p/14809628.html