特征工程学习01-sklearn单机特征工程

Posted 好奇不止,探索不息

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特征工程学习01-sklearn单机特征工程相关的知识,希望对你有一定的参考价值。

特征工程学习01-sklearn单机特征工程

0.数据的导入

  1. from sklearn.datasets import load_iris 
  2.  
  3. #导入IRIS数据集 
  4. iris=load_iris() 
  5.  
  6. #特征矩阵 
  7. print(iris.data[:5],len(iris.data)) 
  8.  
  9. #目标向量 
  10. print(iris.target[:5],len(iris.target)) 
  1. [[ 5.1 3.5 1.4 0.2] 
  2. [ 4.9 3. 1.4 0.2] 
  3. [ 4.7 3.2 1.3 0.2] 
  4. [ 4.6 3.1 1.5 0.2] 
  5. [ 5. 3.6 1.4 0.2]] 150 
  6. [0 0 0 0 0] 150 

1.数据预处理

1.1无量纲化

1.1.1标准化

  1. from sklearn.preprocessing import StandardScaler 
  2.  
  3. #标准化,返回值为标准化后的值 
  4. iris_standar=StandardScaler().fit_transform(iris.data) 
  5. print(iris_standar[:5]) 
  1. [[-0.90068117 1.03205722 -1.3412724 -1.31297673] 
  2. [-1.14301691 -0.1249576 -1.3412724 -1.31297673] 
  3. [-1.38535265 0.33784833 -1.39813811 -1.31297673] 
  4. [-1.50652052 0.10644536 -1.2844067 -1.31297673] 
  5. [-1.02184904 1.26346019 -1.3412724 -1.31297673]] 

1.1.2区间缩放

  1. from sklearn.preprocessing import MinMaxScaler 
  2.  
  3. # 区间缩放,返回值为已经缩放到[0,1]的值 
  4. iris_minmax=MinMaxScaler().fit_transform(iris.data) 
  5. print(iris_minmax[:5]) 
  1. [[ 0.22222222 0.625 0.06779661 0.04166667] 
  2. [ 0.16666667 0.41666667 0.06779661 0.04166667] 
  3. [ 0.11111111 0.5 0.05084746 0.04166667] 
  4. [ 0.08333333 0.45833333 0.08474576 0.04166667] 
  5. [ 0.19444444 0.66666667 0.06779661 0.04166667]] 

1.2对定量特征进行二值化

  1. from sklearn.preprocessing import Binarizer 
  2.  
  3. #二值化,分界线设置为3,返回二值化后的特征 
  4. iris_binarizer=Binarizer(threshold=3).fit_transform(iris.data) 
  5. print(iris_binarizer[:5]) 
  1. [[ 1. 1. 0. 0.] 
  2. [ 1. 0. 0. 0.] 
  3. [ 1. 1. 0. 0.] 
  4. [ 1. 1. 0. 0.] 
  5. [ 1. 1. 0. 0.]] 

1.3对定性特征进行哑编码

  1. from sklearn.preprocessing import OneHotEncoder 
  2.  
  3. # 哑编码,对iris的目标集进行哑编码,返回编码后的值 
  4. iris_onehotencoder=OneHotEncoder().fit_transform(iris.target.reshape((-1,1))) 
  5. print(iris.target[-5:]) 
  6. print(iris.target.reshape((-1,1))[-5:]) 
  7. print(iris_onehotencoder[-5:]) 
  1. [2 2 2 2 2] 
  2. [[2] 
  3. [2] 
  4. [2] 
  5. [2] 
  6. [2]] 
  7. (0, 2) 1.0 
  8. (1, 2) 1.0 
  9. (2, 2) 1.0 
  10. (3, 2) 1.0 
  11. (4, 2) 1.0 

1.4缺失值计算

  1. from numpy import vstack, array, nan 
  2. from sklearn.preprocessing import Imputer 
  3.  
  4. #缺失值计算,返回值为计算缺失值后的数据 
  5. #参数missing_value为缺失值的表示形式,默认为NaN 
  6. #参数strategy为缺失值填充方式,默认为mean(均值) 
  7. iris_imputer=Imputer().fit_transform(vstack((array([nan, nan, nan, nan]), iris.data))) 
  8. print(iris_imputer[:5],len(iris_imputer)) 
  1. [[ 5.84333333 3.054 3.75866667 1.19866667] 
  2. [ 5.1 3.5 1.4 0.2 ] 
  3. [ 4.9 3. 1.4 0.2 ] 
  4. [ 4.7 3.2 1.3 0.2 ] 
  5. [ 4.6 3.1 1.5 0.2 ]] 151 

1.5数据变换

  1. from sklearn.preprocessing import PolynomialFeatures 
  2.  
  3. #多项式转换 
  4. #参数degree为度,默认值为2 
  5. iris_pol=PolynomialFeatures().fit_transform(iris.data) 
  6. print(iris_pol[:5]) 
  1. [[ 1. 5.1 3.5 1.4 0.2 26.01 17.85 7.14 1.02 12.25 
  2. 4.9 0.7 1.96 0.28 0.04] 
  3. [ 1. 4.9 3. 1.4 0.2 24.01 14.7 6.86 0.98 9. 4.2 
  4. 0.6 1.96 0.28 0.04] 
  5. [ 1. 4.7 3.2 1.3 0.2 22.09 15.04 6.11 0.94 10.24 
  6. 4.16 0.64 1.69 0.26 0.04] 
  7. [ 1. 4.6 3.1 1.5 0.2 21.16 14.26 6.9 0.92 9.61 
  8. 4.65 0.62 2.25 0.3 0.04] 
  9. [ 1. 5. 3.6 1.4 0.2 25. 18. 7. 1. 12.96 
  10. 5.04 0.72 1.96 0.28 0.04]] 
  1. from numpy import log1p 
  2. from sklearn.preprocessing import FunctionTransformer 
  3.  
  4. #自定义转换函数为对数函数的数据变换 
  5. #第一个参数是单变元函数 
  6. iris_ftf=FunctionTransformer(log1p).fit_transform(iris.data) 
  7. print(iris_ftf[:5]) 
  1. [[ 1.80828877 1.5040774 0.87546874 0.18232156] 
  2. [ 1.77495235 1.38629436 0.87546874 0.18232156] 
  3. [ 1.74046617 1.43508453 0.83290912 0.18232156] 
  4. [ 1.7227666 1.41098697 0.91629073 0.18232156] 
  5. [ 1.79175947 1.5260563 0.87546874 0.18232156]]