Python OneHotEncoder,TypeError:uu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;下降';

Python OneHotEncoder,TypeError:uu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;下降';,python,scikit-learn,Python,Scikit Learn,在sklearn 0.20.3文档中,init具有参数drop,但是当我使用相同的参数时,它抛出了一个类型错误 我没有发现任何使用“drop”关键字的示例,我看到的大多数示例都使用了旧版本的sklearn。在某些情况下,他们使用了ColumnTransfer(即使是旧版本的OnehotEncoder,因为它提供了未来的警告) 来自sklearn.preprocessing导入标签编码器,OneHotEncoder labelencoder_X=labelencoder() X[:,0]=labe

在sklearn 0.20.3文档中,init具有参数drop,但是当我使用相同的参数时,它抛出了一个类型错误

我没有发现任何使用“drop”关键字的示例,我看到的大多数示例都使用了旧版本的sklearn。在某些情况下,他们使用了ColumnTransfer(即使是旧版本的OnehotEncoder,因为它提供了未来的警告)

来自sklearn.preprocessing导入标签编码器,OneHotEncoder
labelencoder_X=labelencoder()
X[:,0]=labelencoder_X.fit_变换(X[:,0])
onehotencoder=onehotencoder(类别=[0],句柄\u unknown='ignore',drop=[0])
预期结果:应该能够编译上述代码。 实际结果:TypeError(init()得到一个意外的关键字参数'drop')

尝试以下方法:

onehotencoder = OneHotEncoder(categories = [0],handle_unknown='ignore',drop[0])
文档中可能的解释:
无:保留所有功能(默认)。
“第一”:删除每个功能中的第一个类别。如果只存在一个类别,则该功能将被完全删除。
array:drop[i]是功能X[:,i]中应该删除的类别。
试试这个:
我有一个功能可以为您完成这项工作:

# Own implementation of One Hot Encoding - Data Transformation
def convert_to_binary(df, column_to_convert):
    categories = list(df[column_to_convert].drop_duplicates())

    for category in categories:
        cat_name = str(category).replace(" ", "_").replace("(", "").replace(")", "").replace("/", "_").replace("-", "").lower()
        col_name = column_to_convert[:5] + '_' + cat_name[:10]
        df[col_name] = 0
        df.loc[(df[column_to_convert] == category), col_name] = 1

    return df

# One Hot Encoding
print("One Hot Encoding categorical data...")
columns_to_convert = [col1,col2]#Enter your column names here that you want to one hot encode.

for column in df_all.columns:              #columns_to_convert
    if df_all.column.dtype == 'category':
        df_all = convert_to_binary(df=df_all, column_to_convert=column)
        df_all.drop(column, axis=1, inplace=True)
print("One Hot Encoding categorical data...completed")

请确保在“转换”列中输入列列表(如果不希望转换所有分类变量)。您提供的链接不是针对0.20版本的,而是最新版本的。检查版本0.20.3:
在该版本中,该论点没有记录在案。因此,问题的解决方案是更新到最新版本的SKlearn。

升级当前版本的scikit learn应该可以解决此问题:

python -m pip install --user --upgrade scikit-learn
它没有帮助,给出了SyntaxError:positional参数跟在关键字参数后面