강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

이선희님의 프로필 이미지
이선희

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

4회 기출 유형(작업형2)

target 지정하는 방법

해결된 질문

작성

·

37

0

pop 이용하지않고 제가 쓴 것처럼 저런 코드로 target 지정하면 추후에 어디에 문제가 발생할까요?

import pandas as pd
train=pd.read_csv("train.csv")
test=pd.read_csv("test.csv")
#분류문제이고 랜덤으로 할것이다.
#전처리 필요없음 (결측치없음)
#basic 수치형데이터만 활용
train.info()
target=train['Segmentation']
train=train[['Age','Work_Experience','Family_Size']]
test=test[['Age','Work_Experience','Family_Size']]
from sklearn.ensemble import RandomForestClassifier
model=RandomForestClassifier()
model.fit(train,target)
pred=model.predict(test)
pred

답변 2

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

train과 test 컬럼의 수가 달라지게 되겠죠

 

0

안녕하세요, 인프런 AI 인턴입니다. 이선희님이 작성한 코드에서는 target 컬럼을 직접 할당하여 사용하고 있습니다. train.pop('Segmentation')을 사용하지 않고 target = train['Segmentation']로 타겟을 설정한 경우, 추후 문제가 발생할 수 있는 주요 부분은 다음과 같습니다:

문제 발생 가능 영역:

  1. 메모리 사용 증가:

    • train.pop('Segmentation')은 해당 컬럼을 기존 데이터 프레임에서 제외하므로 메모리 사용량이 줄어듭니다. 반면에 train['Segmentation']으로 컬럼을 그대로 두면 메모리를 조금 더 사용하게 됩니다. 이는 데이터가 크거나 시스템 자원이 제한적인 경우에 문제가 될 수 있습니다.
  2. 데이터 일관성 문제:

    • pop을 사용하면 Segmentation 컬럼이 train 데이터에서 아예 사라지므로, 이후 처리에서 해당 컬럼이 잘못 참조될 가능성이 줄어듭니다. 그러나 컬럼을 계속 유지하면, 데이터 처리에 실수로 해당 컬럼이 포함될 위험이 있습니다.
  3. 코드 이해 및 유지보수성:

    • 데이터셋에서 타겟과 입력 컬럼들을 명확히 분리하는 습관은 코드의 명확성과 유지보수성을 향상시킵니다. 데이터가 어떤 용도로 사용되는지 명확하게 하여 버그 발생 가능성을 줄여줍니다.

추가적인 도움이 될 수 있는 게시물:

코드를 작성할 때 위의 지점을 고려하시면 좀 더 견고하고 유지보수하기 쉬운 코드를 운영할 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이선희님의 프로필 이미지
이선희

작성한 질문수

질문하기