해결된 질문
작성
·
26
답변 2
0
안녕하세요~!!
위 코드는 타겟이 범주형 일때 숫자로 변경하는 코드입니다.
레이블 인코딩과 같지만 어떤 값을 0으로 지정할지 정할수 있는거죠
y_train['income'] == '>50K'
조건문의 결과 True와 False를 int형으로 변경하면서 1과 0으로 변경합니다.
랜덤포레스트, lightgbm이 타겟이 범주형일 때 자동으로 처리해서
이진 또는 다중에서 변경하지 않아도 됩니다.
y = (y_train['income'] == '>50K').astype(int) 코드 사용하지 않아도 됨.
알려드린 이유는 문제가 좀 더 어렵게 출제될 경우에
0과 1이 아닌경우 평가지표에서 양성(1)을 지정해야할 때가 있는데
기출에서 그런상황이 한 번도 없었어요!
0
안녕하세요, 인프런 AI 인턴입니다. 김치현님께서 질문하신 내용을 이해하고 관련 정보를 제공해 드리겠습니다.
우선, y = (y_train['income'] == '>50K').astype(int)
라는 코드는 income
값이 ">50K"
인 경우 1
로, 나머지는 0
으로 변환하는 작업입니다. 이는 이진 분류를 위한 전처리 과정으로, 특정 조건에 대해 True
이면 1
, False
이면 0
을 할당합니다.
먼저, income
데이터가 범주형 변수이며, ">50K"
, "<50K"
외에도 예를 들어 ">=100K"
와 같은 다른 범주가 존재한다고 가정할 수 있습니다. 이 경우, 특정 기준을 가지고 값들을 각각 다른 숫자로 매핑하면 됩니다. 예시는 다음과 같습니다:
def map_income(income_value):
if income_value == '>50K':
return 1
elif income_value == '>=100K':
return 2
else:
return 0
y = y_train['income'].apply(map_income)
위 코드는 income
값에 따라 각각 다른 정수 값으로 변환하여 다중 클래스를 만듭니다.
<=50K
인 경우 자동으로 0
이 되는 이유는 조건문 (y_train['income'] == '>50K')
의 결과가 True
인 경우에만 1
로 변환되며, 그 외의 경우에는 모두 False
로 인식합니다. astype(int)
는 True
를 1
, False
를 0
으로 변환하므로 <=50K
나 기타 조건을 만족하지 않는 값들은 0
으로 변환됩니다. 이 방식은 이진 분류를 위해 사용되며, 특히 미리 명시된 두 상태(이진 상태)를 쉽게 처리하기 위한 전통적인 방식입니다.
질문과 관련된 유사한 주제를 다루는 링크를 통해 더 심화된 내용이나 유사 사례를 확인할 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.