skLearn 特征工程

参考:https://github.com/fuqiuai/sklearn-feature-engineering
from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import RFE
from sklearn.feature_selection import chi2
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import VarianceThreshold
from sklearn.preprocessing import FunctionTransformer
from numpy import log1p
from sklearn.preprocessing import PolynomialFeatures
from sklearn.impute import SimpleImputer as Imputer
from numpy import vstack, array, nan
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import Binarizer
from sklearn.preprocessing import Normalizer
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris

# 导入IRIS数据集
iris = load_iris()

# 特征矩阵
iris.data

# 目标向量
iris.target
print("original")
print(iris.data)
print("---------------------")


# 标准化,返回值为标准化后的数据
iris1 = StandardScaler().fit_transform(iris.data)
print("after standardlize")
print(iris1)
print("---------------------")

# 区间缩放,返回值为缩放到[0, 1]区间的数据
iris2 = MinMaxScaler().fit_transform(iris.data)
print("0-1")
print(iris2)
print("---------------------")

# 归一化,返回值为归一化后的数据
iris3 = Normalizer().fit_transform(iris.data)
print("after normalized")
print(iris3)
print("---------------------")


# 二值化,阈值设置为3,返回值为二值化后的数据
iris4 = Binarizer(threshold=3).fit_transform(iris.data)
print("after binarized")
print(iris4)
print("---------------------")

# 哑编码,对IRIS数据集的目标值,返回值为哑编码后的数据
iris5 = OneHotEncoder().fit_transform(iris.target.reshape((-1, 1)))
print("after oneHot")
print(iris5)
print("---------------------")


# 缺失值计算,返回值为计算缺失值后的数据
# 参数missing_value为缺失值的表示形式,默认为NaN
# 参数strategy为缺失值填充方式,默认为mean(均值)
iris6 = vstack((array([nan, nan, nan, nan]), iris.data))
print("add nan nan nan nan to the data:")
print(iris6)
print("---------------------")

iris7 = Imputer().fit_transform(
    vstack((array([nan, nan, nan, nan]), iris.data)))
print("after fill the nan with mean:")
print(iris7)
print("---------------------")


# 多项式转换
# 参数degree为度,默认值为2
iris8 = PolynomialFeatures().fit_transform(iris.data)
print("after PolynomialFeatures:")
print(iris8)
print("---------------------")

# 自定义转换函数为对数函数的数据变换
# 第一个参数是单变元函数
iris9 = FunctionTransformer(log1p).fit_transform(iris.data)
print("after FunctionTransformer:")
print(iris9)
print("---------------------")


# 方差选择法,返回值为特征选择后的数据
# 参数threshold为方差的阈值
iris10 = VarianceThreshold(threshold=3).fit_transform(iris.data)
print("VarianceThreshold:")
print(iris10)
print("---------------------")


# 选择K个最好的特征,返回选择特征后的数据
iris11 = SelectKBest(chi2, k=2).fit_transform(iris.data, iris.target)
print("SelectKBest:")
print(iris11)
print("---------------------")


# 递归特征消除法,返回特征选择后的数据
# 参数estimator为基模型
# 参数n_features_to_select为选择的特征个数
iris12 = RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(
    iris.data, iris.target)
print("features_to_select:")
print(iris12)
print("---------------------")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值