인프런 커뮤니티 질문&답변
5회 기출 유형(작업형2) 풀이인데 이렇게 해도 될까요?
작성
·
59
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가지 경우의 수를 모두 테스트하여 최적의 조합을 찾는 방법도 효율적인 전략입니다.
작성하신 코드에 대해 몇 가지 주요 포인트 및 개선 사항을 제안드립니다.
주요 포인트:
인코딩:
LabelEncoder는 카테고리 데이터를 간단히 숫자로 변환합니다. 이는 대상 모델에 따라 성능 차이를 가져올 수 있습니다. 특히LightGBM은 카테고리 입력을 직접 다룰 수 있어,LabelEncoder보다는pd.get_dummies()같은 원핫 인코딩이 필요 없을 수도 있습니다.
모델 선택:
LightGBM은 빠른 학습 속도와 정확도로 알려져 있어 많은 경우 유리합니다.
성능 평가:
- 모델 성능을 평가할 때 RMSE는 회귀 문제의 예측 정확성을 측정할 수 있는 좋은 지표입니다.
- 모델 성능을 평가할 때 RMSE는 회귀 문제의 예측 정확성을 측정할 수 있는 좋은 지표입니다.
기타 사안:
lightgbm을 사용할 때randomstate가 아닌random_state로 설정해야 합니다. 작은 오타지만 코드 코드 실행에 영향을 줄 수 있습니다.
root_mean_squared_error함수는scikit-learn에 기본 제공되지 않으므로 별도의 구현이 필요할 수 있습니다. 대신mean_squared_error와numpy를 활용해 계산할 수 있습니다.
참고사항
- 현재 코드는 리그레션(연속형 변수 예측)을 위한 것으로 보이며,
root_mean_squared_error대신mean_squared_error를 사용 후 제곱근을 취해 RMSE를 계산하는 방법도 있습니다.
유사 질문 참고 링크:
- 5회 작업형2 질문있습니다.: 유사한 작업형 문제 해결 방안에 대한 토론입니다.
- 예시문제 작업형2 코드 질문: 작업형 2에 대한 기본적인 코드 구성에 대해 논의합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





