Целевой кодировщик Scikit-learn для нескольких классовPython

Программы на Python
Гость
Целевой кодировщик Scikit-learn для нескольких классов

Сообщение Гость »


Как преобразовать код из этого руководства https://towardsdatascience.com/target-e ... 9a7bcb1a53

Код: Выделить всё

import category_encoders as ce
def target_encode_multiclass(X,y): #X,y are pandas df and series
y=y.astype(str)   #convert to string to onehot encode
enc=ce.OneHotEncoder().fit(y)
y_onehot=enc.transform(y)
class_names=y_onehot.columns  #names of onehot encoded columns
X_obj=X.select_dtypes('object') #separate categorical columns
X=X.select_dtypes(exclude='object')
for class_ in class_names:

enc=ce.TargetEncoder()
enc.fit(X_obj,y_onehot[class_]) #convert all categorical
temp=enc.transform(X_obj)       #columns for class_
temp.columns=[str(x)+'_'+str(class_) for x in temp.columns]
X=pd.concat([X,temp],axis=1)    #add to original dataset

return X
to only use sklearn and not category_encoders?
Currently have

Код: Выделить всё

from sklearn.preprocessing import OneHotEncoder, TargetEncoder
def target_encode_multiclass(X,y):
y=y.astype(str)
enc=OneHotEncoder().fit(y)
y_onehot=enc.transform(y)
class_names=y.columns
X_obj=X.select_dtypes('object')
X=X.select_dtypes(exclude='object')
for class_ in class_names:
enc=TargetEncoder()
enc.fit(X_obj, y_onehot[class_])
temp=enc.transform(X_obj)
temp.columns=[str(x)+'_'+str(class_) for x in temp.columns]
X=pd.concat([X,temp],axis=1)
return X
which is throwing the error Index dimension must be 1 or 2 on the line "enc.fit(X_obj, y_onehot[class_])"


Источник: https://stackoverflow.com/questions/781 ... ulti-class

Вернуться в «Python»