sklearn preprocessing 数据预处理(OneHotEncoder)
程序员文章站
2022-07-13 08:07:16
...
0. StandardScaler
去均值时,在测试集上进行预测时减去的均值是训练集上得到的均值;
import sklearn.preprocessing as prepdef standard_scale(X_train, X_test): preprocessor = prep.StandardScaler().fit(X_train) X_train = preprocessor.transform(X_train) X_test = preprocessor.transform(X_test) return X_train, X_test
- 1
- 2
- 3
- 4
- 5
- 6
- 7
1. one hot encoder
<a href=“http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html”, target="_blank">sklearn.preprocessing.OneHotEncoder
one hot encoder 不仅对 label 可以进行编码,还可对 categorical feature 进行编码:
>>> from sklearn.preprocessing import OneHotEncoder>>> enc = OneHotEncoder()>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]) >>> enc.n_values_array([2, 3, 4])>>> enc.feature_indices_array([0, 2, 5, 9])>>> enc.transform([[0, 1, 1]]).toarray()array([[ 1., 0., 0., 1., 0., 0., 1., 0., 0.]])
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
为 OneHotEncoder 类传递进来的数据集:
[[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]
- 1
- 2
- 3
- 4
每一列代表一个属性,fit 操作之后:
- 对象
enc
的n_values_
成员变量,记录着每一个属性的最大取值数目,如本例第一个属性:0, 1, 0, 1
⇒ 2,0, 1, 2, 0
⇒ 3,3, 0, 1, 2
⇒4
;- 即各个属性(feature)在 one hot 编码下占据的位数;
- 对象
enc
的feature_indices_
,则记录着属性在新 One hot 编码下的索引位置,- feature_indices_ 是对 n_values_ 的累积值,不过 feature_indices 的首位是 0;
进一步通过 fit 好的 one hot encoder 对新来的特征向量进行编码:
>>> enc.transform([[0, 1, 1]]).toarray()array([[ 1., 0., 0., 1., 0., 0., 1., 0., 0.]])
- 1
- 2
- 前 2 位 1, 0,对 0 进行编码
- 中间 3 位 0, 1, 0 对 1 进行编码;
- 末尾 4 位 0, 1, 0, 0 对 1 进行编码;
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
推荐阅读
-
python机器学习库sklearn之数据预处理讲解
-
sklearn数据特征预处理:归一化和标准化
-
关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
-
关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
-
sklearn.preprocessing数据预处理 归一化/标准化/正则化
-
100 Days Of ML Code:Day1-Data Preprocessing(数据预处理)
-
sklearn——数据预处理
-
sklearn.preprocessing.OneHotEncoder
-
使用sklearn进行数据预处理之Binarizer,LabelEncoder,LabelBinarizer,OneHotEncoder
-
sklearn preprocessing 数据预处理(OneHotEncoder)