将标签编码函数与 Pandas(df.apply) 和维度问题 Python 结合使用
Using the label-encoding function with Pandas(df.apply) and dimensional problem Python
我正在使用一个函数将标签编码为 encode_labels
on train.csv
for `Make columuns.
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).
,但是这个功能out了[[1.0]]
。我找不到哪里做错了。
我得到了这样的打印输出
1-) 我认为使用lamda 有问题。 Lambda 无法正常工作。使用 lambda 也有问题吗?
2-) 函数 encode_labels
是二维的这一事实也给我带来了问题。那么我们如何将这个输出([[0., 0., 0., 1.]])
转换为一维呢?
我们如何处理这两个问题?
非常感谢。
首先;我认为第一个问题的答案;当我们想使用带有 lambda
和 apply
的数据框作为数据框时,它会在一行上打印 whole result
。我从我的工作中了解到这一点。如果我错了,请您指正,我将很高兴。
其次;我通过使用 pandas
和 pd.get_dummies
函数解决了我的第二个问题。
希望方便
我正在使用一个函数将标签编码为 encode_labels
on train.csv
for `Make columuns.
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).
,但是这个功能out了[[1.0]]
。我找不到哪里做错了。
我得到了这样的打印输出
1-) 我认为使用lamda 有问题。 Lambda 无法正常工作。使用 lambda 也有问题吗?
2-) 函数 encode_labels
是二维的这一事实也给我带来了问题。那么我们如何将这个输出([[0., 0., 0., 1.]])
转换为一维呢?
我们如何处理这两个问题?
非常感谢。
首先;我认为第一个问题的答案;当我们想使用带有 lambda
和 apply
的数据框作为数据框时,它会在一行上打印 whole result
。我从我的工作中了解到这一点。如果我错了,请您指正,我将很高兴。
其次;我通过使用 pandas
和 pd.get_dummies
函数解决了我的第二个问题。
希望方便