我有一个很大的输入向量。目前,程序在运行 calibrated_clf.fit(x_train, y_train)
时已经卡了几小时。我不知道程序是死机了还是怎么回事。我怎样才能在 calibrated_clf.fit(x_train, y_train)
函数调用中打印出某种进度信息呢?
clf = ensemble.RandomForestClassifier(criterion = 'entropy', n_estimators = 350, max_features = 200,n_jobs=-1)calibrated_clf = CalibratedClassifierCV(clf, method='isotonic')print "Here 1"calibrated_clf.fit(x_train, y_train)print "Here 2"
x_train 是一个大小为 (51733, 250) 的向量。我在打印输出中卡在 “Here 1” 已经几个小时了。
回答:
你可以简单地将 verbose 设置为大于 0 的值。
来自
from sklearn.externals import joblibhelp(joblib.parallel)
verbose: int, 可选 详细程度级别:如果非零,将打印进度消息。当大于 50 时,输出将发送到 stdout。消息的频率随详细程度级别的增加而增加。如果大于 10,将报告所有迭代。
RandomForestClassifier
使用了 joblib
库中的 parallel
函数。
import numpyfrom sklearn.datasets import make_blobsfrom sklearn.ensemble import RandomForestClassifiern = 1000X, y = make_blobs(n_samples=n)X_train, y_train = X[0:n // 2], y[0:n // 2]X_valid, y_valid = X[n // 2:], y[n // 2:]clf = RandomForestClassifier(n_estimators=350, verbose=100)clf.fit(X_train, y_train)
输出
building tree 1 of 350[Parallel(n_jobs=1)]: Done 1 out of 1 | elapsed: 0.0s remaining: 0.0sbuilding tree 2 of 350[Parallel(n_jobs=1)]: Done 2 out of 2 | elapsed: 0.0s remaining: 0.0sbuilding tree 3 of 350[Parallel(n_jobs=1)]: Done 3 out of 3 | elapsed: 0.0s remaining: 0.0sbuilding tree 4 of 350[Parallel(n_jobs=1)]: Done 4 out of 4 | elapsed: 0.0s remaining: 0.0sbuilding tree 5 of 350[...]building tree 100 of 350building tree 101 of 350building tree 102 of 350building tree 103 of 350building tree 104 of 350[...]building tree 350 of 350[Parallel(n_jobs=1)]: Done 350 out of 350 | elapsed: 1.6s finished