使用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.]]
这些方法可以根据不同的数据类型和需求灵活选择和使用,有助于提取特征并改善模型的性能。
