본문 바로가기
IT,SW,Data,Cloud,코딩/Python

20230619 lightgbm

by 착실하게 2023. 6. 19.
반응형

lightgbm 은 결측치 처리도 필요없고 (object 타입은 astype('category') 해주면) 인코딩도 필요없다 ㄷㄷ 

n_estimator 올릴 때 learning_rate 낮추기만 주의해주기!

 

import pandas as pd
X_test = pd.read_csv("data/X_test.csv")
X_train = pd.read_csv("data/X_train.csv")
y_train = pd.read_csv("data/y_train.csv")

train = pd.concat([X_train,y_train['gender']],axis=1)
test = X_test.copy()

# 1. 랜덤포레스트
# 2. lightgbm (결측치처리 및 인코딩이 필요없음) #object 대신에 category 로 바꿔주면 인코딩 필요없다. 

train['주구매지점'] = train['주구매지점'].astype('category')
train['주구매상품'] = train['주구매상품'].astype('category')

from sklearn.model_selection import train_test_split 
X_tr, X_val, y_tr, y_val = train_test_split(train.drop('gender',axis=1),train['gender'],test_size=0.2,random_state=0)

from lightgbm import LGBMClassifier 
model = LGBMClassifier(random_state=0, max_depth=5, n_estimators=400, learning_rate=0.02) # n_estimators 올리기 + learning_rate 내리기 (이 2개는 함께 가야함)
model.fit(X_tr,y_tr)
pred = model.predict_proba(X_val)
# print(pred)

from sklearn.metrics import roc_auc_score 
print(roc_auc_score(y_val,pred[:,1]))
반응형

댓글