GridSearchCV 没有关于高冗长的报告

Isa*_* GS 7 python machine-learning scikit-learn

好的,我只想说,我对 SciKit-Learn 和数据科学完全陌生。但这是问题和我目前对这个问题的研究。代码在底部。

概括

我正在尝试使用 BernoulliRBM 进行类型识别(例如数字),并且我正在尝试使用 GridSearchCV 找到正确的参数。但是,我没有看到任何事情发生。有很多使用详细设置的例子,我看到了输出和进度,但我的只是说,

Fitting 3 folds for each of 15 candidates, totalling 45 fits
Run Code Online (Sandbox Code Playgroud)

然后它坐在那里什么也不做......永远(或 8 小时,我用高详细设置等待的最长时间)。

我有一个非常大的数据集(1000 个 2D 数组,每个数组的大小为 428 x 428),所以这可能是问题所在,但我还将详细程度设置为 10,所以我觉得我应该看到某种输出或进展。此外,就我的“目标”而言,它要么是 0,要么是 1,要么是我正在寻找的对象(1),要么不是(0)。

以前的研究

  • 我查看了 sklearn.preprocessing 以查看是否有必要,这似乎不是问题(但同样,我对此完全陌生)。
  • 我增加了冗长
  • 我从使用 3D 数据列表切换到使用 scipy csr 矩阵列表。
  • 我用高详细设置等了 8 个小时,我仍然没有看到任何事情发生。
  • 我从不使用管道切换到使用管道
  • 我篡改了 gridsearchcv 的各种参数,并尝试创建假的(较小的)数据集来练习。

    def network_trainer(self, data, files):
        train_x, test_x, train_y, test_y = train_test_split(data, files, test_size=0.2, random_state=0)
    
        parameters = {'learning_rate':np.arange(.25, .75, .1), 'n_iter':[5, 10, 20]}
        model = BernoulliRBM(random_state=0, verbose=True)
        model.cv = 2
        model.n_components = 2
    
        logistic = linear_model.LogisticRegression()
        pipeline = Pipeline(steps=[('model', model), ('clf', logistic)])
    
        gscv = grid_search.GridSearchCV(pipeline, parameters, n_jobs=-1, verbose=10)
        gscv.fit(train_x, train_y)
        print gscv.best_params_
    
    Run Code Online (Sandbox Code Playgroud)

我真的很感激这里朝着正确方向的推动。感谢您考虑我的问题。

Isa*_* GS 8

好的,所以只是总结一下我在过去几天里对它的了解。

  • 在 Windows 8.1 上,如果您仍然希望 n_jobs 变得冗长,请不要将 n_jobs 设置为 1 以外的任何值。
  • 就我而言,即使我只有 n_jobs = 1,我的所有处理器内核仍然参与计算,所以这要么是一个错误,要么应该更好地记录下来。
  • 我犯了使用 csr 矩阵列表的可怕错误,所以基本上,阅读文档,然后在提问之前再次阅读。

我再次感谢@Barmaley.exe 的初步提示。

  • 大约 6 年后,我遇到了同样的问题,设置 n_jobs = 1 实际上使工作变得冗长。尽管没有打印进程,但这是否意味着 n_jobs = -1(或除 1 或 None 之外的任何其他值)时,它不会进行任何计算? (2认同)