【FE】特征选择方法

在这里插入图片描述

皮尔逊系数

在统计学当中,皮尔逊相关性系数被广泛应用于测量2个变量 X、Y 的相关程度,皮尔逊相关性系数的值在(-1.0,1.0),绝对值越大,则2个变量间的相关性则越强。

卡方检验

卡方检验是一种用途很广的计数资料的假设检验方法。它属于非参数检验的范畴,主要是比较两个及两个以上样本率( 构成比)以及两个分类变量的关联性分析。

其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。卡方值越大,标识两个变量之间的关联性越大,越相关,即是越不独立。

def transFeature(data, category):
"""
根据传入的分段区间,将每星期工作时间转换为定量变量

参数
----
data : DataFrame,建模数据

category : list,分段区间
"""
labels = ["{0}-{1}".format(category[i], category[i+1]) for i in range(len(category) - 1)]
data["hours_per_week_group"] = pd.cut(data["hours_per_week"],
category, include_lowest=True, labels=labels)
return data


def getCategory(data):
"""
基于卡方检验,得到每星期工作时间的“最优”分段
"""
interval = [data["hours_per_week"].min(), data["hours_per_week"].max()]
_category = doDivide(data, interval)
s = set()
for i in _category:
s = s.union(set(i))
category = list(s)
category.sort()
return category


def doDivide(data, interval):
"""
使用贪心算法,得到“最优”的分段
"""
category = []
pValue, chi2, index = divideData(data, interval[0], interval[1])
if chi2 < 15:
category.append(interval)
else:
category += doDivide(data, [interval[0], index])
category += doDivide(data, [index, interval[1]])
return category


def divideData(data, minValue, maxValue):
"""
遍历所有可能的分段,返回卡方统计量最高的分段
"""
maxChi2 = 0
index = -1
maxPValue = 0
for i in range(minValue+1, maxValue):
category = pd.cut(data["hours_per_week"], [minValue, i, maxValue],
include_lowest=True)
cross = pd.crosstab(data["label"], category)
chi2, pValue, _, _ = scs.chi2_contingency(cross)
if chi2 > maxChi2:
maxPValue = pValue
maxChi2 = chi2
index = i
return maxPValue, maxChi2, index

特征之间为什么要独立?

pass

Univariate Analysis

Analyzing single feature at a time is called as univariate analysis.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值