欢迎访问宙启技术站
智能推送

使用sklearn.preprocessing进行特征抽取的方法

发布时间:2023-12-22 23:51:19

sklearn.preprocessing中提供了一些常用的特征抽取方法,包括标准化、归一化、二值化、one-hot编码等。

1. 标准化(Standardization)

标准化可以帮助我们将数据集的特征按照均值为0,方差为1的正态分布进行转换。这对于很多算法来说是必要的,因为如果特征的值变化范围很大,可能会导致某些特征对模型的影响过大。

例子:

from sklearn import preprocessing
import numpy as np

# 创建样本数据
data = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])

# 标准化数据集
standardized_data = preprocessing.scale(data)
print(standardized_data)

输出:

[[-1.22474487 -1.22474487 -1.22474487]
 [ 0.          0.          0.        ]
 [ 1.22474487  1.22474487  1.22474487]]

2. 归一化(Normalization)

归一化是将数据映射到一个固定范围内,通常是[0, 1]或[-1, 1]。归一化可以保留原始数据的比例关系,并且对小规模特征值的敏感度较低。

例子:

from sklearn import preprocessing
import numpy as np

# 创建样本数据
data = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])

# 归一化数据集
normalized_data = preprocessing.normalize(data, norm='l2')
print(normalized_data)

输出:

[[0.26726124 0.53452248 0.80178373]
 [0.45584231 0.56980288 0.68376346]
 [0.50257071 0.57436653 0.64616234]]

3. 二值化(Binarization)

二值化将数值特征转换为布尔特征,根据一个阈值将特征值映射为0或1。这对于某些模型来说可能更加适用,而不是使用连续的数值特征。

例子:

from sklearn import preprocessing
import numpy as np

# 创建样本数据
data = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])

# 二值化数据集
binarized_data = preprocessing.Binarizer(threshold=5).transform(data)
print(binarized_data)

输出:

[[0 0 0]
 [0 0 1]
 [1 1 1]]

4. one-hot编码(One-Hot Encoding)

One-Hot编码是将离散特征转换为机器学习算法可以使用的向量表示。每个类别表示为一个二进制向量,其中只有一个元素为1,其他为0。

例子:

from sklearn import preprocessing
import numpy as np

# 创建样本数据
data = np.array(['apple', 'banana', 'orange', 'apple', 'banana', 'orange'])

# One-Hot编码数据集
one_hot_encoded_data = preprocessing.OneHotEncoder().fit_transform(data.reshape(-1, 1)).toarray()
print(one_hot_encoded_data)

输出:

[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]
 [1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

这些方法可以根据不同的数据类型和需求灵活选择和使用,有助于提取特征并改善模型的性能。