[英]One-hot-encoding labels giving input labels
我正在嘗試對 Pandas 數據框應用單熱編碼,但我無法給出類別參數。 我的想法是在類別和編碼之間進行對應,例如:
CATEGORIES = ['A','B','C']
Y = pd.get_dummies(data['Article_Topic_1']).values
例如,對於類別'A'
, Y
將為[0,0,1]
,但我想規定'A'
的編碼為[1,0,0]
。
如果這是不可能的,有沒有辦法規定編碼並知道那里的確切字符串?
我不認為你可以直接用get_dummies()
做到這一點。 但是僅僅重新組織結果怎么樣? 如果我正確地回答了您的問題,您希望對單熱編碼數據的列重新排序以匹配規定的排序。
categories = ["A", "B", "C"]
Y = pd.get_dummies(data["Article_Topic_1"])
Y = Y[categories].values
這里有一個函數檢查了該解決方案是否有效的一些假設。
def get_dummies_for_coding(series, ordering):
# Ordering must contain only values present in series.
assert(len(set(ordering)-set(series.unique()))==0)
# It's easier to work with series here, because pd.get_dummies()
# will operate with string prefixes for data-frames, which make
# things a bit more complicated.
assert(isinstance(series, pd.Series))
dummies = pd.get_dummies(series)
dummies = dummies[ordering]
#return dummies
return dummies.values
# Example
df = pd.DataFrame([["a", "foo"],
["a", "bar"],
["b", "bar"],
["a", "baz"],
["b", "bar"]],
columns=["colA", "colB"])
orderingA = ["b", "a"]
orderingB = ["baz", "bar", "foo"]
ret = get_dummies_for_coding(df["colA"], orderingA)
print(ret)
ret = get_dummies_for_coding(df["colB"], orderingB)
print(ret)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.