scikit-follow GridSearchCV n_jobs != 1 冻结
scikit-lean GridSearchCV n_jobs != 1 freezing
我正在 运行 随机森林网格搜索并尝试使用 n_jobs 不同于一个但内核冻结,没有 CPU 用法。使用 n_jobs=1 它工作正常。我什至不能用 ctl-C 停止命令,必须重新启动内核。
我在 windows 7 上 运行。我看到 OS X 也有类似的问题,但解决方案与 windows 7.
无关
from sklearn.ensemble import RandomForestClassifier
rf_tfdidf = Pipeline([('vect',tfidf),
('clf', RandomForestClassifier(n_estimators=50,
class_weight='balanced_subsample'))])
param_grid = [{'vect__ngram_range':[(1,1)],
'vect__stop_words': [stop],
'vect__tokenizer':[tokenizer]
}]
if __name__ == '__main__':
gs_rf_tfidf = GridSearchCV(rf_tfdidf, param_grid, scoring='accuracy', cv=5,
verbose=10,
n_jobs=2)
gs_rf_tfidf.fit(X_train_part, y_train_part)
谢谢。
if __name__ == '__main__':
后的缩进不正确。如果不是这种情况并且是复制粘贴错误,那么您可以尝试类似的方法:
if __name__ =='main':
# your code indented !
所以您的脚本的第一行是 if __name__ == '__main__':
,然后是 的其余代码并适当缩进。
新代码
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import Pipeline
if __name__ == '__main__':
rf_tfdidf = Pipeline([('vect',tfidf),('clf', RandomForestClassifier(n_estimators=50,class_weight='balanced_subsample'))])
param_grid = [{'vect__ngram_range':[(1,1)],'vect__stop_words': [stop],'vect__tokenizer':[tokenizer]}]
gs_rf_tfidf = GridSearchCV(rf_tfdidf, param_grid, scoring='accuracy', cv=5,verbose=10, n_jobs=-1)
gs_rf_tfidf.fit(X_train_part, y_train_part)
这对我来说很好 (windows 8.1)
编辑
以下使用 PyCharm 效果很好。我没有使用过 spyder,但它也应该适用于 spyder:
代码
Class Test(object):
def __init__(self):
###code here
###code here
if __name__ == '__main__':
Test()
我正在 运行 随机森林网格搜索并尝试使用 n_jobs 不同于一个但内核冻结,没有 CPU 用法。使用 n_jobs=1 它工作正常。我什至不能用 ctl-C 停止命令,必须重新启动内核。 我在 windows 7 上 运行。我看到 OS X 也有类似的问题,但解决方案与 windows 7.
无关from sklearn.ensemble import RandomForestClassifier
rf_tfdidf = Pipeline([('vect',tfidf),
('clf', RandomForestClassifier(n_estimators=50,
class_weight='balanced_subsample'))])
param_grid = [{'vect__ngram_range':[(1,1)],
'vect__stop_words': [stop],
'vect__tokenizer':[tokenizer]
}]
if __name__ == '__main__':
gs_rf_tfidf = GridSearchCV(rf_tfdidf, param_grid, scoring='accuracy', cv=5,
verbose=10,
n_jobs=2)
gs_rf_tfidf.fit(X_train_part, y_train_part)
谢谢。
if __name__ == '__main__':
后的缩进不正确。如果不是这种情况并且是复制粘贴错误,那么您可以尝试类似的方法:
if __name__ =='main':
# your code indented !
所以您的脚本的第一行是 if __name__ == '__main__':
,然后是 的其余代码并适当缩进。
新代码
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import Pipeline
if __name__ == '__main__':
rf_tfdidf = Pipeline([('vect',tfidf),('clf', RandomForestClassifier(n_estimators=50,class_weight='balanced_subsample'))])
param_grid = [{'vect__ngram_range':[(1,1)],'vect__stop_words': [stop],'vect__tokenizer':[tokenizer]}]
gs_rf_tfidf = GridSearchCV(rf_tfdidf, param_grid, scoring='accuracy', cv=5,verbose=10, n_jobs=-1)
gs_rf_tfidf.fit(X_train_part, y_train_part)
这对我来说很好 (windows 8.1)
编辑
以下使用 PyCharm 效果很好。我没有使用过 spyder,但它也应该适用于 spyder:
代码
Class Test(object):
def __init__(self):
###code here
###code here
if __name__ == '__main__':
Test()