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

2023년6월2일 파이썬공부 - 퇴근후딴짓 님의 유투브 4. 작업형2 예시문제 무작정 따라해보기 - 보면서 따라 쳐 보는 포스팅

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

https://youtu.be/_GIBVt5-khk

 

 

#===================================================#
# 백화점 고객의 1년간 구매 데이터 
# y_train.csv : 고객의 성별 데이터 (학습용), csv 형식의 파일 # gender 1 남성 0 여성 
# x_train.csv, x_test.csv : 고객의 상품구매 속성 (학습용 및 평가용), csv 형식의 파일 
# 학습용 데이터 y_train.csv, x_train.csv 를 이용하여 성별예측 모형을 만든 후, 
# 평가용 데이터 x_text.csv 에 적용하여 얻은 고객의 성별예측값 (남자일 확률)을
# 다음과 같은 형식의 csv 파일로 생성하시오. (custid,gender)
# 제출한 모델의 성능은 ROC-AUC 평가지표에 따라 채점
# 적절한 데이터 전처리, Feature Engineering, 분류 알고리즘 사용, 초매개변수 최적화, 모형 앙상블 해야함
# 수험번호.csv (0000.csv) 파일이 만들어지도록 코드를 제출한다. 
# dataset 은 'data/y_train.csv'의 형태로 읽어들인다. 
#===================================================#
# 1. 라이브러리
# 2. 데이터 불러오기
# 3. EDA
# 4. 피처 엔지니어링
# 5. 모델링 & 하이퍼파라미터 튜닝 & 앙상블 
# 6. csv 파일 
#===================================================#

# 1. 라이브러리
import pandas as pd

# 2. 데이터 불러오기
X = pd.read_csv("data/X_train.csv")
y = pd.read_csv("data/y_train.csv")
test = pd.read_csv("data/X_test.csv")

# 3. EDA
# 위쪽의 탭에서 데이터 확인 가능
print(X.isnull().sum())
print(test.isnull().sum())
print(X.info())

# X_train 데이터 기초통계 
print(X.describe())
# include 입력변수는 결과를 요약하기 위한 데이터 타입의 리스트를 입력받는다. 
print(X.describe(include='None')) #기본값. 수치데이터가 있는 열만 결과에 포함.
print(X.describe(include='object')) 
print(X.describe(include='number')) 
print(X.describe(include='category')) 
print(X.describe(include='all')) 
# exclude도 가능 # 제외할 열 선택 
print(X.describe(exclude='number')) 

# percentiles : 분위수가 출력되는 퍼센트를 입력받는다. 입력되는 값은 0과 1 사이어야 한다. 기본적으로는 0.25, 0.5, 0.75가 입력되어 있다. 이 값들은 25%, 50%, 75% 를 의미한다. 



# 데이터 전처리
X = X.fillna(0)
test = test.fillna(0)

X = X.drop(['cust_id'],axis=1) #필요없으니 삭제
cust_id = test.pop('cust_id') #나중에 csv에 넣으려고 빼둠

# 4. 피처 엔지니어링
# 주 구매 상품과 주 구매 지점을 레이블 인코딩 해준다 
from sklearn.preprocessing import LabelEncoder
cols = ['주구매상품','주구매지점']
for col in cols:
  le = LabelEncoder()
  X[col] = le.fit_transform([X[col]])
  test[col] = le.transform(test[col])

# 5. 모델링 & 하이퍼파라미터 튜닝 & 앙상블 
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=2022)
#random_state= 랜덤 요소를 고정하기 위해 특정 값을 입력함. 고정하지 않으면 모델 성능 향상이 전처리 때문인지 튜닝 때문인지 알수 없음. 
model.fit(X,y['gender'])
predictions = model.predict_probs(test)

# 6. csv 파일 
output = pd.DataFrame({'cust_id':cust_id, 'gender':predictions[:,1]})
output.to_csv("0000.csv",index=False)

# 관련 코드!!!  https://www.kaggle.com/code/agileteam/t2-exercise-tutorial-baseline/notebook
반응형

댓글