👩🏻💻 Point of Today I LEARNED 📌 SQL ● 코드카타 (50~60번 복습, ~136번)
📌 Python ● 데이터 타입별 검증법, 상관계수 구하기 개념 확실하게 정리 ● 라이브세션 3회차 복습 (실습) ● 통계학 기초 4주차 ● 실무에 쓰는 머신러닝 1강
복습과 복습과 복습의 무한 루프 ..
와중에 새로운 강의가 지급됐다.
< 머신러닝 기초 강의 >
궁금했던 개념이었어서 기대가 된다.
오늘은 일단 전체적인 개념 정립을 했고
내일부터는 본격적으로 세부적인 학습을 하게될 것같다.
1. SQL
1-1. 코드카타 제한시간 두고 풀기
1) 코드카타 60번
Point : count(distinct ~ )
select
year(os.SALES_DATE) YEAR,
month(os.SALES_DATE) MONTH,
ui.GENDER GENDER,
count(distinct ui.user_id) USERS -- count(1)로 하면 안됨
from USER_INFO ui
join ONLINE_SALE os on ui.USER_ID = os.USER_ID
where ui.GENDER is not null
group by year(os.SALES_DATE), month(os.SALES_DATE), ui.GENDER
order by year(os.SALES_DATE), month(os.SALES_DATE), ui.GENDER
처음에 count(1)로 했다가 틀렸다.
이유 : 2025년 1월에 동일인물이 구매한 내역 모두 집계되기 때문에. 문제는 고유한 회원수를 요구함.
2. Python
2-1. 데이터 타입별 가설검증법, 상관계수 구하는 방법
연속형 ↔ 연속형
연속형 ↔ 범주형 (이분형)
연속형 ↔ 범주형 (3개 이상)
범주형 ↔ 범주형 (이분형)
범주형↔ 범주형 (3개 이상)
검증법
z-test t-test
t-test
ANOVA
카이제곱검정
카이제곱검정
상관계수
피어슨
point-biserial
파이(Phi)
Cramer's V
2-2. 라이브세션 3회차 복습 (실습)
1) t-test
t, pvalue = stats.ttest_ind('컬럼명1','컬럼명2')
t값과 t값이 우연히 나올 확률 p-value를 동시에 반환
|t값|이 크고, 유의수준이 0.05일 때
두 그룹간 차이가 크긴 한데
pvalue ≤ 0.05 ☞ t값이 우연히 나올 확률이 적다. ☞ 두 그룹간 차이가 큰 게 우연으로 보기 어렵다. ☞ 귀무가설 기각
pvalue > 0.05 ☞ t값이 우연히 나올 확률이 크다. ☞ 두 그룹간 차이가 큰 게 우연일 가능성이 높다. ☞ 귀무가설 채택
2) z-test
# statsmodels 모듈에서 ztest 함수 import
from statsmodels.stats.weightstats import ztest
# 모집단 평균(n)과 비교
z, pvalue = ztest(df['컬럼명'], value=n)
z값과 z값이 우연히 나올 확률 p-value를 동시에 반환
z값 : 표준편차
해석 : 표본 평균이 모평균에서 z표준편차만큼 떨어져있다.
신뢰도 95% (유의수준 0.05)일 때, z값 기준 : ±1.96
|z| ≥ 1.96 ☞ 모평균과 표본평균의 차이가 큰 건 우연으로 보기 어렵다. ☞ 귀무가설 기각
|z| < 1.96☞ 모평균과 표본평균의 차이가 작은 건 우연으로 보기 어렵다. ☞ 귀무가설 채택
개념 확인
|z값|이 0에 가까울수록 표본오차가 거의 없다.
|z값|이 클수록 꼬리 영역에 위치해서 그 값이 나올 확률(p-value)이 줄어든다.
표준정규분포
⬇︎
이러한 이유로 |z값|과 유의수준에 따른 임계값을 비교해서
귀무가설 채택 여부를 판단할 수는 있지만
p-value 확인하는 것이 더 정확하고 안전하다.
3) 카이제곱검정
from scipy.stats import chi2_contingency
result = pd.crosstab(df['Gender'], df['Subscription Status']) # 빈도표 생성
chi2, p, dof, expected = chi2_contingency(result)
카이제곱값(chi2), p-value, 자유도, 기대값을 동시에 반환
카이제곱χ²값(chi2) : 기대빈도와 관찰빈도의 차이를 정량화한 값
χ² 값이 크다. ☞ 관찰빈도가 기대빈도에서 많이 벗어났다.
χ²값이 크고, 유의수준이 0.05일 때
p-value ≤ 0.05 ☞ 두 변수 간 차이가 큰 게 우연으로 보기 어렵다. ☞ 귀무가설 기각
pvalue>0.05 ☞ 두 변수 간 차이가 큰 게 우연일 가능성이 높다. ☞ 귀무가설 채택
🧐 빈도표 생성 pd.crosstab(df['컬럼명1'],df['컬럼명2'], margins=True/False, normalize=True/'index') : 두 개 이상의 범주형 데이터 간의 빈도수를 교차 분석하는 교차표(Contingency Table)를 만들어주는 함수 : 자동 피벗 ~ : 파라미터 1. margins : 행/열별 합계 추가 (all) 2. normalize : 비율 정규화 (True : 전체 데이터에서 각 조합이 차지하는 비율, index = 인덱스 기준 컬럼 비율 계산)