강의

멘토링

로드맵

Inflearn brand logo image

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

우현님의 프로필 이미지
우현

작성한 질문수

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

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

해당 문제 코드 작성 문의

해결된 질문

작성

·

40

0

#print(train.shape, test.shape)

#print(train.isnull().sum())
#print(test.isnull().sum())

Xtrain = train.drop(['ID', 'Segmentation'], axis = 1)
ytrain = train['Segmentation']
Xtest = test.drop(['ID'], axis = 1)
test_ID = test['ID']

col_cat = Xtrain.select_dtypes(include = 'object').columns
col_num = Xtrain.select_dtypes(exclude = 'object').columns


# 수치형 스케일링
from sklearn.preprocessing import MinMaxScaler, OneHotEncoder

scaler = MinMaxScaler()
Xtrain[col_num] = scaler.fit_transform(Xtrain[col_num])
Xtest[col_num] = scaler.transform(Xtest[col_num])

# 범주형 인코딩
encoder = OneHotEncoder(handle_unknown = 'ignore', sparse_output = False)

Xtrain_ohe = encoder.fit_transform(Xtrain[col_cat])
Xtest_ohe = encoder.transform(Xtest[col_cat])

from sklearn.model_selection import train_test_split

X_train, X_val, y_train, y_val = train_test_split(Xtrain_ohe, ytrain, test_size = 0.2, random_state = 2002)

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier()
model.fit(X_train, y_train)
y_pred = model.predict(X_val)

y_test = model.predict(Xtest_ohe)

submit = pd.DataFrame({'ID' : test_ID, 'y_test' : y_test})
submit.to_csv('0000.csv', index = False)

submit2 = pd.read_csv('0000.csv')
print(submit2)

이정도 수준으로 코딩 작성했는데 큰 문제 없겠죠?
중급 ~ 고급사이로 인지됩니다 제가 생각하기엔

답변 2

0

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

공부를 많이 하신 것 같네요. 제가 알려드리지 않은 OneHotEncoder도 사용하시고 🙂

네 이정도면 충분합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 우현님이 작성하신 코드에 대해 몇 가지 유의사항과 개선점, 그리고 추가적인 설명을 드리도록 하겠습니다.

코드 리뷰 및 개선점:

  1. OneHotEncoder 사용법:

    • OneHotEncoder는 One-Hot-Encoding을 통해서 범주형 데이터를 수치형 데이터로 변환합니다. 현재 사용하신 방식은 잘 적용되었습니다. 다만, One-Hot-Encoding 과정에서는 train과 test 데이터의 카테고리 수가 맞지 않을 수 있으므로 유의해야 합니다. 예를 들어, train 데이터에만 존재하는 카테고리가 있을 경우, test 데이터도 훈련 데이터와 동일한 열 구조를 가지도록 처리해야 합니다.
  2. MinMaxScaler 적용:

    • 이 부분도 잘 처리되었으며, 각각의 숫자형 데이터에 대해 0과 1 사이로 정규화합니다. 트리 기반 모델에서는 필수적이지 않지만, 다른 모델과 비교할 때 유용할 수 있습니다.
  3. RandomForestClassifier:

    • 내부적으로 RandomForestClassifier는 트리 기반 모델이기 때문에 데이터의 스케일에 민감하지 않지만, 많이 사용하는 모델 중 하나로 잘 선택하셨습니다.
  4. 결과 제출 준비:

    • 제출 파일 준비시 submit = pd.DataFrame({'ID' : test_ID, 'y_test' : y_test}) 대신 submit = pd.DataFrame({'ID' : test_ID, 'Segmentation' : y_test})와 같이 타겟 컬럼 이름을 원래 제출 형식에 맞춰야 합니다.
  5. model.predict() 결과:

    • y_predy_test를 저장하면서 파일에 출력하는 부분은 잘 구성되어 있습니다.

참고 링크 및 추가 정보:

  • 유사 질문 예시와 해결 접근 방법이 관련된 링크를 몇 개 추천드릴게요. 이 링크들은 머신러닝에서 데이터 전처리와 인코딩에 대한 구체적인 사례를 제공합니다:

작성하신 코드의 구조나 사용된 방법론이 중급에서 고급 사이로 잘 구성되어 있다고 생각됩니다. 코드가 중급~고급 수준으로 발전할 수 있도록 추가적인 예제를 참고하면 더욱 도움이 될 것 같습니다.

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

우현님의 프로필 이미지
우현

작성한 질문수

질문하기