Kyl*_*ili 4 python numpy machine-learning pandas 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 .fit_transform(data[:,0])
data
Run Code Online (Sandbox Code Playgroud)
array([[1, 15, 'XCD'],
[2, 12, 'ZYK']])
Run Code Online (Sandbox Code Playgroud)
然后...
from sklearn.compose import ColumnTransformer
ct = ColumnTransformer(transformers=[('encode',OneHotEncoder,[0])],remainder='passthrough')
dataset = np.array(ct.fit_transform(data))
Run Code Online (Sandbox Code Playgroud)
给
TypeError: Cannot clone object. You should provide an instance of scikit-learn estimator instead of a class.
Run Code Online (Sandbox Code Playgroud)
小智 6
RandomizedSearchCV我在适应时也遇到过类似的问题xgboost。正如上面所说,我也为没有识别出这个简单的错误而感到羞愧。我输入了
regressor = xgboost.XGBRegressor
Run Code Online (Sandbox Code Playgroud)
代替
regressor = xgboost.XGBRegressor().
Run Code Online (Sandbox Code Playgroud)
读完这里后,我花了一些时间来识别这个错误,并且效果很好。
我相信我解决了这个问题。TypeError 是不言自明的,我很惭愧在发布我的问题之前没有认识到这一点。本质上,我只需要创建 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))
Run Code Online (Sandbox Code Playgroud)