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)
我尝试将分类列转换为一种热编码,然后获取特征名称
有很多方法可以完成您的要求。 但最简单的方法是执行以下操作:
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。