• python中使用mRMR


    mRMR

    Max-Relevance and Min-Redundancy
    最大相关 - 最小冗余
    相信读到这篇博客的你,应该是知道mRMR的原理的,所以就不再解释了

    pymrmr模块

    github链接

    安装

    pip install numpy Cython
    pip install pymrmr
    

    在windows上有可能会出现:
    error: Microsoft Visual C++ 14.0 is required这样的错误
    我用的是Ubuntu,linux就是好

    使用

    import pymrmr
    ....
    pymrmr.mRMR(df, 'MIQ', 10)
    ....

    参数说明

    上面的代码省略了很多,大概看个样子就好了

    • 参数1
      pandas.DataFrame
      第一列要是目标量
      其他列要是特征量
      最神奇的是,列的名称要是字符串
    • 参数2
      str
      内部选择的方法,有两种取值‘MID’和’MIQ’
    • 参数3
      int
      要选取的特征数量

    问题

    说说我遇到的问题:
    我要处理的数据有3000+行、20000+列,运行到一半就会报一个内存错误
    能想到的方法:

    • 去改变模块的源码(未成功)
      去看了这个模块的源码,竟然是熟悉的c++,然后看看了,感觉看懂了,之间将其开辟空间的地方直接改成自己需要的,然后。。。。。。。
    • 使用mrmr程序
      地址
      这个是在pymrmr的github上看到的,可以在线执行mrmr,不过提交的数据不能超过2MB,然后往下翻,能看到这个
      在这里插入图片描述
      根据自己的系统下载可执行文件,在终端执行
      在这里插入图片描述
      可以看到其参数,就没在这里解释其参数了,值得注意的是,如果数据太大的要,要手动设置行和列。
      演示这个我用的是win10,因为我是双系统啊,双系统就是好
      如果在加上os.system()就能不需要单独去运行这个程序了,这里没给出实现方法

    mifs模块

    github链接

    安装

    好像没有pip install的样子
    得从上面的github链接,clone或者下载下来
    在此之前需要安装

    scipy(>=0.17.0)
    numpy(>=1.10.4)
    scikit-learn(>=0.17.1)
    bottleneck(>=1.1.0)
    

    再进入下载的目录执行

    python setup.py install
    

    使用

    import mifs
    ....
    feat_selector = mifs.MutualInformationFeatureSelector(method='MRMR')
    # 参数说明
    # method: str, 互信息的特征选择方法,取值有'JMI','JMIM','MRMR'
    # n_features: int or str, 需要选择出的特征数量
    # verbose: int, 在运行的时候,输出的详细星x系的程度, 取值0,1,2,可以自己试试看看效果
    feat_selector.fit(x, y)
    # 说明
    # x 特征矩阵,推荐是numpy.array,pandas.DataFrame好像不行呢
    # y 标签值,推荐是numpy.array
    feat_selector.ranking_
    # 得到列的索引,从0开始
    ....

    问题

    能直接跑很大的数据,但是运行时间就有点一言难尽了

    总结

    这两种或者三种方法,有时得出的结果是不一样的,如果不想去探究原因的话,就使用对模型更加有作用的结果。
    上面的过程有点省略,有什么问题或者不明白的,可以私信我。

  • 相关阅读:
    angular学习之通俗易懂篇-----constructor()与ngOnInit()
    vscode----快捷键
    angular学习之通俗易懂篇-----路由
    angular学习之通俗易懂篇-----双向数据绑定MVVM
    angular学习之通俗易懂篇-----数据绑定
    angular学习之通俗易懂篇-----新建组件并调用
    angular学习之-----常用命令行
    windows环境下node更新最新版本----简单粗暴
    首例爬虫禁令:法院裁定立即停止擅自爬取微信公众号相关数据行为取微信公众号相关数据行为
    Pycharm两种快速激活方式(附最新激活码和插件)
  • 原文地址:https://www.cnblogs.com/jizhihong/p/13337301.html
Copyright © 2020-2023  润新知