Matplotlib와 Seaborn으로 데이터 시각화
모델링 전에 데이터 분포와 관계를 탐색하기 위해 히스토그램, 산점도, 상관관계 히트맵을 그립니다.
Matplotlib와 Seaborn으로 데이터 시각화은(는) CoddyKit의 무료 Machine Learning Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Machine Learning Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Machine Learning Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
Why Visualisation Matters in ML
Charts aren't just for reports — they're a diagnostic tool at every step. Matplotlib gives full control; Seaborn makes beautiful stats plots with less code.
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
# Set seaborn theme for all plots
sns.set_theme(style='whitegrid', palette='muted')
# Load a built-in dataset
df = sns.load_dataset('tips')
print(df.head())Histograms: Understanding Distributions
A histogram bins a numeric column to show its shape — normal, skewed, or with outliers. Spotting skew tells you when a log transform might help your model.
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('tips')
fig, axes = plt.subplots(1, 2, figsize=(12, 4))
# Raw distribution (right-skewed)
axes[0].hist(df['total_bill'], bins=30, edgecolor='white')
axes[0].set_title('Total Bill Distribution (Raw)')
# After log transform
import numpy as np
axes[1].hist(np.log(df['total_bill']), bins=30, edgecolor='white')
axes[1].set_title('Total Bill Distribution (Log Transformed)')
plt.tight_layout()
plt.show()Scatter Plots: Feature Relationships
A scatter plot shows how two numbers relate — linear, curved, or full of outliers. Add color with hue to squeeze a third variable into the same view.
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('tips')
# Scatter plot with hue encoding
sns.scatterplot(
data=df,
x='total_bill',
y='tip',
hue='time', # encode meal time as colour
size='size', # encode party size as dot size
alpha=0.7
)
plt.title('Tip vs Total Bill (coloured by Meal Time)')
plt.show()Box Plots: Comparing Groups
A box plot shows the median, spread, and outliers across groups. If a feature's box looks very different per category, that feature is probably worth keeping.
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('tips')
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
sns.boxplot(data=df, x='day', y='total_bill', ax=axes[0])
axes[0].set_title('Bill by Day of Week')
sns.boxplot(data=df, x='smoker', y='tip', hue='sex', ax=axes[1])
axes[1].set_title('Tip by Smoking Status and Sex')
plt.tight_layout()
plt.show()Correlation Heatmap: Finding Related Features
A correlation heatmap colors how strongly every pair of columns moves together. It reveals good predictors of your target — and redundant features to drop.
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
df = pd.read_csv('titanic.csv')
# Compute correlation matrix
corr = df[['Survived', 'Pclass', 'Age', 'SibSp', 'Parch', 'Fare']].corr()
# Plot heatmap
plt.figure(figsize=(8, 6))
sns.heatmap(
corr,
annot=True, # show correlation values
fmt='.2f', # 2 decimal places
cmap='RdYlGn', # red-yellow-green colour scale
vmin=-1, vmax=1
)
plt.title('Feature Correlation Matrix')
plt.show()Pair Plots: Exploring All Feature Pairs
A pair plot shows scatter plots for every feature pair at once — a fast first look at a new dataset. Color by class to see which features separate the groups.
import seaborn as sns
import matplotlib.pyplot as plt
# Use the iris dataset (classic ML benchmark)
df = sns.load_dataset('iris')
# Pair plot coloured by species
sns.pairplot(
df,
hue='species',
diag_kind='kde', # KDE on diagonal
plot_kws={'alpha': 0.6}
)
plt.suptitle('Iris Dataset Pair Plot', y=1.02)
plt.show()Bar Charts and Count Plots
A count plot shows how often each category appears — the quickest way to check class balance before training a classifier. Add hue to compare two categories.
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('titanic')
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
# Class distribution (check balance)
sns.countplot(data=df, x='survived', ax=axes[0])
axes[0].set_title('Survival Count')
# Class by passenger class and sex
sns.countplot(data=df, x='class', hue='sex', ax=axes[1])
axes[1].set_title('Class Distribution by Sex')
plt.tight_layout()
plt.show()Plotting Learning Curves
A learning curve plots training vs validation score as data grows. Both low means underfitting; a big gap means overfitting; both high and close means a good fit.
import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import learning_curve
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_breast_cancer
X, y = load_breast_cancer(return_X_y=True)
train_sizes, train_scores, val_scores = learning_curve(
DecisionTreeClassifier(max_depth=5), X, y, cv=5
)
plt.plot(train_sizes, train_scores.mean(axis=1), label='Training Score')
plt.plot(train_sizes, val_scores.mean(axis=1), label='Validation Score')
plt.xlabel('Training Set Size')
plt.ylabel('Accuracy')
plt.legend()
plt.title('Learning Curve')
plt.show()Visualising Model Predictions
After training, plot the predictions. A confusion matrix heatmap shows where a classifier confuses labels — far more telling than a single accuracy number.
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
model = DecisionTreeClassifier(max_depth=3)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.title('Confusion Matrix')
plt.show()Saving and Customising Plots
Good plots need polish: titles, axis labels, and readable fonts. Save them with savefig at dpi=150+ for reports, and pick a colorblind-friendly palette.
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
# Create figure and axes explicitly
fig, ax = plt.subplots(figsize=(8, 5))
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x), label='sin(x)', linewidth=2)
ax.plot(x, np.cos(x), label='cos(x)', linewidth=2, linestyle='--')
# Customise
ax.set_xlabel('x', fontsize=13)
ax.set_ylabel('y', fontsize=13)
ax.set_title('Sine and Cosine', fontsize=15, fontweight='bold')
ax.legend(fontsize=12)
ax.grid(True, alpha=0.3)
# Save
fig.savefig('plot.png', dpi=150, bbox_inches='tight')
plt.show()Distribution Plots with Seaborn
A violin plot blends a box plot with a density curve, showing the full shape of a distribution. Seaborn's displot and kdeplot are great for smooth comparisons.
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('tips')
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
# Violin plot
sns.violinplot(data=df, x='day', y='total_bill', hue='sex',
split=True, inner='quart', ax=axes[0])
axes[0].set_title('Bill Distribution by Day (Violin)')
# KDE distribution comparison
sns.kdeplot(data=df, x='tip', hue='time', fill=True, alpha=0.4, ax=axes[1])
axes[1].set_title('Tip Distribution by Meal Time (KDE)')
plt.tight_layout()
plt.show()Quick Check
Test your understanding of Machine Learning with Python concepts from this lesson.
Lesson Recap
You learned to see your data: histograms and scatter plots reveal shape, heatmaps find predictors, and learning curves diagnose fit. Next: your first model! 🚀
자주 묻는 질문
“Matplotlib와 Seaborn으로 데이터 시각화” 강의는 무료인가요?
네 — “Matplotlib와 Seaborn으로 데이터 시각화” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Machine Learning Academy 강의 전체를 잠금 해제할 수 있습니다. Machine Learning Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“Matplotlib와 Seaborn으로 데이터 시각화”에서 뭘 배우나요?
모델링 전에 데이터 분포와 관계를 탐색하기 위해 히스토그램, 산점도, 상관관계 히트맵을 그립니다. 브라우저에서 직접 실행하는 실습 코드로 Machine Learning Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Machine Learning Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Machine Learning Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“Matplotlib와 Seaborn으로 데이터 시각화” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Machine Learning Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Machine Learning Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Anaconda와 Jupyter Notebook 설치
- NumPy 핵심: 배열과 수학 연산
- 데이터 조작을 위한 Pandas
- Matplotlib와 Seaborn으로 데이터 시각화