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