ValueError:传递值的形状是 (1000, 1),索引表示 (1000, 20)

问题描述 投票:0回答:1

ValueError:传递值的形状是 (1000, 1),索引表示 (1000, 20) 这是我在 python 中的代码

encode = OneHotEncoder()
encoded_cols = encode.fit_transform(data[['Sex', 'Housing', 'Saving accounts', 'Checking account',
                                'Purpose']])
cols = encode.get_feature_names(['Sex', 'Housing', 'Saving accounts', 'Checking account',
                                'Purpose'])
df_encode = pd.DataFrame(encoded_cols, columns=cols)
                              

我尝试将分类列转换为一种热编码,然后获取特征名称

machine-learning cluster-analysis k-means one-hot-encoding
1个回答
0
投票

有很多方法可以完成您的要求。 但最简单的方法是执行以下操作:

import pandas as pd
import numpy as np
from sklearn.preprocessing import OneHotEncoder

columns = ['Sex', 'Housing', 'Saving accounts', 'Checking account',
                                'Purpose']
# this is to generate a random dataframe with values
input_df = pd.DataFrame(np.random.randint(0,100,size=(100, len(columns))), columns=columns)

encoder = OneHotEncoder(sparse_output=False).set_output(transform="pandas")

output_df = encoder.fit_transform(data[columns])

这是使用 scikit-learn

1.2.2
。它将返回具有正确列名的数据框,当然还会使用 OneHotEncoder。

© www.soinside.com 2019 - 2024. All rights reserved.