簡體   English   中英

給出輸入標簽的單熱編碼標簽

[英]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)

也許您可以嘗試使用scikit-learn進行單熱編碼 在這里找到一個全面的例子。

暫無
暫無

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

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