卡方检验——离散型特征相关性分析

import pandas as pd  #导入读入数据的包
from sklearn.feature_selection import SelectKBest  #卡方检验->判断离散型特征是否相关
from sklearn.feature_selection import chi2

#读取数据
data = pd.read_csv('./2013年八城市融合数据.csv',encoding='gbk')

x= data[['归属感有无(0:有 1:无)','户口性质(0:农业 1:非农业)','体制内人员(0:非体制内 1:体制内)','大学以上学历(0:大学以下 1:大学以上)','本地人愿意接受我(0:同意 1:不同意)']]
y = data['本地养老(0:非本地 1:本地)']
selectKBest = SelectKBest(chi2, k=5) 
X_new = selectKBest.fit_transform(x, y)
p_values = zip(select_k_best.scores_,select_k_best.pvalues_)
dict_p_values  = dict(zip(['归属感有无(0:有 1:无)','户口性质(0:农业 1:非农业)','体制内人员(0:非体制内 1:体制内)','大学以上学历(0:大学以下 1:大学以上)','本地人愿意接受我(0:同意 1:不同意)'],p_values))

sorted(dict_p_scores.items(),key=lambda x:x[1],reverse=False)

在这里插入图片描述

# 当p值小于0.05时,就说这个独立变量与输出结果有关系
for i in list(select_k_best.pvalues_):
    if i<0.05:
        print('True')

在这里插入图片描述

Python中,可以使用sklearn.feature_selection模块中的SelectKBest方法进行相关性分析特征选择。这个方法主要是根据互信息法来选择最佳特征。使用SelectKBest方法需要注意以下两点: 1. 区分离散数据和连续数据:在进行特征选择时,需要考虑特征的类,即特征离散数据还是连续数据。 2. 输出索引或特征名:SelectKBest方法的输出一般为特征的索引,但如果只获得索引对于特征量大的数据集来说不够友好,需要想办法获得特征的名称。 下面是一个示例代码,展示了如何使用SelectKBest方法进行相关性分析特征选择: ``` from sklearn.feature_selection import SelectKBest, mutual_info_classif # 创建SelectKBest对象,指定使用互信息法进行特征选择 selector = SelectKBest(score_func=mutual_info_classif, k=12) # 使用fit方法进行特征选择,传入特征矩阵X和目标变量y selector.fit(X, y) # 通过get_support方法获取选择的特征的索引 selected_features_indices = selector.get_support(indices=True) # 根据索引从原始特征矩阵X中选择特征 selected_features = X[:, selected_features_indices] ``` 这段代码演示了在相关性分析特征选择中使用互信息法的方法。首先,创建了一个SelectKBest对象,并指定score_func参数为mutual_info_classif,k参数为希望选择的特征数量。然后,使用fit方法对特征矩阵X和目标变量y进行特征选择。最后,通过get_support方法获取选择的特征的索引,再根据索引从原始特征矩阵X中选择特征。 希望以上内容对您有所帮助!如果还有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茶冻茶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值