美文网首页
scikit-learn机器学习:特征提取

scikit-learn机器学习:特征提取

作者: 简单一点点 | 来源:发表于2020-02-06 22:02 被阅读0次

从类别变量中提取特征

许多问题中的解释变量是类别变量或者名义变量,通常使用one-of-k编码算法或者one-hot编码算法进行编码,使用一个二进制特征表示解释变量的所有可能值。

假设有个city变量,取值包括:Beijing、Shanghai和Guangzhou。one-hot编码算法使用每个可能city的二元特征来表示变量。scikit-learn类库中的Dictvectorizer类是一个可以对类别特征进行one-hot编码的转换器。

from sklearn.feature_extraction import DictVectorizer
onehot_encoder = DictVectorizer()
X = [
    {'city': 'Beijing'},
    {'city': 'Shanghai'},
    {'city': 'Guangzhou'}
]
print(onehot_encoder.fit_transform(X).toarray())
[[1. 0. 0.]
 [0. 0. 1.]
 [0. 1. 0.]]

特征标准化

前面讲过,当学习算法使用标准化数据进行训练时会有更好的性能。标准化数据有零平均值和单位方差。

除了前面使用的StandardScaler转换器,proprocessing模块中的scale函数也可以用于单独对数据集的任何轴进行标准化。

from sklearn import preprocessing
import numpy as np

X = np.array([
    [0., 0., 5., 13., 9., 1.],
    [0., 0., 13., 15., 10., 15.],
    [0., 3., 15., 2., 0., 11.]
])
print(preprocessing.scale(X))
[[ 0.         -0.70710678 -1.38873015  0.52489066  0.59299945 -1.35873244]
 [ 0.         -0.70710678  0.46291005  0.87481777  0.81537425  1.01904933]
 [ 0.          1.41421356  0.9258201  -1.39970842 -1.4083737   0.33968311]]

另外,除了StandardScaler还可以选择RobustScaler,它对与异常值具有更好的鲁棒性,StandardScaler会从每个实例值上减去特征均值,然后除以特征的标准差。为了减轻异常值的影响,RobustScaler会减去中位数,然后除以四分位差。

从文本中提取特征

待补充

从图像中提取特征

待补充

相关文章

网友评论

      本文标题:scikit-learn机器学习:特征提取

      本文链接:https://www.haomeiwen.com/subject/mohpxhtx.html