Python ';树外分类器&x27;对象没有属性';估计量';错误

Python ';树外分类器&x27;对象没有属性';估计量';错误,python,scikit-learn,ensemble-learning,Python,Scikit Learn,Ensemble Learning,我正在尝试将sklearn.emble中的extratreeClassifier()适配到样本数据集上,但它不断抛出此错误。我已经实现了其他sklearn模型,它们似乎运行良好。我错过了什么 from sklearn.ensemble import ExtraTreesClassifier model = ExtraTreesClassifier() model.fit(X,y) 调用ExtraTreesClassifier函数时引发错误 这是全部错误。 这里最好的只是一个包含参数的字典,df

我正在尝试将
sklearn.emble
中的
extratreeClassifier()
适配到样本数据集上,但它不断抛出此错误。我已经实现了其他
sklearn
模型,它们似乎运行良好。我错过了什么

from sklearn.ensemble import ExtraTreesClassifier
model = ExtraTreesClassifier()
model.fit(X,y)
调用ExtraTreesClassifier函数时引发错误

这是全部错误。 这里最好的只是一个包含参数的字典,df是一个数据帧,我用它来存储我制作的不同模型的输出

   ---> 97       df.loc[ind,'model']=ExtraTreesClassifier(**best)
     98       df.loc[ind,'param']=str(best)
     99       Start=time.time()

/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py in __setitem__(self, key, value)
    669             key = com.apply_if_callable(key, self.obj)
    670         indexer = self._get_setitem_indexer(key)
--> 671         self._setitem_with_indexer(indexer, value)
    672 
    673     def _validate_key(self, key, axis: int):

/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py in _setitem_with_indexer(self, indexer, value)
    848                             indexer, self.obj.axes
    849                         )
--> 850                         self._setitem_with_indexer(new_indexer, value)
    851 
    852                         return self.obj

/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py in _setitem_with_indexer(self, indexer, value)
   1008                 # we have an equal len list/ndarray
   1009                 elif _can_do_equal_len(
-> 1010                     labels, value, plane_indexer, lplane_indexer, self.obj
   1011                 ):
   1012                     setter(labels[0], value)

/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py in _can_do_equal_len(labels, value, plane_indexer, lplane_indexer, obj)
   2474         True if we have an equal len settable.
   2475     """
-> 2476     if not len(labels) == 1 or not np.iterable(value) or is_scalar(plane_indexer[0]):
   2477         return False
   2478 

/usr/local/lib/python3.6/dist-packages/numpy/lib/function_base.py in iterable(y)
    281     """
    282     try:
--> 283         iter(y)
    284     except TypeError:
    285         return False

/usr/local/lib/python3.6/dist-packages/sklearn/ensemble/_base.py in __iter__(self)
    171     def __iter__(self):
    172         """Return iterator over estimators in the ensemble."""
--> 173         return iter(self.estimators_)
    174 
    175 

AttributeError: 'ExtraTreesClassifier' object has no attribute 'estimators_'

当使用
.loc
设置数据帧的元素时,pandas试图解压一个iterable,认为您想要设置多个数据帧条目,每个iterable元素一个条目。您可以在回溯中看到,pandas测试您的
树外分类器是否为iterable:

    282     try:
--> 283         iter(y)
    284     except TypeError:
    285         return False
不幸的是,
extratreeClassifier
是可伸缩的,包含了它的每一棵树,当然,它只有在安装之后才能工作,因此会出现错误


首先,我建议将模型对象存储在数据帧中有点违背数据帧的精神,而是将模型对象保存在另一个地方。也许在框架中保存模型名和最佳参数就足够了

无论如何,如果你想保存模型对象本身,那就要看“如何将数据帧条目设置为iterable”,这是以前问过的问题,例如。
我个人喜欢。

你能分享完整的回溯吗?另外,你使用的sklearn版本是什么?@ywbaek我添加了完整的回溯作为编辑。我正在Google Colabon上使用slearn您的
sklearn是什么?\uuuuu版本\uuuuuuu
?@jlandercy 0.23。2@ywbaeksklearn.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu!