【问题标题】:Is there a minimum hardware requirement for SKLearn?SKLearn 是否有最低硬件要求?
【发布时间】:2020-03-09 03:34:31
【问题描述】:

这本身不是一个编程问题,因为我的代码很好,但更多的是关于我的代码运行速度的问题。

我正在尝试使用 SKLearn 进行一些特征选择。我的实际数据框大约有 20,000 行,有 30 个特征。我遇到的问题是,一旦程序处于功能选择阶段,我就无法让程序完成运行,它只会连续运行几个小时而没有完成。

所以我决定只使用 SKLearn 网站上的一个简单示例:

>>> from sklearn.datasets import make_friedman1
>>> from sklearn.feature_selection import RFECV
>>> from sklearn.svm import SVR
>>> X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)
>>> estimator = SVR(kernel="linear")
>>> selector = RFECV(estimator, step=1, cv=5)
>>> selector = selector.fit(X, y)
>>> selector.support_ 
array([ True,  True,  True,  True,  True, False, False, False, False,
       False])
>>> selector.ranking_
array([1, 1, 1, 1, 1, 6, 4, 3, 2, 5])

这运行良好,可能需要几秒钟。如果我再次将n_samples 增加到 2,000,它运行良好,但需要更长的时间。我尝试了 20,000 个n_samples,但由于耗时太长,一段时间后停止了该过程。

然后我决定将我的df 缩小到大小,只给它 1,000 行,包含 10 个特征。使用与 SKLearn 网站完全相同的代码,但将 df.drop('label', axis=1) 替换为 X,df['label'] 替换为 y,它已经运行了一个多小时,没有在站点结束。

鉴于我能够让示例代码在 2,000 n_samples 上正常运行,我很困惑为什么我不能让相同的特征选择过程来处理我自己的数据。

此过程是否有最低硬件要求?我在 2011 年 4GB 内存的 Mac 和 2015 年 6 GB 内存的 Windows 机器上尝试过,但都无法正常工作。

我的数据包含股票价格,技术分析指标来自一个名为 ta 的库。它是 Pandas DataFrame 的形式,鉴于 SKLearn 的示例代码不是 Pandas df,我不知道这是否会有所不同?

任何线索/帮助将不胜感激

【问题讨论】:

    标签: python pandas scikit-learn feature-selection sklearn-pandas


    【解决方案1】:

    我认为问题出现在RFECV:

    它是如何工作的?

    我们最初从所有功能开始。对于每一步或迭代 最差的 x 个特征(即具有最低的特征 绝对值在线性模型的情况下)被消除使用 “step”参数直到“n_features”被留下。

    RFECV 对象有助于调整或查找此 n_f​​eatures 参数,使用 交叉验证。 F或每一步,其中“步”数的特征是 消除,它计算验证数据的分数。这 在给出最高分数的步骤中剩余的特征数 验证数据,被认为是你的“最好的 n_features” 数据。 Reference

    因此您可以使用 step 参数。现在正在消除一个特征,重新计算分数。

    通常没有最低设置,

    还有可能是您的原始文件中有错误,有时需要很长时间才能加载。

    【讨论】:

    • 感谢您的帮助,我玩弄了这个步骤,我什至将步骤设置为 5,并将最小功能数量设置为 5,在我看来,这表明它只需要下降 5并在第一轮结束后停止,但它再次运行并运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 2021-12-28
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    相关资源
    最近更新 更多