簡體   English   中英

使用帶有 Pandas(df.apply) 和維度問題 Python 的標簽編碼 function

[英]Using the label-encoding function with Pandas(df.apply) and dimensional problem Python

我正在使用 function 將 label 編碼為encode_labels上的train.csv用於`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 encode_labels的 output 是這樣的: [[[0., 1., 0.]]也是二維的。

我想使用df['encoded_label'] = df.apply(lambda x: encode_labels(['Make']), axis=1). 但是這個函數的輸出是[[1.0]] 我找不到我做錯的地方。

我得到了這樣的打印輸出

1-) 我認為使用 lamda 有問題。 Lambda 無法正常工作。 使用 lambda 也有問題嗎?

2-) function encode_labels是二維的這一事實也給我帶來了問題。 那么我們如何將這個 output ([[0., 0., 0., 1.]])轉換為一維的呢?

我們該如何處理這兩個問題?

非常感謝。

首先; 我認為第一個問題的答案; 當我們想使用 dataframe 和lambda並將其apply為 dataframe 時,它將whole result打印在一行上。 我從我的工作中明白了這一點。 如果我錯了,如果你糾正它,我會很高興。

第二; 我通過使用pandaspd.get_dummies function 解決了我的第二個問題。

我希望方便

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM