我試圖爲給定數據集選擇重要特徵(或至少了解哪些特徵解釋更多可變性)。爲了實現這個我同時使用ExtraTreesClassifier和GradientBoostingRegressor - 然後用: -feature_importances_在ExtraTreesClassifier中顯示爲NoneType:TypeError:'NoneType'對象不可迭代
clf = ExtraTreesClassifier(n_estimators=10,max_features='auto',random_state=0) # stops after 10 estimation passes, right ?
clf.fit(x_train, y_train)
feature_importance=clf.feature_importances_ # does NOT work - returns NoneType for feature_importance
帖子這個我在繪製它們(視覺表現)很感興趣 - 甚至是初步的,只是看的相對順序重視和相應的指數
# Both of these do not work as the feature_importance is of NoneType
feature_importance = 100.0 * (feature_importance/feature_importance.max())
indices = numpy.argsort(feature_importance)[::-1]
我發現令人費解的是 - 如果我下面用GradientBoostingRegressor,我得到了feature_importance及其指數。我究竟做錯了什麼 ?
#Works with GradientBoostingRegressor
params = {'n_estimators': 100, 'max_depth': 3, 'learning_rate': 0.1, 'loss': 'lad'}
clf = GradientBoostingRegressor(**params).fit(x_train, y_train)
clf.fit(x_train, y_train)
feature_importance=clf.feature_importances_
其他信息:我有12個獨立的增值經銷商(x_train)和一個標籤VAR(y_train))與多個值(比如4,5,7)和式(x_train)是和類型(feature_importance)是
致謝:某些元素從該交http://www.tonicebrian.com/2012/11/05/training-gradient-boosting-trees-with-python/
工作得到compute_importances數組 - 謝謝你和+1。你能否提一下如何選擇n_estimators?關於scikit-learn文檔,關於這方面的信息很少 - 我可以隨機化這個,並且*看*哪一個很適合(通過適合度)? – ekta
確定「合適」時,您可能希望監視驗證集上的預測誤差,而不是訓練集上的誤差以避免過度擬合。例如,你可以嘗試不斷增加的迭代次數,訓練錯誤應該持續下降 - 但是當驗證錯誤開始增長時你會停下來。 –