gpt4 book ai didi

python - 使用 MRMR 进行特征选择

转载 作者:太空狗 更新时间:2023-10-30 00:18:39 26 4
gpt4 key购买 nike

我发现了两种在 python 中实现特征选择的 MRMR 的方法。包含该方法的论文来源是:

https://www.dropbox.com/s/tr7wjpc2ik5xpxs/doc.pdf?dl=0

这是我的数据集代码。

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

X, y = make_classification(n_samples=10000,
n_features=6,
n_informative=3,
n_classes=2,
random_state=0,
shuffle=False)

# Creating a dataFrame
df = pd.DataFrame({'Feature 1':X[:,0],
'Feature 2':X[:,1],
'Feature 3':X[:,2],
'Feature 4':X[:,3],
'Feature 5':X[:,4],
'Feature 6':X[:,5],
'Class':y})


y_train = df['Class']
X_train = df.drop('Class', axis=1)

方法一:使用pymrmr应用MRMR

包含 MID 和 MIQ

这是作者发表的链接是https://github.com/fbrundu/pymrmr

import pymrmr

pymrmr.mRMR(df, 'MIQ',6)

['Feature 4', 'Feature 5', 'Feature 2', 'Feature 6', 'Feature 1', 'Feature 3']

或者使用第二种方式运行

pymrmr.mRMR(df, 'MID',6)

['Feature 4', 'Feature 6', 'Feature 5', 'Feature 2', 'Feature 1', 'Feature 3']

这两种方法,在上面的数据集上产生这 2 个输出。 GitHub 上的另一位作者声称您可以使用他的版本来应用 MRMR 方法。但是,当我将它用于同一数据集时,我得到了不同的结果。

方法 2:使用 MIFS 应用 MRMR

Github 链接

https://github.com/danielhomola/mifs

import mifs

for i in range(1,11):

feat_selector = mifs.MutualInformationFeatureSelector('MRMR',k=i)
feat_selector.fit(X_train, y_train)

# call transform() on X to filter it down to selected features
X_filtered = feat_selector.transform(X_train.values)

#Create list of features
feature_name = X_train.columns[feat_selector.ranking_]


print(feature_name)

如果您对 i 的所有不同值运行上述迭代,则两种方法实际上都不会产生相同的特征选择输出。

这似乎是什么问题?

最佳答案

您可能需要联系原始论文的作者和/或 Github 存储库的所有者以获得最终答案,但这里的差异很可能是因为您正在比较 3 种不同的算法(尽管名字)。

Minimum redundancy Maximum relevance algorithms实际上是一系列特征选择算法,其共同目标是选择相互远离但仍与分类变量“高度”相关的特征

您可以使用互信息度量来衡量该目标,但要遵循的具体方法(即如何处理计算的分数?按什么顺序?将使用哪些其他后处理方法?...)一位作者与另一位作者不同 - 即使在论文中,他们实际上也为您提供了两种不同的实现,MIQMID

因此我的建议是只选择您更满意的实现方式(或者甚至更好,在进行适当验证后在您的管道中产生更好结果的实现方式),然后只报告您选择了哪个特定来源以及为什么.

关于python - 使用 MRMR 进行特征选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49232854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com