本文主要包含两大部分,第1部分为对特征数据的变换,尤其对复杂度较低的模型,例如线性模型非常有用,第2部分为特征选择。
文章目录
对于某个特定应用来说,如何找到最佳数据表示,这个问题被称为特征工程(feature engineering),它是数据科学家和机器学习从业者在尝试解决现实世界问题时的主要任务之一。
特征类型 | 英文名 | 别名 | 英文名 |
---|---|---|---|
数值特征 | numerical feature | 连续特征 | continuous feature |
分类特征 | categorical feature | 离散特征 | discrete feature |
用正确的方式表示数据,对监督模型性能的影响比所选择的精确参数还要大。
一、分类变量
1.1 One-Hot编码(虚拟变量)
编码方式 | 英文名 | 别名1 | 别名2 |
---|---|---|---|
one-hot 编码 | one-hot-encoding | N 取一编码(one-out-of-N encoding) | 虚拟变量(dummy variable) |
虚拟变量背后的思想是将一个分类变量替换为一个或多个新特征,新特征取值为 0 和 1。
1.2 数字编码的分类变量如何处理?
pandas 的 get_dummies 函数将所有数字看作是连续的,不会为其创建虚拟变量。
为了解决这个问题,可以使用 scikit-learn 的 OneHotEncoder,指定哪些变量是连续的、哪些变量是离散的,你也可以将数据框中的数值列转换为字符串。
- 方法一:使用 pd.get_dummies() 显示给出要编码的列
demo_df = pd.DataFrame({
'Integer Feature': [0, 1, 2, 1],'Categorical Feature': ['socks', 'fox', 'socks', 'box']})
demo_df['Integer Feature'] = demo_df['Integer Feature'].astype(str)
pd.get_dummies