반응형
전자상거래 배송 데이터
제품 배송 시간에 맞춰 배송되었는지 예측모델 만들기
학습용 데이터 (X_train, y_train)을 이용하여 배송 예측 모형을 만든 후, 이를 평가용 데이터(X_test)에 적용하여 얻는 예측 확률값을 다음과 같은 형식의 CSV 파일로 생성하시오.(제출한 모델의 성능은 ROC-AUC 평가지표에 따라 채점)
(유의사항)
- 성능이 우수한 예측모형을 구현하기 위해서는 적절한 데이터 전처리, 피처엔지니어링, 분류알고리즘, 하이퍼파라미터 튜닝, 모형 앙상블 등이 수반되어야 한다.
- 수험번호.csv 파일이 만들어지도록 코드를 제출한다.
- 제출한 모델의 성능은 ROC-AUC 형태로 읽어들인다.
데이터 파일 읽기 예제
- 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")
답안 제출 참고
- 아래 코드 예측변수와 수험번호를 개인별로 변경하여 활용
- pd.DataFrame({'cust_id':X_test.cust_id, 'gender':pred}).to_csv('003000000.csv', index=False)
# 시험환경 세팅 (코드 변경 X)
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
def exam_data_load(df, target, id_name="", null_name=""):
if id_name == "":
df = df.reset_index().rename(columns={"index":"id"})
id_name = 'id'
else:
id_name = id_name
if null_name != "":
df[df == null_name] = np.nan
X_train, X_test = train_test_split(df, test_size=0.2, random_state=2021)
y_train = X_train[[id_name, target]]
X_train = X_train.drop(columns=[target])
y_test = X_test[[id_name, target]]
X_test = X_test.drop(column=[target])
return X_train, X_test, y_train, y_test
df = pd.read_csv("../input/customer-analytics/Train.csv")
X_train, X_test, y_train, y_test = exam_data_load(df, target='Reached.on.Time_Y.N', id_name='ID')
X_train.shape, X_test.shape, y_train.shape, y_test.shape
# EDA
# 데이터 확인
print(X_train.shape)
X_train.head()
# 레이블(타겟) 확인
y_train['Reached.on.Time_Y.N'].value_counts()
# X_train 결측치 확인
X_train.isnull().sum()
# X_test 결측치 확인
X_test.isnull().sum()
# 데이터 타입 확인
X_train.info()
# object 타입 컬럼, 고유값 개수 확인
X_train[['Warehouse_block', 'Mode_of_Shipment', 'Product_importance', 'Gender']].nunique()
# 데이터 전처리
# object 컬럼 삭제 (또는 라벨인코딩, 원핫인코딩)
X_train = X_train.drop(['Warehouse_block', 'Mode_of_Shipment', 'Product_importance', 'Gender'], axis=1)
X_test = X_test.drop(['Warehouse_block', 'Mode_of_Shipment', 'Product_importance', 'Gender'], axis=1)
X_train
# 모델 및 평가
from sklearn.lineal_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier
X_train_id = X_train.pop('ID')
X_test_id = X_test.pop('ID')
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train['Reached.on.Time_Y.N'], test_size = 0.2, random_state=2021)
from sklearn.metrics import roc_auc_score
model = LogisticRegression()
model.fit(X_tr, y_tr)
pred = model.predict_proba(X_val)
roc_auc_score(y_val, pred[:, 1])
model = KNeighborsClassifier()
model.fit(X_tr, y_tr)
pred = model.predict_proba(X_val)
roc_auc_score(y_val, pred[:, 1])
model = RandomForestClassifier()
model.fit(X_tr, y_tr)
pred = model.predict_proba(X_val)
roc_auc_socre(y_val, pred[:, 1]
model = XGBClassifier(eval_metrics = 'mlogloss', use_label_encoder=False)
model.fit(X_tr, y_tr)
pred = model.predict_proba(X_val)
roc_auc_score(y_val, pred[:,1])
# 모델 선택 및 결과 출력
model = KNeighborsClassifier()
model.fit(X_train, y_train['Reached.on.Time_Y.N'])
pred = model.predict_proba(X_test)
pred
submission = pd.DataFrame({
"ID" : X_test_id,
"Reached.on.Time_Y.N" : pred[:, 1]
})
submission.head()
submission.to_csv('submission.csv', index=False) # 수험번호.csv
반응형
'빅데이터분석기사 > 코드' 카테고리의 다른 글
[빅데이터분석기사] 실기 3회 2유형 풀이(Python) (0) | 2023.06.16 |
---|---|
[빅데이터분석기사] 실기 3회 1유형 풀이(Python) (0) | 2023.06.16 |
[빅데이터분석기사] 실기 2회 1유형 풀이(Python) (0) | 2023.06.14 |
[빅데이터분석기사] 작업형 2유형 연습문제 #2 (0) | 2023.06.14 |
[빅데이터분석기사] 작업형 2유형 연습문제 #1 (0) | 2023.06.12 |