【发布时间】: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