gpt4 book ai didi

python - sklearn 中的单热编码多列和命名列

转载 作者:行者123 更新时间:2023-12-03 01:39:08 33 4
gpt4 key购买 nike

我有以下代码来对我拥有的 2 列进行单热编码。

# encode city labels using one-hot encoding scheme
city_ohe = OneHotEncoder(categories='auto')
city_feature_arr = city_ohe.fit_transform(df[['city']]).toarray()
city_feature_labels = city_ohe.categories_
city_features = pd.DataFrame(city_feature_arr, columns=city_feature_labels)

phone_ohe = OneHotEncoder(categories='auto')
phone_feature_arr = phone_ohe.fit_transform(df[['phone']]).toarray()
phone_feature_labels = phone_ohe.categories_
phone_features = pd.DataFrame(phone_feature_arr, columns=phone_feature_labels)

我想知道如何在 4 行中完成此操作,同时在输出中获得正确命名的列。也就是说,我可以通过在 fit_transform 中包含两个列名称来创建一个正确的单热编码数组,但是当我尝试命名生成的数据帧的列时,它告诉我形状之间存在不匹配指数:

ValueError: Shape of passed values is (6, 50000), indices imply (3, 50000)

对于背景,电话和城市都有 3 个值。

    city    phone
0 CityA iPhone
1 CityB Android
2 CityB iPhone
3 CityA iPhone
4 CityC Android

最佳答案

你就快到了...就像你说的,你可以直接在 fit_transform 中添加你想要编码的所有列。

ohe = OneHotEncoder(categories='auto')
feature_arr = ohe.fit_transform(df[['phone','city']]).toarray()
feature_labels = ohe.categories_

然后您只需执行以下操作:

feature_labels = np.array(feature_labels).ravel()

这使您能够根据需要命名列:

features = pd.DataFrame(feature_arr, columns=feature_labels)

关于python - sklearn 中的单热编码多列和命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55229301/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com