我尝试使用 scikit-learn 中可用的 OMP 算法。我的净数据大小包括目标信号和字典 ~ 1G。但是,当我运行代码时,它以 mem-error 退出。这台机器有 16G RAM,所以我认为这不应该发生。我尝试了一些错误出现的日志记录,发现数据已完全加载到 numpy 数组中。导致错误的是算法本身。有人可以帮我解决这个问题,或者为特征选择建议更高效的内存算法,或者对数据进行二次采样是我唯一的选择。是否有一些确定性好的二次抽样技术。
编辑:相关代码片段:
n=8;
y=mydata[:,0];
X=mydata[:,[1,2,3,4,5,6,7,8]];
#print y;
#print X;
print "here";
omp = OrthogonalMatchingPursuit(n_nonzero_coefs=5,copy_X = False, normalize=True);
omp.fit(X,y);
coef = omp.coef_;
print omp.coef_;
idx_r, = coef.nonzero();
for id in idx_r:
print coef[id], vars[id],"\n";
我得到的错误:
File "/usr/local/lib/python2.7/dist-packages/sklearn/base.py", line 324, in score
return r2_score(y, self.predict(X), sample_weight=sample_weight)
File "/usr/local/lib/python2.7/dist-packages/sklearn/metrics/metrics.py", line 2332, in r2_score
numerator = (weight * (y_true - y_pred) ** 2).sum(dtype=np.float64)
MemoryError