2017-07-06 18 views
1

我正在嘗試做一些機器學習。我試圖預測一篇文章的參與時間。我有我的X數據集如下:SciKit-Learn:使用隨機森林時的JoblibException

_text_word_length _title_char_length _title_word_length _text_char_length 
0 1306    53     7     8056  
1 1075    62     11     6127 

和我的目標Y值只是彩車代表連接時間。

我用SciKit-瞭解如下:

from sklearn.ensemble import RandomForestRegressor 
from sklearn.model_selection import cross_val_score, KFold 
import numpy as np 
clf = RandomForestRegressor(n_jobs=-1, n_estimators=250, max_features = 0.8, verbose = 2) 
score = cross_val_score(estimator = clf, X = X1, y = Y1, cv = KFold(n_splits = 5, random_state = 100), n_jobs = -1, \ 
         scoring = "neg_mean_squared_error") 
np.mean([np.sqrt(-x) for x in score]) 

因爲我用詳細模式,它輸出的隨機森林的樹木。它獲得通過幾乎所有的樹木,然後我得到這個:

JoblibException: JoblibException 
___________________________________________________________________________ 
Multiprocessing exception: 

然後有一噸的文本(不會在這裏重現,但可根據要求)。在最後,我看到:

ValueError: I/O operation on closed file 

我完全失去了,因爲非常相似的代碼昨天的工作,所以我不知道我在做什麼錯誤。

任何想法?

謝謝!

回答

2

你可以嘗試下面的東西嗎?因此,如果名稱 =='main'具有相應的縮進,請將所有代碼放在後面。

from sklearn.ensemble import RandomForestRegressor 
from sklearn.model_selection import cross_val_score, KFold 
import numpy as np 

if __name__ =='main': 

    clf = RandomForestRegressor(n_estimators=250, max_features = 0.8, verbose = 2) 
    score = cross_val_score(estimator = clf, X = X1, y = Y1, cv = KFold(n_splits = 5, random_state = 100), n_jobs = -1,scoring = "neg_mean_squared_error") 
    np.mean([np.sqrt(-x) for x in score]) 

注意 1)在cross_val_score之前得分= ..應該有一個昏迷而不是一個切片(/)

2)僅使用一次n_jobs = -1內cross_val_score