페이지 불러오는 중
산점도에 모델·요약을 겹쳐 관계를 더 읽는 도구입니다.
regplot(axes) / lmplot(figure): 산점도 + 회귀선 + 신뢰구간. order(다항), logistic, lowess로 모델 종류를 바꿈.residplot: 잔차 산점도. 회귀 가정(선형성·등분산) 위반을 눈으로 확인.jointplot: 가운데 이변량 플롯 + 위·오른쪽에 주변(marginal) 분포. kind로 종류 선택.pairplot: 여러 변수의 산점도 행렬(scatter matrix) + 대각선 분포. hue로 그룹, corner로 절반만.
jointplot/pairplot은 각각 JointGrid/PairGrid라는 전용 격자 객체를 반환하는 figure-level 함수입니다.import seaborn as sns
sns.set_theme()
tips = sns.load_dataset("tips")
penguins = sns.load_dataset("penguins")regplot / lmplot — 회귀선 겹치기sns.regplot(data=tips, x="total_bill", y="tip") # axes-level
sns.lmplot(data=tips, x="total_bill", y="tip", hue="smoker", # figure-level
col="time")
sns.lmplot(data=tips, x="total_bill", y="tip", order=2) # 2차 다항 회귀
sns.regplot(data=tips, x="total_bill", y="tip", lowess=True) # 비모수 평활
sns.regplot(data=df, x="dose", y="cured", logistic=True) # 로지스틱 (y가 0/1)
sns.regplot(data=tips, x="size", y="tip", x_estimator=np.mean) # x값별 평균 + CIlmplot은 regplot을 FacetGrid로 감싼 것입니다. hue/col/row가 필요하면 lmplot, 서브플롯 합성이 필요하면 regplot.statsmodels/scikit-learn으로 별도 적합합니다.
그림에서 보이는 것: total_bill–tip 산점도에 우상향 직선과 그를 감싼 반투명 신뢰구간 띠가 그려집니다. 띠는 데이터가 적은 양 끝에서 넓어집니다. order=2로 바꾸면 직선이 완만한 곡선이 되지만 형태는 크게 다르지 않습니다.💡 이럴 때: 관계가 곡선처럼 보이면
order=2나lowess=True로 먼저 확인합니다. lowess 곡선이 직선과 크게 다르면 선형 회귀 가정이 약하다는 신호입니다.
residplot — 잔차 진단sns.residplot(data=tips, x="total_bill", y="tip", lowess=True)회귀선을 뺀 잔차(residual)를 y축에, x를 그대로 x축에 그립니다.
💡 이럴 때:
regplot으로 직선을 그었는데 적합이 애매하면residplot을 같이 봅니다. 원래 산점도에서는 안 보이던 곡률·이분산이 잔차 평면에서는 뚜렷하게 드러납니다.
jointplot — 이변량 + 주변 분포sns.jointplot(data=penguins, x="bill_length_mm", y="flipper_length_mm", kind="scatter")
sns.jointplot(data=penguins, x="bill_length_mm", y="flipper_length_mm",
kind="hex") # 육각 비닝 (겹침 대응)
sns.jointplot(data=penguins, x="bill_length_mm", y="flipper_length_mm",
kind="kde", fill=True) # 2D 밀도 등고선
sns.jointplot(data=penguins, x="bill_length_mm", y="flipper_length_mm",
hue="species") # 그룹별 색 + 주변 KDE
sns.jointplot(data=tips, x="total_bill", y="tip", kind="reg") # 산점도 + 회귀선JointGrid. g.plot_joint(...), g.plot_marginals(...)로 세부 조정.bill_length_mm가 이봉, 오른쪽 주변에서 flipper_length_mm도 이봉이라 두 변수 모두 종을 가른다는 것이 보입니다.💡 이럴 때: 점이 수천 개라 산점도가 새까매지면
kind="hex"나kind="kde"로 바꿉니다. 밀집 구조가 색 농도/등고선으로 드러납니다.
pairplot — 변수쌍 행렬sns.pairplot(penguins)
sns.pairplot(penguins, hue="species", corner=True)
sns.pairplot(penguins, hue="species", diag_kind="kde",
vars=["bill_length_mm", "flipper_length_mm", "body_mass_g"])
sns.pairplot(penguins, kind="reg") # 비대각 칸에 회귀선PairGrid. g.map_upper / g.map_lower / g.map_diag로 칸별 커스텀.vars=로 3~6개만 고릅니다.
그림에서 보이는 것: 4x4 격자의 비대각 칸마다 종별로 색이 갈린 산점도가 나타나며, bill_length vs bill_depth 칸에서 전체로는 음의 관계로 보이지만 종별로 쪼개 보면 각 종 안에서는 양의 관계인 심슨의 역설 패턴이 드러납니다.💡 이럴 때: 모델링 전 특징(feature) 간 상관·분리도를 빠르게 훑을 때
pairplot(hue="타깃")이 가장 빠릅니다. 상관이 강한 변수쌍은 6장의heatmap으로 수치까지 확인합니다.
댓글
GitHub 계정으로 의견이나 질문을 남길 수 있습니다.