hossam.my_pipeline¶
hossam.my_pipeline ¶
품질검사·EDA 반자동화 파이프라인 모듈
두 개의 파이프라인을 제공한다.
1) qtcheck : 원본 데이터를 받아 자료형 점검 → (체크박스로) 명목형 변수 선택·변환 → (버튼으로) 중복 처리 결정 → 결측치 점검 → 기술통계 → 인사이트(결론)까지 대화형으로 수행하는 품질검사 파이프라인. 2) eda : 품질검사가 끝난 데이터와 종속변수 이름을 받아, 노트북의 EDA 분석 흐름(#01~#05)을 그대로 자동 수행하는 EDA 파이프라인.
eda 는 노트북에서 손으로 진행하던 분석 흐름과 장(章) 구분을 1:1로 따른다. 각 장이 하나의 탭이 되고, 장 안의 분석 단위(변수·변수쌍)가 드롭다운으로 넘기는 페이지가 된다 (ipywidgets 미설치 시 순차 출력으로 자동 대체).
#01 준비작업 변수 유형 분류 · 연속형/명목형 기술통계량 · EDA 범위 정리
#02 단변량 분석 종속변수 → 연속형 독립변수 → 명목형 독립변수
#03 이변량 분석 상관분석 → T검정 → ANOVA → 교차분석
#04 다변량 분석 독립변수 간 상관행렬·중복 집계 · 다중공선성(VIF)
#05 최종 변수 선택 변수 선별표
노트북과 맞춘 점
- 컬럼 의미 딕셔너리(column_means)를 받아 그래프·페이지 제목에
carat(중량)처럼 의미를 함께 표기한다. - 품질점검 단계에서 미리 산출해 둔 기술통계량(num_desc / cat_desc)을 그대로 재사용한다 (전달하지 않으면 my_qtcheck 로 직접 산출).
- 종속변수 유형과 실제 변수 구성으로부터 'EDA 범위 정리' 표를 자동 생성해, 어떤 검정이 적용/미적용인지 근거와 함께 보여준다.
- 상관분석은 산점도를 먼저 그린 뒤 결과표를 표시하고, ANOVA 사후검정은 기본적으로 결과표만 표시한다(posthoc_plot=True 로 시각화 추가 가능).
- 서열척도(범주 순서)는 전달받은 데이터의 category 순서를 그대로 사용한다.
-
노트북에서 손으로 적던 '💡 인사이트' 표를 변수·변수쌍마다 자동 생성해 그래프·결과표 아래에 함께 붙인다. '관찰값'(측정치)과 '판정'(라벨)을 나눠, 어떤 수치를 보고 그렇게 판정했는지 되짚을 수 있게 한다.
단변량 연속형 분포 모양 · 봉우리 수 · 이상치 · 이산점(군집) · 판단·조치 단변량 명목형 범주 수 · 최빈 범주 · 최소 범주 · 균형 여부 · 판단·조치 상관분석 선형/비선형 · 단조성 · 산포 · 이상치 · 채택 여부 T검정 집단 차이 · 가정 점검 · 효과크기 · 채택 여부 분산분석 집단 차이 · 효과크기 · 사후검정 구분력 · 채택 여부 교차분석 연관성 · 효과크기 · 기대빈도 가정 · 채택 여부
변수 선정은 이 흐름을 따른다. 단변량에서 각 변수의 전처리 방침(판단·조치)을 정하고, 이변량에서 종속변수와의 관계로 1차 채택 여부를 가른 뒤, 다변량에서 공선성 그룹을 찾아 그룹마다 효과크기 1위 하나만 대표로 남기고 나머지를 후보로 돌린다. 최종 판정은 #05 변수 선별표에서 확정된다.
각 장은 하나의 공개 함수로 분리되어 있어, 노트북에서 개별적으로 호출하여 독립적으로 결과를 확인할 수 있다. eda 는 이 함수들의 페이지를 장 단위로 모아 탭으로 종합한다.
show_descriptive ── #01 준비작업 (변수 분류 · 기술통계량 · EDA 범위)
viz_dependent ── #02 종속변수 단변량
viz_independent ── #02 독립변수 단변량
infer_cont_cont ── #03 상관분석 (연속 × 연속)
infer_cont_nom2 ── #03 T검정 (연속 × 명목(2집단))
infer_cont_nom3 ── #03 ANOVA (연속 × 명목(3집단↑))
infer_nom_nom ── #03 교차분석 (명목 × 명목)
viz_cont_target_hue── #03 보조: 명목형을 색으로 얹은 산점도(상호작용 후보)
corr_independent ── #04 다변량 분석
selection_table ── #05 최종 변수 선택
eda ── 위 함수들을 장(章) 탭으로 종합
검정 선택 규칙 (독립변수 유형 × 종속변수 유형)
┌───────────────┬───────────────────────┬────────────────────────┐
│ │ 연속형 종속변수(예측) │ 범주형 종속변수(분류) │
├───────────────┼───────────────────────┼────────────────────────┤
│ 연속형 독립변수 │ 상관분석 │ 집단비교(T검정/ANOVA) │
│ 명목형 독립변수 │ 집단비교(T검정/ANOVA) │ 교차분석(카이제곱) │
└───────────────┴───────────────────────┴────────────────────────┘
show_descriptive ¶
show_descriptive(
data,
target,
task="regression",
column_means=None,
num_desc=None,
cat_desc=None,
_mode="display",
)
01 준비작업 탭: 변수 분류 · 기술통계량 · EDA 범위를 페이지로 구분해 출력한다.¶
노트북의 #01(준비작업) 단계에 대응한다. 기술통계량은 품질점검 단계에서 미리 산출해 둔 표(num_desc / cat_desc)를 전달하면 그대로 재사용하고, 전달하지 않으면 my_qtcheck 로 직접 산출한다. (다중공선성 VIF 는 '#04 다변량 분석' 탭으로 옮겨졌다.)
viz_dependent ¶
viz_dependent(
data,
target,
task="regression",
palette=None,
column_means=None,
num_desc=None,
cat_desc=None,
_mode="display",
)
02-1 종속변수 단변량 분석: 분포 그래프 + 기술통계량 표.¶
- 연속형: 히스토그램 + 상자그림
- 명목형: 빈도 막대그래프
viz_independent ¶
viz_independent(
data,
target,
task="regression",
palette=None,
column_means=None,
num_desc=None,
cat_desc=None,
_mode="display",
)
02-2·3 독립변수 단변량 분석: 독립변수별 페이지로 분포를 그린다.¶
- 연속형: 히스토그램 + 상자그림 + 기술통계량
- 명목형: 빈도 막대그래프 + 기술통계량 + 빈도·비율표
infer_cont_cont ¶
infer_cont_cont(
data,
target,
task="regression",
alpha=0.05,
corr_threshold=0.3,
verbose=True,
palette=None,
column_means=None,
_mode="display",
)
03-1 상관분석 (x: 연속형 독립변수 → y: 연속형 종속변수).¶
연속형 종속변수(예측)일 때만 수행된다. 노트북과 동일하게 산점도를 먼저 그리고 상관분석 결과표를 이어서 표시한다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
verbose
|
bool
|
True 면 산점도·결과표를 표시, False 면 결과만 수집. |
True
|
_mode
|
str
|
"display"(그 자리 표시) / "widget" / "sections" |
'display'
|
Returns:
| Type | Description |
|---|---|
|
list[dict]: 변수 선별표에 사용할 결과행 리스트 (_mode 가 "widget"/"sections" 이면 (rows, 위젯|섹션) 튜플) |
viz_cont_target_hue ¶
viz_cont_target_hue(
data,
target,
task="regression",
palette=None,
column_means=None,
_mode="display",
)
(연속 × 종속) + 범주 시각화 (연속독립 × 명목 조합별 페이지).
연속형 독립변수(x)와 연속형 종속변수(y)의 산점도에 명목형 변수를 hue(색)로 적용해, 범주에 따라 관계가 어떻게 갈리는지 보여준다.
infer_cont_nom2 ¶
infer_cont_nom2(
data,
target,
task="regression",
alpha=0.05,
corr_threshold=0.3,
verbose=True,
palette=None,
column_means=None,
_mode="display",
)
03-2 T검정 (x: 2집단 명목형 독립변수 → y: 종속변수).¶
- 예측: 2수준 명목형 독립변수 ↔ 연속형 종속변수
- 분류: 연속형 독립변수 ↔ 2범주 종속변수
2개의 고유값만 존재하는 명목형이 없으면 결과가 없을 수 있다.
Returns:
| Type | Description |
|---|---|
|
list[dict]: 변수 선별표에 사용할 결과행 리스트 (대상 없으면 빈 리스트) |
infer_cont_nom3 ¶
infer_cont_nom3(
data,
target,
task="regression",
alpha=0.05,
corr_threshold=0.3,
verbose=True,
palette=None,
column_means=None,
posthoc_plot=False,
_mode="display",
)
03-3 ANOVA + 사후검정 (x: 3집단↑ 명목형 독립변수 → y: 종속변수).¶
- 예측: 3수준 이상 명목형 독립변수 ↔ 연속형 종속변수
- 분류: 연속형 독립변수 ↔ 3범주 이상 종속변수
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
posthoc_plot
|
bool
|
사후검정 시각화 수행 여부. 노트북과 동일하게 기본은 False(결과표만 표시)이며, 보고서에 그래프가 필요할 때만 True 로 둔다. |
False
|
Returns:
| Type | Description |
|---|---|
|
list[dict]: 변수 선별표에 사용할 결과행 리스트 (대상 없으면 빈 리스트) |
infer_nom_nom ¶
infer_nom_nom(
data,
target,
task="regression",
alpha=0.05,
corr_threshold=0.3,
verbose=True,
palette=None,
column_means=None,
_mode="display",
)
03-4 교차분석 (x: 명목형 독립변수 → y: 명목형 종속변수).¶
명목형 종속변수(분류)일 때만 수행되며, 각 명목형 독립변수와 종속변수의 독립성 검정(카이제곱/피셔)을 실행한다.
Returns:
| Type | Description |
|---|---|
|
list[dict]: 변수 선별표에 사용할 결과행 리스트 |
corr_independent ¶
corr_independent(
data,
target,
alpha=0.05,
collinearity_threshold=0.7,
palette=None,
corr_pairs=None,
_mode="display",
)
04-1 독립변수 간 상관분석 + 다중공선성.¶
연속형 독립변수들 사이의 상관행렬과 변수별 중복(공선성) 집계표를 산출한다. 이는 변수 선별표의 공선성 신호(🅾️/❎)의 근거가 된다. 연속형 독립변수가 2개 미만이면 대상이 없다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
corr_pairs
|
DataFrame
|
이미 산출한 쌍별 상관분석 결과표(있으면 재계산 생략) |
None
|
selection_table ¶
selection_table(
data,
target,
task="regression",
alpha=0.05,
corr_threshold=0.3,
collinearity_threshold=0.7,
palette=None,
column_means=None,
num_desc=None,
)
05 최종 변수 선택: 4종 추론통계를 조용히 수행하여 선별표만 출력한다.¶
노트북에서 단독 호출하면 개별 검정 과정 출력 없이 선별표만 확인할 수 있다. 공선성 신호는 연속형 독립변수 간 상관분석 결과로만 산출한다(VIF 미적용).
eda ¶
eda(
data,
target,
task="regression",
alpha=0.05,
corr_threshold=0.3,
collinearity_threshold=0.7,
palette=None,
column_means=None,
num_desc=None,
cat_desc=None,
interaction=False,
posthoc_plot=False,
)
추론통계 기반 EDA 를 노트북의 분석 흐름 그대로 탭으로 실행하는 파이프라인.
구성 탭 (노트북의 장 구분과 1:1 대응)
#01 준비작업 변수 분류 · 연속형/명목형 기술통계량 · EDA 범위 정리
#02 단변량 분석 종속변수 → 연속형 독립변수 → 명목형 독립변수
#03 이변량 분석 상관분석 → T검정 → ANOVA → 교차분석
(interaction=True 면 '상호작용' 산점도 페이지 추가)
#04 다변량 분석 독립변수 간 상관행렬·중복 집계 · 다중공선성(VIF)
#05 최종 변수 선택 변수 선별표
각 탭 안의 분석 단위는 드롭다운으로 넘기는 페이지로 구분된다. (ipywidgets 미설치 시 장 제목을 붙인 순차 출력으로 자동 대체된다.)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
DataFrame
|
품질점검·타입변환(서열척도 포함)이 완료된 데이터프레임 (명목형은 category 타입으로 지정되어 있어야 자동 분류된다.) |
required |
target
|
str
|
종속변수(목표변수) 컬럼명 |
required |
task
|
str
|
모델링 유형. 'regression'/'예측'/'연속형'(기본) 또는 'classification'/'분류'/'명목형' |
'regression'
|
alpha
|
float
|
유의수준 (기본값: 0.05) |
0.05
|
corr_threshold
|
float
|
상관계수 채택 기준 |coef| (기본값: 0.3) |
0.3
|
collinearity_threshold
|
float
|
공선성 신호 기준 |r| (연속형 독립변수 간 상관분석 기반, 기본값: 0.7). 이 단계에서 VIF는 사용하지 않는다. |
0.7
|
palette
|
str or list
|
시각화 색상 팔레트 (기본값: None) |
None
|
column_means
|
dict
|
{컬럼명: 의미} 딕셔너리. 그래프·페이지 제목에
|
None
|
num_desc
|
DataFrame
|
미리 산출해 둔 연속형 기술통계량 (품질점검 단계 산출물을 재사용할 때 전달. 기본값: None → 직접 산출) |
None
|
cat_desc
|
DataFrame
|
미리 산출해 둔 명목형 기술통계량 (기본값: None) |
None
|
interaction
|
bool
|
03 에 '(연속 × 종속) + 범주' 산점도 페이지를 추가할지¶여부 (기본값: False) |
False
|
posthoc_plot
|
bool
|
ANOVA 사후검정 시각화 여부 (기본값: False → 결과표만) |
False
|
qtcheck ¶
qtcheck(
data,
save_path=None,
numeric_save_path=None,
category_save_path=None,
)
데이터 품질검사를 대화형으로 수행하는 파이프라인.
자료형 점검 → (체크박스) 명목형 변수 선택·변환 → (버튼) 중복 처리 결정 → 결측치 점검 → 기술통계 → 인사이트(결론) 순으로 진행한다. 사용자의 의사결정이 필요한 단계(명목형 선택·중복 처리)는 위젯으로 물어보고, 나머지는 자동 진행하며, 결측치·기술통계·인사이트는 탭(마지막이 인사이트 결론)으로 종합한다. 별도의 반환값은 없다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
DataFrame
|
품질검사 대상 원본 데이터프레임 |
required |
save_path
|
str
|
품질검사 완료 데이터프레임을 저장할 파일 경로 (지원: .xlsx/.xls, .csv[utf-8], .parquet / 기본값: None → 저장 안 함) |
None
|
numeric_save_path
|
str
|
연속형 기술통계량 표를 저장할 파일 경로 |
None
|
category_save_path
|
str
|
명목형 기술통계량 표를 저장할 파일 경로 |
None
|
Note
ipywidgets 가 없으면 기본값(비수치형→범주형 변환, 중복 제거)으로 비대화형 수행한다.
ols ¶
ols(
data,
y,
summary=False,
report=True,
log_y=False,
log_x=None,
log1p_y=False,
log1p_x=None,
test=True,
plot=False,
width=1280,
height=640,
auto_select=True,
cont_cols=None,
vif_threshold=10.0,
sig_level=0.05,
robust=True,
beta_plot=True,
)
자동으로 회귀분석을 수행하고, 결과를 탭으로 종합해 표시한다.
구성 탭
(변수 자동 선택 / auto_select=True 일 때만) · 모형 적합도 · 회귀계수 · (회귀모형 가정 검정 / test=True 일 때만, 드롭다운으로 4개 검정 전환)
회귀계수 탭은 등분산성(Breusch-Pagan) 검정을 먼저 수행해, 등분산 가정이 위배되면 이분산에 강건한 HC3 표준오차를 함께 보고하도록 자동 전환한다 (robust=False 로 끌 수 있다). 이 판정은 계수표뿐 아니라 독립변수별 해석 문장의 t·유의확률에도 함께 적용된다.
회귀계수 탭에는 계수표·해석 문장에 이어 표준화계수(β) 기준 영향력 순위 가로 막대그래프가 함께 표시된다 (beta_plot=False 로 끌 수 있다).
auto_select=True이면 적합 후 다중공선성(VIF)과 유의성(유의확률)을 점검해, 부적절한 독립변수를 자동으로 제거하고 다시 적합하는 과정을 반복한다. 전체 변수를 그대로 보고 싶은 1차 분석 등에서는 auto_select=False로 자동 제거를 끈다.
VIF 필터링은 연속형 변수만 대상으로 한다. cont_cols로 연속형 변수 이름 리스트를 직접 지정하면 그 변수들에 대해서만 VIF를 계산·제거한다. 지정하지 않으면(None) 수치형이면서 0/1 더미가 아닌 컬럼을 연속형으로 자동 판별한다. 어느 경우든 대상이 아닌 범주형·더미 변수는 그대로 보존되어 VIF 제거를 통과한 연속형 변수와 다시 결합된다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
auto_select
|
bool
|
VIF·유의성 기준으로 부적절한 변수를 자동 제거할지 여부 (기본값: True). |
True
|
cont_cols
|
list
|
VIF 필터링 대상으로 삼을 연속형 변수 이름 리스트. 지정 시 이 리스트에 대해서만 VIF를 진행한다. None이면 연속형 변수를 자동 판별한다 (기본값: None). |
None
|
vif_threshold
|
float
|
VIF가 이 값 이상인 변수를 다중공선성 변수로 보고 제거한다 (기본값: 10.0). |
10.0
|
sig_level
|
float
|
유의확률이 이 값 이상인 변수를 유의하지 않은 변수로 보고 제거한다 (기본값: 0.05). |
0.05
|
robust
|
bool
|
등분산성 위배 시 회귀계수표를 HC3 로버스트 표준오차로 자동 전환할지 여부 (기본값: True). False 면 항상 일반 OLS 표준오차로 보고한다. |
True
|
beta_plot
|
bool
|
회귀계수 탭에 표준화계수(β) 영향력 순위 그래프를 함께 표시할지 여부 (기본값: True). 그래프 높이는 독립변수 수에 맞춰 자동 계산된다. |
True
|
Returns:
| Name | Type | Description |
|---|---|---|
RegressionResults |
최종 적합된 회귀모형 |
Note
ipywidgets 가 없으면 탭 없이 순차 출력한다.