数据预处理与特征选择

1.数据预处理        

1.1数据无量纲化

        在sklearn.preprogressing模块中有很多类可以帮我们在处理数据集中进行预处理,下图是各个类的使用说明

        调用方式同一般机器学习方法相同。

from sklearn.preprocessing import StandarScaler
scale = StandarScaler()
scale = scale.fit(data)
result = scale.transform(data)

result = StandarScale().fit(data).transform(data)

 1.2处理分类变量:编码与哑变量

1.2.1preprocessing.LabelEncoder

将某个特征中的文本转换为数值变量

from sklearn.preprocessing import LabelEncoder

data.iloc[:,-1] = LabelEncoder().fit(data.iloc[:,-1]).transform(data.iloc[:,-1])

1.2.2preprocessing.OrdinalEncoder:特征专用,能够将分类特征转换为分类数值(同上)

1.2.3preprocessing.OneHotEncoder:独热编码,创建哑变量

        类别OrdinalEncoder可以用来处理有序变量,但对于名义变量,我们只有使用哑变量的方式来处理,才能够尽量向算法传达最准确的信息,如:

1) 舱门(S,C,Q)
        三种取值S,C,Q是相互独立的,彼此之间完全没有联系,表达的是S≠C≠Q的概念。这是名义变量。
2) 学历(小学,初中,高中)
        三种取值不是完全独立的,我们可以明显看出,在性质上可以有高中>初中>小学这样的联系,学历有高低,但是学历取值之间却不是可以计算的,我们不能说小学 + 某个取值 = 初中。这是有序变量。
3) 体重(>45kg,>90kg,>135kg)
        各个取值之间有联系,且是可以互相计算的,比如120kg - 45kg = 90kg,分类之间可以通过数学计算互相转换。这是有距变量。

 1.3处理连续性变量:二值化和分箱

sklearn.preprocessing.Binarizer

        根据阈值将数据二值化(将特征值设置为0或1),用于处理连续型变量。大于阈值的值映射为1,而小于或等于阈 值的值映射为0。默认阈值为0时,特征中所有的正值都映射到1。二值化是对文本计数数据的常见操作,分析人员可以决定仅考虑某种现象的存在与否。它还可以用作考虑布尔随机变量的估计器的预处理步骤(例如,使用贝叶斯设置中的伯努利分布建模)。

preprocessing.KBinsDiscretizer
        这是将连续型变量划分为分类变量的类,能够将连续型变量排序后按顺序分箱后编码。总共包含三个重要参数:

 2.特征工程

特征工程分为:特征提取、特征创造、特征选择

方差过滤(过滤掉方差小的特征)、卡方检验、F检验、互信息(统计特征的独立性与否)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值