sklearn库学习--SelectKBest 、f_regression
目录
一、SelectKBest 介绍、代码使用
介绍:
代码使用:
二、评分函数
【1】f_regression:
(1)介绍:
(2)F值和相关系数
【2】除了f_regression函数,还有一些适用于回归问题的特征选择评价函数。
一、SelectKBest
介绍、代码使用
介绍:
SelectKBest是scikit-learn库中的一个特征选择函数,用于从数据集中选择k个最佳特征。它可以根据给定的评价函数和得分,来选择和排名特征。
SelectKBest可以用于以下两种情况:
-
想要减少数据集的维度,仅使用最重要的特征。
-
想要获得每个特征的重要程度排名,以便进一步分析。
代码使用:
假设你有一个数据集 X
和对应的标签 y
,想要进行特征筛选,只使用最重要的特征来训练模型。你可以使用 Scikit-learn 中的 SelectKBest
类来选择最好的 k 个特征。
以下是示例代码:
import pandas as pd
import numpy as np
from sklearn.feature_selection import SelectKBest, f_regression
# 读取数据集
data = pd.read_csv('data.csv')
X = data.drop('label', axis=1) # 特征
y = data['label'] # 标签
# 选择最好的5个特征
k = 5
selector = SelectKBest(score_func=f_regression, k=k)
X_new = selector.fit_transform(X, y)
# 输出结果
mask = selector.get_support() # 获得特征掩码
new_features = X.columns[mask] # 选择重要的特征
print(new_features)
这个示例中,我们使用 SelectKBest
类和 f_regression
函数来选择最好的5个特征。具体来说,SelectKBest
类会计算每个特征的评分,然后根据评分选择最好的 k 个特征。在本例中,评分函数是 f_regression
,这个函数使用 F 检验来计算特征的相关性。最后,我们从原始数据集中选择重要的特征,输出它们的名称。
需要注意的是,如果要使用 SelectKBest
类,特征和标签必须是数值型的。如果你的数据集中有多个特征,你还可以使用其他的评分函数来进行特征筛选,例如卡方检验、互信息法等等。
二、评分函数
【1】f_regression:
(1)介绍:
是scikit-learn库中的一个函数,用于在回归模型中评估每个特征和目标变量之间的关系。它可以计算每个特征和目标变量之间的F值和相关系数,以及计算每个F值对应的p值。
F值越大,表示特征和目标变量之间的相关性越强,p值越小,表示结果越显著。
f_regression函数的使用方法如下:
from sklearn.feature_selection import f_regression
f_values, p_values = f_regression(X, y) # 计算每个特征和目标变量之间的F值和p值
在上述代码中,X是特征矩阵,y是目标变量。
需要注意的是,f_regression函数只能用于回归问题的特征选择。在分类问题中,需要使用其他评价函数,如卡方检验(chi2)、互信息(mutual_info_classif)等。同时,f_regression函数不会进行特征选择,它只是提供了评价每个特征和目标变量之间相关性的指标,可以作为特征选择算法的评价函数之一。
(2)F值和相关系数
f_regression函数计算每个特征和目标变量之间的关系,其中F值和相关系数的含义如下:
- F值:指特征和目标变量之间的关系是否显著,是一个统计指标。F值越大,表示特征和目标变量之间的相关性越强。
- 相关系数:指特征和目标变量之间的线性关系的强度和方向,可以是正相关、负相关或无关。相关系数的取值范围为[-1,1],绝对值越大,表示相关性越强,符号表示相关性的方向。
需要注意的是,F值和相关系数是两个不同的指标,F值反映特征和目标变量之间的关系是否显著,相关系数反映特征和目标变量之间的线性关系的强度和方向。在特征选择中,通常使用F值作为评价函数,选择与目标变量相关性较强的特征,或者使用相关系数作为评价指标,评价每个特征与目标变量之间的关系
【2】除了f_regression函数,还有一些适用于回归问题的特征选择评价函数。
-
mutual_info_regression:互信息(mutual information)评价函数,可以用于回归问题的特征选择。互信息用于度量特征和目标变量之间的非线性关系,可以捕获特征和目标变量之间的任何关系。mutual_info_regression函数可以计算每个特征和目标变量之间的互信息值。
-
chi2:卡方检验(chi-squared test)评价函数,可以用于回归问题的特征选择。卡方检验用于度量特征和目标变量之间的关联性,可以应用于离散特征的选择。
-
f_classif:方差分析(ANOVA)评价函数,可以用于回归问题的特征选择。方差分析用于度量特征和目标变量之间的线性关系,可以捕获特征和目标变量之间的方差相关性。
这些评价函数的使用方法与f_regression函数类似,都是计算每个特征和目标变量之间的关系。使用这些评价函数可以选择与目标变量相关性较强的特征,进一步提高回归模型的准确性。