Python SCIKIT列转换器类型错误:无法克隆对象。您应该提供scikit learn estimator的实例,而不是类

Python SCIKIT列转换器类型错误:无法克隆对象。您应该提供scikit learn estimator的实例,而不是类,python,pandas,numpy,machine-learning,scikit-learn,Python,Pandas,Numpy,Machine Learning,Scikit Learn,尝试使用看起来有点像这样的东西: CATEGORY | NUMBER VALUE | ID FRUIT | 15 | XCD VEGGIES | 12 | ZYK from sklearn.preprocessing import LabelEncoder, OneHotEncoder data = data.iloc[:,:].values enc = LabelEncoder() data[:,0]=enc .f

尝试使用看起来有点像这样的东西:

  CATEGORY | NUMBER VALUE  | ID

   FRUIT   |      15       |  XCD

  VEGGIES  |      12       |  ZYK



from sklearn.preprocessing import LabelEncoder, OneHotEncoder
data = data.iloc[:,:].values
enc = LabelEncoder()
data[:,0]=enc .fit_transform(data[:,0])
data
输出:
然后…

from sklearn.compose import ColumnTransformer
ct = ColumnTransformer(transformers=[('encode',OneHotEncoder,[0])],remainder='passthrough')
dataset = np.array(ct.fit_transform(data))
给予


我相信我解决了这个问题。这个打字错误是不言自明的,我很惭愧在发帖之前没有意识到这一点。实际上,我只需要创建OneHotEncoder类的一个实例。如下面代码所示添加一行解决了我的问题。谢谢大家!

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer
oHe = OneHotEncoder()
ct = ColumnTransformer(transformers=[('encode',oHe,[0])],remainder='passthrough')
dataset = np.array(ct.fit_transform(data))

xgboost
中安装
RandomizedSearchCV
时,我遇到了类似的问题。正如上面所说,我也为没有发现这个简单的错误而感到羞愧。我打字

regressor = xgboost.XGBRegressor 
而不是

regressor = xgboost.XGBRegressor(). 

读完这里后,我花了一些时间来识别这个错误,它工作得很好。

它节省了我很多时间,有时甚至是简单的错误也需要书面解决。非常感谢您记下它。您必须传递transformer/estimator的对象:传递
OneHotEncoder()
,而不是
OneHotEncoder
->
ct=ColumnTransformer(transformers=[('encode',OneHotEncoder(),[0]),余数='passthrough')
regressor = xgboost.XGBRegressor 
regressor = xgboost.XGBRegressor().