- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我发现了两种在 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实际上是一系列特征选择算法,其共同目标是选择相互远离但仍与分类变量“高度”相关的特征。
您可以使用互信息度量来衡量该目标,但要遵循的具体方法(即如何处理计算的分数?按什么顺序?将使用哪些其他后处理方法?...)一位作者与另一位作者不同 - 即使在论文中,他们实际上也为您提供了两种不同的实现,MIQ
和 MID
。
因此我的建议是只选择您更满意的实现方式(或者甚至更好,在进行适当验证后在您的管道中产生更好结果的实现方式),然后只报告您选择了哪个特定来源以及为什么.
关于python - 使用 MRMR 进行特征选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49232854/
我发现了两种在 python 中实现特征选择的 MRMR 的方法。包含该方法的论文来源是: https://www.dropbox.com/s/tr7wjpc2ik5xpxs/doc.pdf?dl=0
我是一名优秀的程序员,十分优秀!