机器学习中的数据转换与特征工程
作者头像
  • 乌咪姐
  • 2020-05-10 14:39:01 4

机器学习快速入门指南

第11篇

欢迎订阅!

您的支持是我创作的最大动力!

在实际应用中,数据集中的变量不仅包括数值型变量,还可能包含类别型变量。例如,性别可能是“男”或“女”,安全级别可能是“高”、“中”或“低”。

计算机无法直接处理这些类别型变量,因此需要将其转换为数值型变量。常用的方法之一是使用独热编码(One-Hot Encoding)。

独热编码

独热编码是一种将分类变量转换为数值型变量的技术。具体而言,它将每个类别转换为一个独立的特征,从而实现从列到行的转换。例如,原始数据可能是这样的:

性别 男 女 男

经过独热编码后,数据会变成:

性别_男 性别_女 1 0 0 1 1 0

在Python中,可以通过两种方式实现独热编码。一种是在Pandas库中使用get_dummies函数;另一种是在Scikit-Learn库中使用OneHotEncoder。

需要注意的是,即使某些变量是数字形式,但如果它们代表的是分类信息,则只能使用OneHotEncoder。

线性模型中的特征工程

对于线性模型,有时需要手动添加特征以提高模型的准确性。添加特征主要有两种方式:一是添加交互特征,二是添加多项式特征。

在Scikit-Learn中,主要使用PolynomialFeatures来添加多项式特征。这里以波士顿房价数据集为例进行说明。

首先,导入所需的库:

python from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler from sklearn.preprocessing import PolynomialFeatures

接下来,将数据集划分为训练集和测试集:

python boston = load_boston() X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target)

然后,将数据缩放到0-1之间:

python scaler = MinMaxScaler() X_train_scaled = scaler.fit_transform(X_train)

最后,使用多项式特征添加器:

python features = PolynomialFeatures(degree=2) features.fit(X_train_scaled) X_train_poly = features.transform(X_train_scaled)

观察原始数据特征数量:

```python Xtrainscaled.shape

(379, 13)

```

添加多项式特征后的特征数量:

```python Xtrainpoly.shape

(379, 105)

```

可以看到,添加多项式特征后,特征数量显著增加到105个。这有助于提高线性模型的拟合精度。

希望以上内容对您有所帮助,如果有任何疑问,欢迎随时联系我,谢谢支持!

    本文来源:图灵汇
责任编辑: : 乌咪姐
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
特征转换机器数据工程学习
    下一篇