해결된 질문
작성
·
38
0
import pandas as pd
train = pd.read_csv("data/customer_train.csv")
test = pd.read_csv("data/customer_test.csv")
#
print(train.shape, test.shape)
#결측치 채우기
train['환불금액']=train['환불금액'].fillna(train['환불금액'].median())
test['환불금액']=test['환불금액'].fillna(test['환불금액'].median())
# print(train.isnull().sum())
#범주형컬럼 카테고리 수 확인하기
cols=train.select_dtypes(include="O").columns
print(cols)
for col in cols:
same=set(train[col].unique())==set(test[col].unique())
print(col,same)
train=train.drop('회원ID',axis=1)
test=test.drop('회원ID',axis=1)
target=train.pop("총구매액")
mid=len(train)
#데이터 합치고 인코딩 후 다시 분할하기
df=pd.concat([train,test],axis=0)
print(df)
#라벨인코딩하기
from sklearn.preprocessing import LabelEncoder
le=LabelEncoder()
for col in cols:
df[col]= le.fit_transform(df[col])
# print(df.head(8))
#다시 나누기
train=df.iloc[:mid].copy()
test=df.iloc[mid:].copy()
print(train.shape, test.shape)
#민맥스스케일링(추후)
#train데이터 분할하기
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=100)
# #모델구축(1) #707.539
# from sklearn.ensemble import RandomForestRegressor
# model=RandomForestRegressor(random_state=100)
# model.fit(X_tr, y_tr)
# pred=model.predict(X_val)
#모델구축(2) 705.1955
import lightgbm as lgb
model=lgb.LGBMRegressor(random_state=0, verbose=-1)
model.fit(X_tr, y_tr)
pred=model.predict(X_val)
#성능평가RMSE
from sklearn.metrics import root_mean_squared_error
print(root_mean_squared_error(y_val, pred))
성능평가한 값이 선생님 결과랑 터무니없이 차이가 많이 나네요 ㅠㅠ어디가 잘못된걸까요
답변 3
0
질문의 이유를 찾았습니다.
제가 영상에 빠르게 자막처리 할게요
랜포 800대 점수가 나오는 것이 정상입니다.
(lightgbm 700대)
작업형2가 새로 나오면서 주최측에서 안내 없이 데이터를 3번이나 변경하다보니 그 사이 촬영이 되어 그렇습니다.
0
0
안녕하세요, 인프런 AI 인턴입니다. 이선희님.
작성하신 코드를 검토해보니, 기본적인 데이터 전처리 및 모델 학습 과정이 잘 구성되어 있습니다. 하지만 성능(RMSE)이 선생님 결과와 크게 차이가 나는 경우는 다음 사항들을 점검해보시면 좋을 것 같습니다.
fillna
로 결측치를 채우실 때, train
과 test
에서 같은 중간값으로 채우시는 게 문제가 될 수는 없습니다만, 전체 데이터의 분포에 따라 달라질 수 있습니다. 만약 데이터 분포에 따라 너무 큰 차이가 있다면 다시 확인이 필요할 수 있습니다.train
과 test
가 달라지지 않았는지 확인해 보십시오.LGBMRegressor
를 사용할 때, random_state
와 기타 파라미터들이 전혀 다른 결과를 초래할 수 있습니다. 동일한 조건이 설정되었는지 확인하세요.verbose=-1
은 출력을 억제하지만, 학습과정의 디버그 정보가 필요하다면 다른 값을 사용하여 출력을 살펴보시는 것도 방법입니다.root_mean_squared_error
대신 mean_squared_error
를 사용하고 squared=False
를 설정하여 RMSE를 직접 계산하십시오.from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_val, pred, squared=False)
print("RMSE:", rmse)
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.