python:机器学习特征选择之过滤法代码实现

        过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。

一、皮尔逊相关性系数

        绘制皮尔逊相关系数热力图展示特征之间的相关性。

import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.read_csv('/diabetes.csv')

# 筛选数据
df_droped = df.drop('Outcome', axis=1)

# 显示负数
plt.rcParams['axes.unicode_minus'] = False

# 正常显示中文
plt.rcParams['font.sans-serif'] = ['SimHei'] 

# 设置图形大小
plt.figure(figsize=(10, 10))

# 绘制相关性图
sns.heatmap(df_droped.corr(),annot=True)

# 添加标题
plt.title('相关性热力图')

# 显示图形
plt.show()

二、卡方检验判定数据之间的相关性

        使用 sklearn 中的 SelectKBest 进行特征筛选 使用卡方检验筛选数据特征,需要加载 sklearn 库中的 chi2。

import pandas as pd
from sklearn.feature_selection import SelectKBest, chi2
import numpy as np
from sklearn.preprocessing import LabelEncoder

# 加载数据
df = pd.read_csv('/drug_dataset.csv')

# 分类数据编码
encond = LabelEncoder()
df['Sex'] = encond.fit_transform(df['Sex'])
df['BP'] = encond.fit_transform(df['BP'])
df['Cholesterol'] = encond.fit_transform(df['Cholesterol'])
df['Drug'] = encond.fit_transform(df['Drug'])

# 确定变量
x = df.drop('Drug', axis=1)
y = df['Drug']

# 筛选特征
select = SelectKBest(score_func = chi2, k=4)
select.fit_transform(x,y)

{'筛选出来的最优特征是': list(select.get_feature_names_out())}

三、使用方差分析实现特征筛选

        将上述代码中 score_fun 的值替换为 f_classif。

from sklearn.feature_selection import f_classif

# 筛选特征
select = SelectKBest(score_func = f_classif, k=4)
select.fit_transform(x,y)

{'筛选出来的最优特征是': list(select.get_feature_names_out())}

四、根据互信息去进行特征选择

          将上述代码中 score_fun 的值替换为  mutual_info_classif。

from sklearn.feature_selection import mutual_info_classif

# 筛选特征
select = SelectKBest(score_func =  mutual_info_classif, k=4)
select.fit_transform(x,y)

{'筛选出来的最优特征是': list(select.get_feature_names_out())}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值