特征选择SelectKBest

一、如何进行特性选择?

1、例子引入

import pandas as pd
import numpy as np

data = pd.read_csv('./input/covid.train.csv')
x = data[data.columns[1:94]]

y = data[data.columns[94]]

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_regression

from sklearn import preprocessing
#极差标准化法算法
x = (x - x.min()) / (x.max() - x.min())

bestfeatures = SelectKBest(score_func=f_regression, k=5)
fit = bestfeatures.fit(x,y)
dfscores = pd.DataFrame(fit.scores_)
dfcolumns = pd.DataFrame(x.columns)
#concat two dataframes for better visualization 
featureScores = pd.concat([dfcolumns,dfscores],axis=1)
featureScores.columns = ['Specs','Score']  #naming the dataframe columns
print(featureScores.nlargest(15,'Score'))  #print 15 best features

在这里插入图片描述
在数据里面有很多特征,选出最相关的那些信息,也就是对特征与输出y计算相关度,选出排名靠前的。

2、SelectKBest的详细用法

(1)参数

  • score_func :用来计算的特征排名的函数。常见函数如下:
    在这里插入图片描述
  • k:选出排名前几名的特征。
    (2)方法:

(a)fit(x,y),在(x,y)上运行记分函数并得到适当的特征。

先实例化一个SelectKBest对象,下面还需要用fit(x:含特征的训练样本,y:用来验证的样本也就是目标)

bestfeatures = SelectKBest(score_func=f_regression, k=5)
fit = bestfeatures.fit(x,y)

(b)、fit_transform(X[, y]),拟合数据,然后转换数据。
(c)get_params([deep]),获得此估计器的参数。
(d)get_support([indices]),获取所选特征的掩码或整数索引。
(e)inverse_transform(X),反向变换操作。
(f)set_params(**params),设置估计器的参数。
(g)transform(X),将X还原为所选特征。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python中的SelectKBest是一个特征选择的方法,可以通过特征与目标变量之间的关联度进行排序,然后选择前k个相关度最高的特征。它使用的是统计学中的一些方法,例如卡方检验、F检验等。这个方法可以用于数值型和分类型数据。 在使用SelectKBest时,首先需要指定要使用的评分函数,例如f_classif(用于分类问题)或f_regression(用于回归问题)。然后,可以通过fit_transform方法来选择最佳的k个特征。 以下是一个使用SelectKBest的示例代码: ```python from sklearn.feature_selection import SelectKBest, f_classif from sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target # 选择最好的4个特征 selector = SelectKBest(f_classif, k=4) X_new = selector.fit_transform(X, y) print(X.shape) # (150, 4) print(X_new.shape) # (150, 4) ``` 在此示例中,我们使用了Iris数据集,将数据集中的4个特征缩减为最佳的4个特征。注意,SelectKBest仅对特征进行筛选,不对数据进行预处理或标准化。 ### 回答2: Python中的高相关特征过滤是一种特征选择技术,它基于统计检验来评估特征与目标变量之间的相关性,并选择与目标变量高度相关的k个特征作为最终的特征子集。 在使用高相关特征过滤进行特征选择时,需要先对特征进行预处理,如标准化或归一化,以确保各个特征具有相同的尺度。然后,使用SelectKBest类从特征集中选择k个最佳特征。此类基于统计检验方法(例如卡方检验、F检验或互信息)计算每个特征与目标变量之间的相关性,然后根据相关性进行特征选择。 使用SelectKBest的过程如下: 1. 导入必要的库和数据集。 2. 对特征进行预处理,如标准化或归一化。 3. 实例化SelectKBest类,并选择所需的检验方法(例如卡方检验、F检验或互信息)。 4. 使用fit方法计算每个特征与目标变量之间的相关性得分。 5. 使用get_support方法获取选择特征索引。 6. 根据选择特征索引从原始特征集中提取最佳特征子集。 高相关特征过滤可以帮助我们从原始特征集中选择最具有预测能力的特征,减少无关特征的影响,提高模型的性能和效率。但需要注意的是,选择特征数量k应根据具体问题和数据集进行调整,避免选择过多或过少的特征。 总而言之,Python中的高相关特征过滤(SelectKBest)是一种基于统计检验的特征选择技术,可用于从原始特征集中选择与目标变量高度相关的k个最佳特征子集。 ### 回答3: Python中的SelectKBest是一个特征选择方法。它通过评估每个特征与目标变量之间的相关性来选择与目标变量最相关的K个特征。在使用SelectKBest之前,我们需要先定义一个相关性评估方法,比如卡方检验、方差分析等。然后,我们可以使用SelectKBest的fit方法来拟合特征和目标变量,并通过调用transform方法来选择最相关的K个特征。 使用SelectKBest的好处是可以减少特征数量,从而减少模型的复杂度,提高模型训练的效率和预测的准确性。此外,由于只选择了与目标变量最相关的特征,还可以降低特征选择过程中出现的过拟合风险。 在使用SelectKBest时,我们需要注意选择合适的K值。一个较小的K值可能会导致遗漏了一些相关特征,而一个较大的K值可能会引入一些无关特征,降低模型的预测性能。因此,选择合适的K值需要结合具体问题和数据集进行实验和调优。 总而言之,SelectKBest是一个用于特征选择的方法,它通过评估每个特征与目标变量之间的相关性来选择最相关的K个特征。在实际应用中,根据具体问题和数据集的特点,我们可以使用SelectKBest来提取与目标变量相关性最高的特征,从而提高模型训练的效率和预测的准确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值