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().