用sklearn.preprocessing做数据预处理(六)——非线性特征
有时候线性的特征并不能做出完美的图形,这时候我们会尝试非线性。比如,将特征进行多项式展开
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
x = np.arange(6).reshape(3,2)
x
[code]array([[0, 1], [2, 3], [4, 5]])
创建二次方的多项式,比如将两个特征 (X_1, X_2),它的平方展开式便转换成5个特征(1, X_1, X_2, X_1^2, X_1X_2, X_2^2).
poly = PolynomialFeatures(2)
poly.fit_transform(x)
[code]array([[ 1., 0., 1., 0., 0., 1.], [ 1., 2., 3., 4., 6., 9.], [ 1., 4., 5., 16., 20., 25.]])
也可以自定义选择只要保留特征相乘的项。 即将 (X_1, X_2, X_3) 转换成 (1, X_1, X_2, X_3, X_1X_2, X_1X_3, X_2X_3, X_1X_2X_3).
x = np.arange(9).reshape(3,3)
x
[code]array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
poly = PolynomialFeatures(degree=3, interaction_only=True)
poly.fit_transform(x)
[code]array([[ 1., 0., 1., 2., 0., 0., 2., 0.], [ 1., 3., 4., 5., 12., 15., 20., 60.], [ 1., 6., 7., 8., 42., 48., 56., 336.]])
自定义特征的转换函数,通俗的讲就是将原始的特征放进一个函数做转换,这个函数出来的值作为新的特征,比如对数log转换、倒数转换等,FunctionTransFormer可以实现这个功能。
import numpy as np
from sklearn.preprocessing import FunctionTransformer
transformer = FunctionTransformer(np.log1p) # log1p := log(x+1),即ln(x+1)
x = np.array([[0,1],[2,3]])
x
[code]array([[0, 1], [2, 3]])
transformer.transform(x)
[code]array([[0. , 0.69314718], [1.09861229, 1.38629436]])
- 预处理数据的方法总结(使用sklearn-preprocessing)
- sklearn preprocessing data(数据预处理)
- 12.预处理数据的方法总结(使用sklearn-preprocessing)
- 机器学习中的数据预处理(sklearn preprocessing)
- 预处理数据的方法总结(使用sklearn-preprocessing)
- data-sklearn数据预处理 Preprocessing
- sklearn-数据预处理-特征变换
- 使用sklearn进行数据预处理 特征选择
- 数据预处理sklearn.preprocessing中,fit_transform()和transform()的区别?
- 从sklearn.preprocessing, sklearn.feature_selection学习特征工程之预处理
- sklearn-preprocessing预处理数据的方法
- sklearn中的数据预处理——标准化\最小-最大规范化\特征标签二值化\异常值\标签编码等
- 深度学习解决多视图非线性数据特征融合问题
- 【原】关于使用Sklearn进行数据预处理 —— 缺失值(Missing Value)处理
- 机器学习02-使用python中的sklearn库进行数据的预处理(数据的特征工程)
- 预处理 (补充) ---特征选择(sklearn实现)
- 数据预处理之特征标准化
- sklearn进行数据预处理-归一化/标准化/正则化
- [Sklearn应用3] Preprocessing data (三)编码分类特征 Encoding categorical features
- 【原】关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化