jam*_*mes 5 python machine-learning python-3.x scikit-learn one-hot-encoding
据我所知,如果我OneHotEncoder单独运行 a ,我可以通过调用以下命令来更改它从x1_1、等生成的功能名称:x1_2.get_feature_names
encoder.get_feature_names(['Sex', 'AgeGroup'])
Run Code Online (Sandbox Code Playgroud)
将更改为x1_1、x2_2至AgeGroup_1等AgeGroup_2。
但是,如果我将 运行为OneHotEncodera 中的几个转换之一ColumnTransformer,我将如何更改设置的前缀?
OneHotEncoder, 或ColumnTransformer, 或fit_transform不对?之后的列进行一些字符串解析替换解析从 sklearn文档中我发现可以通过将参数设置为 来阻止 ColumnTransformer 添加编码器名称作为verbose_feature_names_out前缀False。然后,一旦您调用该get_feature_names_out()函数,它将自动在新功能名称前添加当前功能名称。这是一个例子:
from\xc2\xa0sklearn.compose\xc2\xa0import\xc2\xa0ColumnTransformer \n\ndf2\xc2\xa0=\xc2\xa0pd.DataFrame({\'A\':\xc2\xa0list(\'1245\'),\xc2\xa0\'B\':\xc2\xa0list(\'3456\')},\xc2\xa0dtype\xc2\xa0="category")\n\n# The initial dataset\n A B\n0 1 3\n1 2 4\n2 4 5\n3 5 6\n\ntransformer\xc2\xa0=\xc2\xa0ColumnTransformer([(\'encoder\',\xc2\xa0OneHotEncoder(),\xc2\xa0[\'A\'])],\n \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0remainder=\'passthrough\',\n \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0verbose_feature_names_out=False)\ntransformed\xc2\xa0=\xc2\xa0transformer.fit_transform(df2)\ntransformed_df\xc2\xa0=\xc2\xa0pd.DataFrame(transformed,\n columns=transformer.get_feature_names_out())\ntransformed_df.head()\n\n# New output\n A_1 A_2 A_4 A_5 B\n0 1.0 0.0 0.0 0.0 3\n1 0.0 1.0 0.0 0.0 4\n2 0.0 0.0 1.0 0.0 5\n3 0.0 0.0 0.0 1.0 6\nRun Code Online (Sandbox Code Playgroud)\n在 sklearn 版本 1.0.2 中测试
\n