簡體   English   中英

分類到二進制-我在做什么錯?

[英]Categorical to Binary - what am I doing wrong?

我正在從“成人收入”數據集(<50K和> = 50K)轉換目標列,並且我希望在<50K時為零,在大於或等於50K時為1。

當我運行以下代碼時,它會創建兩列,而我希望在該列中只是將<50K列出的地方替換為1,而將列出> 50K的地方替換為0。

cols_to_transform = [ 'Target' ]
df_with_dummies = pd.get_dummies(columns = cols_to_transform, data=data)

>      Native Country  Target_<=50K  Target_>50K  
>0      United-States             1            0  
>1      United-States             1            0  
>2      United-States             1            0  
>3      United-States             1            0  
>4               Cuba             1            0  

關於我要去哪里的問題以及如何將這種分類映射到僅列為“ Target”的任何想法?

假設您要引用此數據集 ,則可以使用map方法創建該列:

data [“ Target_binary”] = data [“ Target”]。map(lambda x:如果x ==“ >> 50K,則為1,否則為0)

使用字典replaceassign給新列:

dict = {'<=50K':1,'>50K':0}
dfout = df.assign(target_bin=df['target'].replace(dict)

pd.get_dummies應該將列中的每個原始值的唯一列拆分為一列。 您只想將布爾值列轉換為整數零或一

data['Target_binary'] = data.Target.eq('>50K').astype(int)

假設數據框中有兩個分類值“ a”,“ b”:

import pandas as pd
import numpy as np
data = pd.DataFrame({"Target":pd.Series(np.random.randn(5)*50000), "Value":["a","b","a","a","b"]})
cols_to_transform = ["Values"]
df_with_dummies = pd.get_dummies(columns = cols_to_transform, data=data)

然后,如果要將“ a”編碼為1,將“ b”編碼為0,則將獲得df_with_dummies的以下內容:

         Target  Value_a  Value_b
0   4329.130662        1        0
1 -64012.592710        0        1
2 -21050.741809        1        0
3 -32438.538928        1        0
4  13843.408700        0        1

Value_a列正是您要查找的內容。 或者,您可以執行以下操作:

data["result"] = (data["Value"]=="a").astype(int)

暫無
暫無

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

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