강의

멘토링

로드맵

Inflearn brand logo image

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

jayoh9811님의 프로필 이미지
jayoh9811

작성한 질문수

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

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

5회 기출 유형(작업형2) 풀이인데 이렇게 해도 될까요?

작성

·

37

0

# 데이터 불러오기
import pandas as pd

train = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/5_2/train.csv")
test = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p4/5_2/test.csv")


ytrain = train.pop('price')
 
cols = ['model','transmission','fuelType']


# train = pd.get_dummies(train)
# test = pd.get_dummies(test)

from sklearn.preprocessing import LabelEncoder
for col in cols:
  le = LabelEncoder()
  train[col]= le.fit_transform(train[col])
  test[col]= le.fit_transform(test[col])



from sklearn.model_selection import train_test_split
x_tr,x_val,y_tr,y_val = train_test_split(train, ytrain,test_size=0.2,random_state=2022 )





# from sklearn.ensemble import RandomForestRegressor 
# rf = RandomForestRegressor(random_state = 2022)
# rf.fit(x_tr,y_tr)
# y_pred = rf.predict(x_val)

import lightgbm as lgb
model = lgb.LGBMRegressor(randomstate=0,verbose=-1)
model.fit(x_tr,y_tr)
y_pred = model.predict(x_val) 




from sklearn.metrics import root_mean_squared_error
result = root_mean_squared_error(y_val,y_pred)

submit = pd.DataFrame(y_pred)
submit.to_csv('오지욱.csv',index=False)

# pd.read_csv('오지욱.csv') 
# 1324.4944863328471 원핫 랜덤포레스트
# 1320.1181960644112 레이블 랜덤포레스트
# 1271.4972710398029 레이블 lgb               -> 선택
# 1282.70065302789 원핫 lgb

작업형 2에서 더 어렵게 나오면 그냥 다시 시험친다는 각오로 원핫,레이블 -> 랜포,lgb 경우의 수 4가지 구한뒤 제일 좋은 수치를 가진 모델로 작업해서 제출하고자 합니다. 지금까지로 봐왔을땐 작업형 2는 이정도로만 해도 충분 하겠죠?

답변 2

0

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

네 충분합니다. 잘하고 계셔요!!

화이팅입니다 🙂

0

안녕하세요, 인프런 AI 인턴입니다. jayoh9811님.

작업형 2문제에서 다양한 인코딩 방식과 모델을 시도하여 최적의 결과를 제출하려는 접근이 아주 좋습니다. 머신러닝에서 인코딩 및 모델 선택은 종종 모든 데이터를 탐색하는 데 도움이 되며, 4가지 경우의 수를 모두 테스트하여 최적의 조합을 찾는 방법도 효율적인 전략입니다.

작성하신 코드에 대해 몇 가지 주요 포인트 및 개선 사항을 제안드립니다.

주요 포인트:

  1. 인코딩:

    • LabelEncoder는 카테고리 데이터를 간단히 숫자로 변환합니다. 이는 대상 모델에 따라 성능 차이를 가져올 수 있습니다. 특히 LightGBM은 카테고리 입력을 직접 다룰 수 있어, LabelEncoder보다는 pd.get_dummies() 같은 원핫 인코딩이 필요 없을 수도 있습니다.
  2. 모델 선택:

    • LightGBM은 빠른 학습 속도와 정확도로 알려져 있어 많은 경우 유리합니다.
  3. 성능 평가:

    • 모델 성능을 평가할 때 RMSE는 회귀 문제의 예측 정확성을 측정할 수 있는 좋은 지표입니다.
  4. 기타 사안:

    • lightgbm을 사용할 때 randomstate가 아닌 random_state로 설정해야 합니다. 작은 오타지만 코드 코드 실행에 영향을 줄 수 있습니다.
    • root_mean_squared_error 함수는 scikit-learn에 기본 제공되지 않으므로 별도의 구현이 필요할 수 있습니다. 대신 mean_squared_errornumpy를 활용해 계산할 수 있습니다.

참고사항

  • 현재 코드는 리그레션(연속형 변수 예측)을 위한 것으로 보이며, root_mean_squared_error 대신 mean_squared_error를 사용 후 제곱근을 취해 RMSE를 계산하는 방법도 있습니다.

유사 질문 참고 링크:

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

jayoh9811님의 프로필 이미지
jayoh9811

작성한 질문수

질문하기