一、均值移除
- 均值移除是一种数据标准化的方法,它通过从每个数据点中减去该数据集的均值来使数据集中化。
import numpy as np import sklearn.preprocessing as sp#使用scale() #均值移除 让每一列的平均为0,标准差为1 raw_samples = np.array([[17.,100.,4000.],[20.,80.,5000.],[23.,75.,5500.]]) std_samples = sp.scale(raw_samples) print(std_samples) print(std_samples.mean(axis=0)) #每一列均值 print(std_samples.std(axis=0)) #每一列标准差#范围缩放,每列最大值为1,最小最为0,其他的等比例缩放。 raw_samples = np.array([[17.,100.,4000.],[20.,80.,5000.],[23.,75.,5500.]]) mms = sp.MinMaxScaler(feature_range=(0,1)) #缩放到(0,1)之间 result = mms.fit_transform(raw_samples) print(result)
二、二值化
- 二值化是一种将特征或标签转换为二进制形式的过程。具体来说,就是将数值型数据转换为只有两个可能取值的形式,通常是0和1。这个过程可以帮助简化模型的计算复杂度,提高模型的训练速度和预测性能。
import numpy as np import sklearn.preprocessing as sp raw_samples = np.array([[17.,100.,4000.],[20.,80.,5000.],[23.,75.,5500.]]) #二值化 bin = sp.Binarizer(threshold=80) #大于80转化为1,小于等于转为0 bin_sample = bin.transform(raw_samples) print(bin_sample)
三、归一化
- 归一化(Normalization)是将数据转换为统一的标准或范围的过程。
-
L1范数(L1 Norm):也称为曼哈顿距离(Manhattan Distance),它是向量中各个元素的绝对值之和。对于向量x = [x1, x2, ..., xn],其L1范数定义为:||x||1 = |x1| + |x2| + ... + |xn|。
-
L2范数(L2 Norm):也称为欧几里得范数(Euclidean Norm),它是向量中各个元素的平方和的平方根。对于向量x = [x1, x2, ..., xn],其L2范数定义为:||x||2 = sqrt(x1^2 + x2^2 + ... + xn^2)。
import numpy as np import sklearn.preprocessing as spdata = np.array([[20,10,5],[4,2,1],[15,11,13]]) r= sp.normalize(data,norm='l1') #l1范数 print(r) print(np.abs(r).sum(axis=1)) r= sp.normalize(data,norm='l2') #l1范数 print(r) print((np.abs(r)**2).sum(axis=1)) #平方和为1
四、独热编码
- 独热编码(One-Hot Encoding)是一种将分类变量转换为二进制向量的方法。
- 假设有一个特征列,其中包含三个不同的类别:A、B和C。独热编码会为每个类别创建一个二进制向量,其中只有一个元素为1,其余元素为0。对于类别A,独热编码的结果可能是[1, 0, 0];对于类别B,结果可能是[0, 1, 0];对于类别C,结果可能是[0, 0, 1]。这样,原始的分类变量就被转换成了一个长度等于类别数量的向量。
import numpy as np import sklearn.preprocessing as sp #独热编码 #创建一个热编码器 #sparse 是否使用紧缩格式(稀疏矩阵) #dtyle 数据类型 data = np.array([[1,3,2],[7,5,4],[1,8,6],[7,3,9]]) ohe = sp.OneHotEncoder() r = ohe.fit_transform(data) # 稀疏矩阵 print(r.toarray()) #转为数组