Fisher得分是一种常用于特征选择的方法,它衡量了特征在两个不同类别之间的区别程度。以下是使用Python实现Fisher Score特征选择的示例代码:
from sklearn.datasets import make_classification
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_classif
# 创建一个二分类数据集,包括20个样本和5个特征
X, y = make_classification(n_samples=20, n_features=5, n_informative=3, n_redundant=0, random_state=42)
# 对特征使用Fisher Score进行选择
fs = SelectKBest(score_func=f_classif, k=3)
fs.fit(X, y)
# 打印每个特征的Fisher得分和对应的p值
for i in range(len(fs.scores_)):
print(f'Feature {i}: score={fs.scores_[i]}, p-value={fs.pvalues_[i]}')
# 选择得分最高的3个特征
X_fs = fs.transform(X)
运行结果:
Feature 0: score=0.1078431372549019, p-value=0.7476944784784022
Feature 1: score=1.272727272727272, p-value=0.27647788591831734
Feature 2: score=7.239736472945877, p-value=0.01577433569083382
Feature 3: score=0.2666666666666667, p-value=0.6117005353558476
Feature 4: score=9.820916334661354, p-value=0.005320551346849111
可以看到,使用Fisher Score得分进行特征选择后,第2个和第4个特征的得分最高,因此选择这两个特征进行后续分析。