在数据处理中,除了前面文章介绍过的非数值数据外,可能还有一些连续数值需要处理。比如年龄这个特性,如果按未成年和成年来划分,就是二值化,如果按少年、青年、中年、老年来划分,就是分箱。下面我们依然用泰坦尼克号的数据,来演示二值化和分箱。
import pandas as pd import numpy as np data = pd.read_csv('./datas/titanic.csv') data.dropna(subset=['Age'], inplace=True) data_1 = data.copy() data_2 = data.copy()
二值化
preprocessing.Binarizer:根据阈值将数据二值化,大于阈值的值映射为1,小于等于阈值的映射为0。默认阈值为0。
from sklearn.preprocessing import Binarizer Age = Binarizer(threshold=17.9).fit_transform(data_1['Age'].values.reshape(-1, 1)) print(np.unique(Age.flatten())) data_1['Age'] = Age print(data_1.head())
分箱
preprocessing.KBinsDiscretizer:将连续型变量划分为分类变量的类,能够将连续型变量排序后按顺序分箱后编码。
from sklearn.preprocessing import KBinsDiscretizer # ordinal-编码为整数,uniform-等宽分箱 est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform') Age = est.fit_transform(data_2['Age'].values.reshape(-1,1)) print(np.unique(Age.flatten())) # onehot为分箱后为哑变量 est = KBinsDiscretizer(n_bins=3, encode='onehot', strategy='uniform') Age = est.fit_transform(data_2['Age'].values.reshape(-1,1)) print(Age.toarray())
本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/266
- 上一篇:
- Sklearn特征独热编码OneHot
- 下一篇:
- Sklearn特征提取之方差过滤