0

我正在使用将标签编码为“制作列”的encode_labels函数train.csv

train.csv如下:

Make,Model,Year,Engine Fuel Type,Engine HP,Engine Cylinders,Transmission Type,Driven_Wheels,Number of Doors,Market Category,Vehicle Size,Vehicle Style,highway MPG,city mpg,Popularity,MSRP
BMW,1 Series M,2011,premium unleaded (required),335,6,MANUAL,rear wheel drive,2,Factory Tuner,Luxury,High-Performance,Compact,Coupe,26,19,3916,46135
Audi,100,1992,regular unleaded,172,6,MANUAL,front wheel drive,4,Luxury,Midsize,Sedan,24,17,3105,2000
Chrysler,200,2015,flex-fuel (unleaded/E85),184,4,AUTOMATIC,front wheel drive,4,Flex Fuel,Midsize,Sedan,36,23,1013,25170

和代码

from sklearn import preprocessing
from keras.utils.np_utils import to_categorical
def encode_labels(y):
    encoder = preprocessing.LabelEncoder()
    encoder.fit(y)
    encoded_y = encoder.transform(y)
    y = to_categorical(encoded_y)
    return y

通常encode_labels函数的输出是这样的:[[[0., 1., 0.]]也是二维的。

我想用df['encoded_label'] = df.apply(lambda x: encode_labels(['Make']), axis=1).但是这个功能出来了[[1.0]]。我找不到我做错的地方。

我得到了这样的打印输出

1-) 我认为使用 lamda 有问题。Lambda 无法正常工作。使用 lambda 也有问题吗?

encode_labels2-) 函数是二维的这一事实也给我带来了问题。那么我们如何将这个输出转换([[0., 0., 0., 1.]])为一维呢?

我们该如何处理这两个问题?

非常感谢。

4

1 回答 1

0

首先; 我认为第一个问题的答案;当我们想将数据框与lambda它一起用作数据框时,它会在一行上apply打印。whole result我从我的工作中明白了这一点。如果我错了,如果你纠正它,我会很高兴。

第二; 我通过使用pandaspd.get_dummies函数解决了我的第二个问题。

我希望方便

于 2021-02-01T10:34:35.463 回答