해결된 질문
작성
·
382
0
import pandas as pd
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")
# print(train.shape,test.shape)
# print(train.head())
# print(test.head())
# print(train.isnull().sum())
# print(test.isnull().sum())
# print(train.describe(include='object'))
# print(test.describe(include='object'))
target = train.pop('price')
from sklearn.preprocessing import LabelEncoder
cols = ['model']
for col in cols:
le = LabelEncoder()
train[col] = le.fit_transform(train[col])
test[col] = le.transform(test[col])
# print(train.head())
train = pd.get_dummies(train)
test = pd.get_dummies(test)
# from sklearn.preprocessing import MinMaxScaler
# cols = ['year','mileage','tax','mpg','engineSize']
# scaler = MinMaxScaler()
# train[cols] = scaler.fit_transform(train[cols])
# test[cols] = scaler.transform(test[cols])
# print(train.head())
# from sklearn.model_selection import train_test_split
# X_tr,X_val,y_tr,y_val = train_test_split(train,target,test_size=0.2,random_state=2023)
# from sklearn.ensemble import RandomForestRegressor
# model = RandomForestRegressor(random_state=2023,max_depth=5,n_estimators=200)
# model.fit(X_tr,y_tr)
# pred = model.predict(X_val)
# print(pred)
import lightgbm as lgb
model = lgb.LGBMRegressor(random_state=2023,max_depth=5,n_estimators=200)
model.fit(X_tr,y_tr)
pred = model.predict(X_val)
from sklearn.metrics import mean_squared_error
print(mean_squared_error(y_val,pred)**0.5)
pred = model.predict(test)
pd.DataFrame({'pred':pred}).to_csv("result.csv",index=False)
pd.read_csv("result.csv")
질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요
먼저 유사한 질문이 있었는지 검색해보세요
model의 unique개수가 19개로 많아서 model만 라벨인코딩한 후 나머지는 원핫인코딩으로 진행했는데 위의 코드처럼 하는게 맞을까요?
수치형에서 minmax사용했을 때, 별 차이가 없으면 범주형 인코딩만 진행해도 될까요? 아니면 범주형은 필수이고 수치형은 선택이니, 굳이 안해봐도 될까요?
lightgbm을 사용했을때 값은 나오지만 아래와 같은 오류도 같이 출력됩니다. 무슨 문제인가요?
[LightGBM] [Warning] No further splits with positive gain, best gain: -inf
learning_rate는 lightgbm에만 쓸 수 있는건가요? 랜덤포레스트에서 사용시 오류가 뜹니다.
max_depth는 3~7, n_estimators는 200~800사이로 하는게 맞나요?
실습환경을 보면 데이터가 자동으로 불러와져있는데, 실제 시험에서도 자동으로 불러와져있나요? 아니면, 데이터 저장 위치를 알려주나요?
작업형1,2,3 모두 제출은 여러번 가능하고 마지막으로 제출한 값이 저장되는게 맞나요?
답변 1
0
1 네 잘 풀이 한 것 같아요
2 네 스케일링은 선택이에요! 인코딩은 필수 입니다.
3 모델이 더 이상의 유의미한 분할을 찾지 못했다는 것을 의미합니다. 이는 일반적으로 모델이 충분히 학습되었거나, 데이터에 더 이상 학습할 정보가 없음을 나타냅니다. 이 경고는 성능에 크게 영향을 미치지 않으므로 걱정할 필요는 없습니다.
4 네 부스팅 계열에만 있습니다 랜덤포레스트에는 없는 파라미터입니다.
5 분류일 때 예를 들어서 설명했습니다. 회귀는 max_depth가 제 경험으로는 더 컷습니다.(7~15) 그런데 경험적인 수치일 뿐 데이터에 따라 달라지니 참고로 범위는 생각해주세요. 성능이 개선되지 않는데 무리하게 튜닝할 필요 없습니다.
6 지금까지는 불러오는 코드는 작성되어 있었어요
7 네 맞습니다 그래서 한 번 더 풀고 다시 제출하지 않는 경우도 간혹 있으니 주의해주세요!!
합격 응원합니다 🙂