keras로 멀티 클래스 분류에서 문자열 레이블을 처리하는 방법은 무엇입니까?


18

나는 기계 학습과 keras에 초보자이며 이제 keras를 사용하여 멀티 클래스 이미지 분류 문제를 해결하고 있습니다. 입력은 태그 된 이미지입니다. 사전 처리 후 훈련 데이터는 Python 목록에 다음과 같이 표시됩니다.

[["dog", "path/to/dog/imageX.jpg"],["cat", "path/to/cat/imageX.jpg"], ["bird", "path/to/cat/imageX.jpg"]]

"dog", "cat"및 "bird"는 클래스 레이블입니다. 이 문제에는 one-hot 인코딩을 사용해야한다고 생각하지만이 문자열 레이블을 처리하는 방법은 명확하지 않습니다. 이 방법으로 sklearn의 LabelEncoder ()를 시도했습니다.

encoder = LabelEncoder()
trafomed_label = encoder.fit_transform(["dog", "cat", "bird"])
print(trafomed_label)

그리고 출력은 [2 1 0]이며, [[1,0,0], [0,1,0], [0,0,1]]과 같은 무언가에 대한 나의 기대 출력과 다릅니다. 일부 코딩으로 수행 할 수는 있지만 처리 할 수있는 "표준"또는 "전통적인"방법이 있는지 알고 싶습니다.

답변:


14

Sklearn의 LabelEncoder모듈은 모든 클래스를 찾고 각각 0부터 시작하는 숫자 ID를 할당합니다. 즉, 클래스 표현이 원래 데이터 세트에있는 것이 무엇이든 이제 각 클래스를 나타내는 간단한 일관된 방법을 갖게됩니다. one-hot 인코딩을 수행하지는 않지만 올바르게 식별 할 수는 있지만 거의 비슷하며 해당 ID를 사용하여 다른 코드에서 one-hot-encoding을 신속하게 생성 할 수 있습니다.

one-hot 인코딩을 원한다면 LabelBinarizer대신 사용할 수 있습니다 . 이것은 매우 유사하게 작동합니다 :

 from sklearn.preprocessing import LabelBinarizer
 encoder = LabelBinarizer()
 transfomed_label = encoder.fit_transform(["dog", "cat", "bird"])
 print(transfomed_label)

산출:

[[0 0 1]
 [0 1 0]
 [1 0 0]]

그러나 새로운 색상을 예측하려고 할 때 핫 인코딩이 어떻게 도움이 될 수 있습니까? 아마도 귀하의 경우 모델을 다시 훈련시켜야 할 것입니다. 해결책이 있습니까?
gtzinos

@gtzinos : 다른 질문처럼 보입니다. 아마도 사이트에서 물어보십시오. 만약 그렇다면, NN이 새로운 아이템 (트레이닝 데이터에는 보이지 않지만 논리적으로 새로운 입력에서 발생해야 함)을 예측하거나 온라인 교육 데이터에서 마주 칠 때 즉시 새로운 클래스를 추가해야하는지 걱정해야합니다.
Neil Slater
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.