Machine Learning/Case Study ๐ฉ๐ป๐ป26 [Pandas] ํ์ด์ฌ์ผ๋ก ์ด์ปค๋จธ์ค ๋ฐ์ดํฐ A/B test ๊ฒฐ๊ณผ ํด์ (feat. ํต๊ณ ๊ฒ์ ) ๋ฐ์ดํฐ ์ถ์ฒ : ์ผ๊ธ https://www.kaggle.com/code/sergylog/ab-test-data-analysis ๋ผ์ด๋ธ๋ฌ๋ฆฌ & ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ import numpy as np import pandas as pd from scipy.stats import mannwhitneyu from scipy.stats import ttest_ind from scipy.stats import norm from scipy.stats import pearsonr from scipy.stats import shapiro import matplotlib.pyplot as plt import seaborn as sns from tqdm.auto import tqdm df = pd.read_csv('AB_Test.. 2024. 1. 30. [Home Credit Default Risk] 5. ์ด์ ๋์ถ์ด๋ ฅ ๋ฐ์ดํฐ EDA, FE ์ํ(์์ ์ค) ๐๋ฐ์ดํฐ ์ค๋ช : Previous_Application ์ด ์ผ๊ธ ๋ํ๋ ๋์ถ ์ ๋ณด์ ๋ฐ๋ผ ์ฐ์ฒด ์ฌ๋ถ๋ฅผ ์์ธกํ ์ ์๋ ๋ฉ์ธ train ๋ฐ์ดํฐ ์ธ์, ๊ณ ๊ฐ ๋ณ๋ก ์ด์ ๋์ถ ์ด๋ ฅ ํํฉ ๋ฐ์ดํฐ๋ ์ ๊ณตํ๊ณ ์๋ค. ์ด์ ๋์ถ์ด๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ, ๋ฉ์ธ ๋ฐ์ดํฐ ์ ๊ณผ ๊ฒฐํฉํ์ฌ ์์ธก ๊ฒฐ๊ณผ๊ฐ ๋์์ง๋์ง ํ์ธํด๋ณด์. ์์ธํ ๋ฐ์ดํฐ์ ๊ณผ ์ปฌ๋ผ ์ค๋ช ์ ์ผ๊ธ์์ ํ์ธํ์ธ์! ๋ฐ์ดํฐ ๋ก๋ฉ prev = pd.read_csv('previous_application.csv') print(prev.shape, apps.shape) ๋ฉ์ธ ๋ฐ์ดํฐ์ ๊ณผ ์กฐ์ธํ์ฌ key(ID) ๊ฐ ๊ธฐ์ค์ผ๋ก ์ฒดํฌ ๋ฉ์ธ ๋ฐ์ดํฐ์ ์ธ apps ๋ฐ์ดํฐ์ ์กฐ์ธ ์ด๋, ํค ๊ฐ์ธ SK_ID_CURR ๊ธฐ์ค์ผ๋ก merge ํ๋, indicator๋ฅผ ์ค์ ํ์ฌ ๋ ๋ฐ์ดํฐ์ id ์ฐจ.. 2023. 11. 15. [Home Credit Default Risk] 4. ์ด์ ๋์ถ ์ด๋ ฅ ๋ฐ์ดํฐ EDA ๋ฐ ๋ณํฉ 1. ์ด์ application(๋ฉ์ธ๋ฐ์ดํฐ) ์ Feature Engineering ํจ์ ๋ณต์ฌ def get_apps_processed(apps): # EXT_SOURCE_X FEATURE ๊ฐ๊ณต apps['APPS_EXT_SOURCE_MEAN'] = apps[['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']].mean(axis=1) apps['APPS_EXT_SOURCE_STD'] = apps[['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']].std(axis=1) apps['APPS_EXT_SOURCE_STD'] = apps['APPS_EXT_SOURCE_STD'].fillna(apps['APPS_EXT_SOURCE_STD']... 2023. 11. 9. [Home Credit Default Risk] 3.์ฃผ์ Feature๋ค์ ๋ํ feature engineering 1. ๊ฒฐ์ธก์น ์ฒ๋ฆฌ ์์ EDA์ ๋ถํฌ ์๊ฐํ, ๋ฒ ์ด์ค๋ผ์ธ ๋ชจ๋ธ๋ง์ feature Importance๋ฅผ ํ ๋๋ก ์ฃผ์ ํผ์ณ๋ฅผ ์ ์ ๊ฐ ํผ์ณ์ null ๊ฐ ํ์ธ app_train[['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']].isnull().sum() # dropna = false ๋ก null ๊ฐ ๊ฐ์๊น์ง ํ์ธ app_train['EXT_SOURCE_1'].value_counts(dropna=False) app_train['EXT_SOURCE_2'].value_counts(dropna=False) app_train['EXT_SOURCE_3'].value_counts(dropna=False) ์ฃผ์ ํผ์ณ๋ค์ ํ๊ท /์ต๋/์ต์/ํ์คํธ์ฐจ๋ฅผ ํ์ธ # EXT_SOURCE_X ํผ์ฒ.. 2023. 10. 31. [Home Credit Default Risk] 2. ์ฃผ์ Feature์ ๋ํ EDA 1. ์ฐ์ํ ํผ์ณ์ ๋ถํฌ ์๊ฐํ(Target ๊ฐ์ ๋ฐ๋ผ) ํจ์๋ฅผ ์ด์ฉํ์ฌ, ์ปฌ๋ผ๋ณ๋ก target๊ฐ์ด 0, 1์ผ ๋ ์๊ฐํํ๊ธฐ violinplot, distplot ์ฌ์ฉ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉฐ, target ์ ๋ฐ๋ผ ์ ์๋ฏธํ ์ฐจ์ด๊ฐ ๋๋ ํผ์ณ ํ์ธ >> ํผ์ณ ์ค์๋ ํ์ ๐ ์ฐ๋ น๋๊ฐ ๋ฎ์(๋๋ ์ง์ฅ ๊ฒฝ๋ ฅ์ด ์ ์), ์์ก ๋์ถ ๊ฑด์์ ์ฐ์ฒด ๋น์ค์ด ๋์ ๋ณด์ def show_hist_by_target(df, columns): # ํ๊ฒ ๊ฐ์ ๋ฐ๋ฅธ ์กฐ๊ฑด ์ง์ cond_1 = (df['TARGET'] == 1) cond_0 = (df['TARGET'] == 0) # ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ for column in columns: print('column name: ', column) #ํ์ธ์ฉ fig, axs = plt.subplots.. 2023. 10. 30. [Home Credit Default Risk] 1. ๋ฐ์ดํฐ ๋ถํฌ ์๊ฐํ, ๋ผ๋ฒจ ์ธ์ฝ๋ฉ 1. ํ๊ฒ ๊ฐ ๋ถํฌ & ์ฃผ์ ์ปฌ๋ผ์ ๋ถํฌ ํ์ธํ๊ธฐ ๋ฐ์ดํฐ์ ํ๊ฒ ๊ฐ(๋์ถ ์ฐ์ฒด ์ฌ๋ถ)๋ฅผ ํ์ธํ๋ค. >> ๊ฐ ๊ฐ(0, 1)์ ๊ฐ์์ ๋น์จ app_train['TARGET'].value_counts() app_train['TARGET'].value_counts() / 307511 * 100 ํ๊ฒ์ null ๊ฐ ํ์ธ apps['TARGET'].value_counts(dropna=False) ์ฃผ์ ์ปฌ๋ผ์ ๋ถํฌ๋ฅผ ํ์คํ ๊ทธ๋จ์ผ๋ก ํ์ธํ๋ค sns.distplot(app_train['AMT_INCOME_TOTAL']) plt.hist(app_train['AMT_INCOME_TOTAL']) ์ผ๋ถ ํํฐ๋ ์ ์ฉํด๋ณธ๋ค (์๋ฅผ ๋ค์ด, ์๋์ด 1,000,000 ์ดํ์ธ ์ ์์ ์ฃผ์ ์ปฌ๋ผ์ ๋ถํฌ) cond_1 = app_train[.. 2023. 10. 30. [BG/NBD] ๊ณ ๊ฐ ๊ฑฐ๋ ํ๋ ์์ธก ๋ชจ๋ธ BetaGeoFitter๋? ๊ณ ๊ฐ ์ดํ ์์ธก ๋ฐ ๊ตฌ๋งค ํ๋ฅ ๋ชจ๋ธ๋ง์ ์ฌ์ฉ๋๋ ํต๊ณ ๋ชจ๋ธ ์ค ํ๋๋ก, ๊ณ ๊ฐ ์ดํ ๋ฐ ๊ตฌ๋งค ํ๋ฅ ์ ์์ธกํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. ์ด ๋ชจ๋ธ์ ๊ธฐ์กด ๊ณ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ฉฐ, ํนํ ๊ตฌ๋งค ํ์์ ์ฌ๊ตฌ๋งค ๊ฐ๊ฒฉ์ ๊ณ ๋ คํ๋ค. BetaGeoFitter ๋ชจ๋ธ์ ๊ตฌํํ๋ ค๋ฉด Python์ lifetimes ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์๋๋ BetaGeoFitter ๋ชจ๋ธ์ ์ฌ์ฉ ์์์ด๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ import lifetimes ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ๊ฐ์ ธ์จ๋ค. !pip install lifetimes import pandas as pd from lifetimes import BetaGeoFitter from lifetimes.datasets import load_cdnow_summary ์.. 2023. 10. 10. [Kaggle] ์ด์ปค๋จธ์ค ๋ฐ์ดํฐ ๋ถ์ 7 (CRM Analytics ๐๏ธ๐) Customer Lifetime Value ํ ๊ณ ๊ฐ์ด ๋น์ ์ ๋ธ๋๋์ ์ ์์ ๋์ ์ผ๋ง๋ฅผ ๊ฐ์ ธ๋ค์ค ๊ฒ์ธ๊ฐ? ์ ๋ํ ๋ต์ ์ฐพ๋ ๊ณผ์ ์ด๋ค. ๊ณ ๊ฐ ๋ณ๋ก, ์ด ๊ตฌ๋งค ๊ธฐ๊ฐ, ์ต์ด ๊ตฌ๋งค์ผ๋ก๋ถํฐ ์ง๊ธ๊น์ง ํ๋ฅธ ์๊ฐ, ์ฃผ๋ฌธ ํ์, ์ด ์ฃผ๋ฌธ ๊ธ์ก์ ๊ตฌํด ์ด๋ฅผ ์์ธกํด ๋ณด์. ๋จผ์ ๊ณ ๊ฐ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํ๋ฅผ ์งํํ๋ค. ์ด๋, ๊ธฐ๊ฐ๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด InvoiceDate์ ๋ ๊ฐ์ง ํจ์๋ฅผ ์ ์ฉํ๋ค. ์ด๋ฅผ ํตํด ๊ณ ๊ฐ๋ณ ๊ตฌ๋งค ๊ธฐ๊ฐ๊ณผ ์ต์ด ๊ตฌ๋งค์ผ๋ก๋ถํฐ ํ์ฌ๊น์ง์ ์๊ฐ์ ๋์ถํ๋ค InvoiceNo๋ nunique๋ก ๊ณ ์ ํ ๊ตฌ๋งค ๋ฒํธ๋ก ์ฃผ๋ฌธ ํ์๋ฅผ ์นด์ดํธํ๋ค. TotalPrice ์๋ Sum์ ์ ์ฉํ์ฌ ์ผ๋ง๋ ๋ง์ ๋์ ์ผ๋์ง ์ง๊ณํ๋ค. ๋ง์ง๋ง์ผ๋ก ์นผ๋ผ์ ์ ๋ฆฌํด ์ฃผ๋๋ฐ, droplevel(0)๋ก ๊ทธ๋ฃนํ๋๋ฉฐ ์์ฑ๋ ๋ฉํฐ.. 2023. 10. 10. [Kaggle] ์ด์ปค๋จธ์ค ๋ฐ์ดํฐ ๋ถ์ 6 (CRM Analytics ๐๏ธ๐) ์ด๋ฒ ํฌ์คํ ์์๋ 5์ ๊ณ ๊ฐ๊ตฐ ๋ถ์์ ์ด์ด, ์ฝํธํธ ๋ถ์์ ์งํํ๋ค. Cohort Analysis ์ฝํธํธ๋ ์ด๋ค ๊ณตํต์ ์ ๊ณต์ ํ๋ ์ฌ๋๋ค์ ๊ทธ๋ฃน์ ์๋ฏธํ๋ค. ์ด๋ฌํ ๊ณตํต์ ์ ์ฑ ๊ฐ์ ๋ ์ง, ์ฒ์ ๊ตฌ๋งคํ ๋ฌ, ์ง๋ฆฌ์ ์์น, ํ๋ ์ฑ๋ (์ผ๋ฐ ์ฌ์ฉ์, ๋ง์ผํ ์ ์ ์ ๋ฑ) ๋ฑ์ด ๋ ์ ์๋ค. ์ฝํธํธ ๋ถ์์์๋ ์ด๋ฌํ ์ฌ์ฉ์ ๊ทธ๋ฃน์ ์๊ฐ์ ๋ฐ๋ผ ์ถ์ ํ์ฌ ์ผ๋ฐ์ ์ธ ํจํด์ด๋ ํ๋์ ์๋ณํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. ๋ณธ ์์ ์์๋ ์ฝํธํธ ๋ถ์ ํจ์๋ฅผ ์ ์ํ์ผ๋ฉฐ, ํจ์๊ฐ ๊ธด ๊ด๊ณ๋ก ๋์ด์ ์ค๋ช ํ๊ณ ๋ง์ง๋ง์ ์ต์ข ํจ์๋ฅผ ๊ธฐ๋กํ ๊ฒ์ด๋ค. cohort(์ต์ด ์ฃผ๋ฌธ์ผ๊ณผ ๊ณ ๊ฐ ๋น ์ฃผ๋ฌธ ๊ฑด์ ๋ ์ง ์ถ์ถ) ๋ฐ์ดํฐ ํ๋ ์์ ๋ณต์ฌ ๊ณ ๊ฐ ID, ์ก์ฅ๋ฒํธ, ์ฃผ๋ฌธ๋ ์ง๋ง ์ถ์ถํ๊ณ , ์ค๋ณต๋ ํ ์ ๊ฑฐ ๋ ์ง๋ฅผ ์ ๋จ์์ ๊ธฐ๊ฐ(Period)์ผ๋ก ๋ณํ : ๊ฐ .. 2023. 10. 8. ์ด์ 1 2 3 ๋ค์ 728x90