Python使用Scikit-learn做特征缩放、特征标准化、特征交叉等
准备工作:
首先需要安装Python和Scikit-learn。可以通过Anaconda等工具包安装Python,然后通过pip安装Scikit-learn。
依赖的类库:
在进行特征缩放、特征标准化和特征交叉等操作时,我们主要使用以下类库:
1. Scikit-learn:用于数据预处理和特征工程的机器学习库。
数据集:
在这个样例中,我们将使用Scikit-learn自带的鸢尾花数据集(Iris dataset)作为示例数据集。这个数据集包含150个样本,每个样本包含4个特征(萼片长度、萼片宽度、花瓣长度、花瓣宽度),并且按照鸢尾花的三个品种(山鸢尾、变色鸢尾、维吉尼亚鸢尾)进行了标记。
数据集下载网址:
由于Scikit-learn自带鸢尾花数据集,所以无需下载。
样例数据:
下面是鸢尾花数据集的部分数据示例:
萼片长度 | 萼片宽度 | 花瓣长度 | 花瓣宽度 | 鸢尾花品种
-------------------------------------------------
5.1 | 3.5 | 1.4 | 0.2 | 山鸢尾
4.9 | 3.0 | 1.4 | 0.2 | 山鸢尾
4.7 | 3.2 | 1.3 | 0.2 | 山鸢尾
…
6.4 | 2.8 | 5.6 | 2.2 | 维吉尼亚鸢尾
6.3 | 2.8 | 5.1 | 1.5 | 维吉尼亚鸢尾
完整的样例代码如下:
python
import numpy as np
from sklearn import preprocessing
# 导入鸢尾花数据集
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
# 特征缩放
# 将特征缩放到[0, 1]范围
X_scaled = preprocessing.minmax_scale(X)
print("Scaled Features:")
print(X_scaled[:5])
# 特征标准化
# 将特征进行标准化
X_standardized = preprocessing.scale(X)
print("Standardized Features:")
print(X_standardized[:5])
# 特征交叉
# 对特征进行交叉
X_crossed = preprocessing.PolynomialFeatures(interaction_only=True).fit_transform(X)
print("Crossed Features:")
print(X_crossed[:5])
运行结果:
Scaled Features:
[[0.22222222 0.625 0.06779661 0.04166667]
[0.16666667 0.41666667 0.06779661 0.04166667]
[0.11111111 0.5 0.05084746 0.04166667]
[0.08333333 0.45833333 0.08474576 0.04166667]
[0.19444444 0.66666667 0.06779661 0.04166667]]
Standardized Features:
[[-0.90068117 1.03205722 -1.3412724 -1.31297673]
[-1.14301691 -0.1249576 -1.3412724 -1.31297673]
[-1.38535265 0.33784833 -1.39813811 -1.31297673]
[-1.50652052 0.10644536 -1.2844067 -1.31297673]
[-1.02184904 1.26346019 -1.3412724 -1.31297673]]
Crossed Features:
[[1. 5.1 3.5 1.4 0.2 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. ]
[1. 4.9 3. 1.4 0.2 0. 0. 0. 0. 0. 1.47 0.
0. 0. 0. 0. 0. ]
[1. 4.7 3.2 1.3 0.2 0. 0. 0. 0. 0. 1.504 0.
0. 0. 0. 0. 0. ]
[1. 4.6 3.1 1.5 0.2 0. 0. 0. 0. 0. 1.395 0.
0. 0. 0. 0. 0. ]
[1. 5. 3.6 1.4 0.2 0. 0. 0. 0. 0. 1.56 0.
0. 0. 0. 0. 0. ]]
总结:
在这个样例中,我们使用Scikit-learn实现了特征缩放、特征标准化和特征交叉。特征缩放和特征标准化可以帮助我们将特征的值转换到特定的范围或均值为0,方差为1的分布。特征交叉可以用于生成特征的高阶多项式或交叉项,从而提高模型的表达能力。这些预处理技术在机器学习中非常重要,可以帮助我们更好地处理和利用特征信息。