特征处理
标准化
#数据标准化是将数据按比例缩放,使其落入到一个小的区间内,标准化后的数据可正可负,但是一般绝对值不会太大,一般是z-score标准化方法:减去期望后除以标准差。 from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import MinMaxScaler from matplotlib import gridspec import numpy as np import matplotlib.pyplot as plt cps = np.random.random_integers(0, 100, (100, 2)) #随机生成数值在0-100间100*2的矩阵 ss = StandardScaler() #标准化类 std_cps = ss.fit_transform(cps) #不仅计算训练数据的均值和方差,还会基于计算出来的均值和方差来转换训练数据,从而把数据转换成标准的正太分布 gs = gridspec.GridSpec(5,5) #生成5行5列的gs fig = plt.figure() #创建图像 ax1 = fig.add_subplot(gs[0:2, 1:4]) #创建子图像 ax2 = fig.add_subplot(gs[3:5, 1:4]) #创建子图像 ax1.scatter(cps[:, 0], cps[:, 1]) #填充数据 ax2.scatter(std_cps[:, 0], std_cps[:, 1]) #填充数据 plt.show()
归一化
#把数值放缩到0到1的小区间中(归到数字信号处理范畴之内),一般方法是最小最大规范的方法:min-max normalization from sklearn.preprocessing import MinMaxScaler import numpy as np data = np.random.uniform(0, 100, 10)[:, np.newaxis] #生成0-100以内的10个数组成10行一列的矩阵 mm = MinMaxScaler() #归一化对象 mm_data = mm.fit_transform(data) #归一化data origin_data = mm.inverse_transform(mm_data) #转换回来 print('data is ',data) #打印 print('after Min Max ',mm_data) #打印 print('origin data is ',origin_data) #打印
正则化
X = [[1, -1, 2], [2, 0, 0], [0, 1, -1]] # 使用L2正则化 from sklearn.preprocessing import normalize l2 = normalize(X, norm='l2') print('l2:', l2) # 使用L1正则化 from sklearn.preprocessing import Normalizer normalizerl1 = Normalizer(norm='l1') l1 = normalizerl1.fit_transform(X) print('l1:', l1)