데이터 확인
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
mem = pd.read_csv('member.csv')
tran = pd.read_csv('transaction.csv')
mem.head()
mem.info()
mem.describe()
tran.head()
tran.info()
tran.describe()
평균 추가 및 데이터 합치기
tran['avg_price'] = tran['total_amount'] / tran['num_item']
tran
데이터 합치기
# Groupby를 활용하여 id별 1줄로 데이터 요약
tran_mean = tran.groupby('id').mean()
tran_mean
# ID별 거래 건수 확인
tran_cnt = tran['id'].value_counts()
tran_cnt
# concat으로 두 데이터 결합
tran_df = pd.concat([tran_mean, tran_cnt], axis=1)
tran_df
# Column 이름 변경
tran_df.columns = ['num_item', 'total_amount', 'avg_price', 'count']
tran_df
# Join을 사용하기 위해, id를 인덱스로 설정
mem.set_index('id', inplace=True)
mem
# join으로 데이터 합치기
mem.join(tran_df)
data = mem.join(tran_df)
data
결측값 확인 및 처리
data.isna().sum() / len(data)
카테고리 데이터 처리
data['zip_code'].nunique() # 3
data['zip_code'].unique() # array(['Surburban', 'Rural', 'Urban'], dtype=object)
data['channel'].nunique() # 3
data['channel'].unique() # array(['Phone', 'Web', 'Multichannel'], dtype=object)
data = pd.get_dummies(data, columns=['zip_code', 'channel'], drop_first=True)
data
모델링
# 랜덤 포레스트 모델링
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(data.drop('conversion', axis=1), data['conversion'], test_size=0.3, random_state=100)
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(max_depth = 10, random_state = 100)
model.fit(X_train, y_train)
예측과 평가하기
pred = model.predict(X_test)
y_test
from sklearn.metrics import accuracy_score, confusion_matrix
accuracy_score(y_test, pred) # 0.87515625
confusion_matrix(y_test, pred)
from sklearn.metrics import classification_report
print(classification_report(y_test, pred))
model.feature_importances_
X_train.columns
plt.figure(figsize=(20,10))
sns.barplot(x = X_train.columns, y = model.feature_importances_)
'빅데이터 분석가 양성과정 > Python - 머신러닝' 카테고리의 다른 글
Ecommerce Machine Learning - 구매 요인 분석 ( Decision Tree) (0) | 2024.07.12 |
---|---|
Ecommerce Machine Learning - 고객 이탈 예측(KNN) (2) | 2024.07.12 |
Ecommerce Machine Learning - 광고 반응률 예측(로지스틱 회귀) (0) | 2024.07.12 |
DBSCAN( Density Based Spatial clustering of application with noise) (0) | 2024.07.12 |
군집화 (K-Means) - 실습 (0) | 2024.07.12 |