0Pricing
Python Academy · 강의

선형 모델: 회귀와 분류

선형 회귀 및 로지스틱 회귀 모델을 학습시킵니다.

선형 모델: 회귀와 분류은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

선형 회귀

LinearRegression은 최소제곱 오차를 최소화하여 직선(또는 초평면)을 적합합니다.

from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

X, y = make_regression(n_samples=200, n_features=5, noise=10, random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)

model = LinearRegression().fit(X_tr, y_tr)
print("RMSE:", mean_squared_error(y_te, model.predict(X_te))**0.5)

모델 계수

적합한 후 coef_(특성 가중치)와 intercept_를 확인합니다.

from sklearn.linear_model import LinearRegression
import numpy as np

X = np.array([[1],[2],[3]])
y = np.array([2, 4, 6])

model = LinearRegression().fit(X, y)
print("Coef:", model.coef_)       # [2.]
print("Intercept:", model.intercept_)  # ~0

Ridge 및 Lasso 회귀

Ridge(L2)와 Lasso(L1)는 과적합을 방지하기 위해 정규화를 추가합니다. alpha는 정규화 강도를 조절합니다.

from sklearn.linear_model import Ridge, Lasso
from sklearn.datasets import make_regression

X, y = make_regression(n_features=20, noise=15, random_state=0)

ridge = Ridge(alpha=1.0).fit(X, y)
lasso = Lasso(alpha=0.1).fit(X, y)
print("Ridge coef[:5]:", ridge.coef_[:5])
print("Lasso coef[:5]:", lasso.coef_[:5])  # some are 0 (sparse)

로지스틱 회귀

LogisticRegression은 이진 또는 다중 클래스 문제를 위한 선형 분류기입니다. 이름과 달리 클래스 확률을 예측합니다.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)
model = LogisticRegression().fit(X_tr, y_tr)
print("Accuracy:", accuracy_score(y_te, model.predict(X_te)))

다중 클래스 로지스틱 회귀

multi_class="multinomial"로 설정하거나, 3개 이상의 클래스에는 기본 일대다 방식을 사용합니다.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
model = LogisticRegression(max_iter=200).fit(X, y)
print("Classes:", model.classes_)   # [0 1 2]
print("Accuracy:", model.score(X, y))

선형 모델의 특성 스케일링

선형 모델에서는 항상 특성을 스케일링해야 하며, 특히 정규화를 사용할 때 더욱 중요합니다. 스케일링하지 않은 특성은 정규화 페널티를 서로 크게 다르게 보이게 합니다.

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

pipe = Pipeline([
    ("scale", StandardScaler()),
    ("clf",   LogisticRegression())
])
pipe.fit(X_tr, y_tr)
print(pipe.score(X_te, y_te))

학습 곡선

학습 곡선은 학습 데이터가 많아질수록 모델 성능이 어떻게 향상되는지 보여 줍니다. 과소적합과 과적합을 진단하는 데 유용합니다.

from sklearn.model_selection import learning_curve
import numpy as np

train_sizes, train_scores, val_scores = learning_curve(
    LogisticRegression(), X, y, cv=5,
    train_sizes=np.linspace(0.1, 1.0, 5)
)
print("Val mean:", val_scores.mean(axis=1))

회귀의 R² 점수

r2_score는 설명되는 분산의 비율을 측정합니다. 1.0은 완벽한 값이고, 0은 모델이 평균을 예측하는 것보다 나을 것이 없다는 뜻입니다.

from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression

X, y = make_regression(noise=20, random_state=0)
model = LinearRegression().fit(X, y)
print("R²:", r2_score(y, model.predict(X)))

다항 특성

PolynomialFeatures를 사용하면 선형 모델로 비선형 관계를 적합할 수 있습니다.

from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
import numpy as np

X = np.array([[1],[2],[3],[4],[5]])
y = np.array([1, 4, 9, 16, 25])  # y = x^2

pipe = Pipeline([
    ("poly", PolynomialFeatures(degree=2)),
    ("lr",   LinearRegression())
])
pipe.fit(X, y)
print(pipe.predict([[6]]))   # ~36

SGDClassifier 및 SGDRegressor

확률적 경사 하강법은 표준 해법이 너무 느린 매우 큰 데이터셋에도 확장할 수 있습니다.

from sklearn.linear_model import SGDClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=100_000, random_state=0)
pipe = Pipeline([("sc", StandardScaler()), ("sgd", SGDClassifier())])
pipe.fit(X, y)
print(pipe.score(X, y))

정규화 경로

RidgeCV/LassoCV를 사용하여 alpha를 격자 범위에서 변화시키면, 교차 검증을 통해 최적의 alpha를 자동으로 선택합니다.

from sklearn.linear_model import RidgeCV, LassoCV
from sklearn.datasets import make_regression

X, y = make_regression(n_features=20, noise=10, random_state=0)
ridge = RidgeCV(alphas=[0.1, 1, 10]).fit(X, y)
print("Best alpha:", ridge.alpha_)

빠른 확인

Ridge 회귀와 Lasso 회귀의 핵심적인 차이점은 무엇입니까?

복습

회귀에는 LinearRegression을, 분류에는 LogisticRegression을 사용합니다. 정규화가 필요하면 Ridge/Lasso를 추가합니다. 특성은 항상 스케일링해야 합니다. 비선형 문제에는 PolynomialFeatures를 사용합니다. 회귀는 r2_score로, 분류는 accuracy_score로 평가합니다.

자주 묻는 질문

“선형 모델: 회귀와 분류” 강의는 무료인가요?

네 — “선형 모델: 회귀와 분류” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“선형 모델: 회귀와 분류”에서 뭘 배우나요?

선형 회귀 및 로지스틱 회귀 모델을 학습시킵니다. 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Python Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“선형 모델: 회귀와 분류” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. scikit-learn API: fit, transform, predict
  2. 선형 모델: 회귀와 분류
  3. 트리 기반 모델: 결정 트리와 랜덤 포레스트
  4. 모델 평가와 교차 검증
← Python Academy(으)로 돌아가기