【发布时间】:2015-01-17 23:04:33
【问题描述】:
好的,我只想说,我对 SciKit-Learn 和数据科学完全陌生。但这是问题和我目前对这个问题的研究。代码在底部。
总结
我正在尝试使用 BernoulliRBM 进行类型识别(例如数字),并且正在尝试使用 GridSearchCV 找到正确的参数。但是我没有看到任何事情发生。通过大量使用详细设置的示例,我看到了输出和进度,但我的只是说,
Fitting 3 folds for each of 15 candidates, totalling 45 fits
然后它就坐在那里,什么都不做......永远(或 8 小时,这是我在高详细设置下等待的最长时间)。
我有一个相当大的数据集(1000 个二维数组,每个数组大小为 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_
我真的很感激在这里朝着正确的方向轻推。感谢您考虑我的问题。
【问题讨论】:
-
你能用
n_jobs=1试试吗?根据我的经验,详细输出似乎不适用于多处理(尽管我通常从 IPython 笔记本运行它,这可能是我的问题的根源)。 -
@Barmaley.exe 谢谢!它仍然无法正常工作,但至少我现在有错误消息要处理。我只是讨厌没有错误可以处理。等我弄清楚了,我会在这里更新。
标签: python machine-learning scikit-learn