다항회귀, 스플라인 회귀
다항회귀
- 독립 변수와 종속 변수 간의 관계가 아닐 때 사용,
- 비선형 관계를 모델링함.
- 고차 다항식의 경우 과적합(Overfitting)의 위험이 있음.

스플라인 회귀
- 독립 변수의 구간별로 다른 회귀식을 적용하여 복잡한 관계를 모델링.
- 구간마다 다른 다항식을 사용하여 전체적으로 매끄러운 곡선을 생성.
- 데이터가 국부적으로 다른 패턴을 보일 때 사용
- 복잡한 비선형 관계를 유연하게 모델링 가능
- 적절한 매듭전(knots)의 선택이 중요함.

다항회귀는 언제 사용되나
독립변수와 종속변수의 관계가 비선형 관계일 때 사용
- 주택 가격 예측(면적과 가격 간의 비선형 관계).
from sklearn.preprocessing import PolynomialFeatures
np.random.seed(0)
X = 2 - 3 * np.random.normal(0, 1, 100)
y = X - 2 * (X ** 2) + np.random.normal(-3, 3, 100)
X = X[:, np.newaxis]
polynomial_features = PolynomialFeatures(degree=2)
X_poly = polynomial_features.fit_transform(X)
model = LinearRegression()
model.fit(X_poly, y)
y_poly_pred = model.predict(X_poly)
mse = mean_squared_error(y, y_poly_pred)
r2 = r2_score(y, y_poly_pred)
print("평균 제곱 오차(MSE):", mse)
print("결정 계수(R2):", r2)
plt.scatter(X, y, s=10)
sorted_zip = sorted(zip(X, y_poly_pred))
X, y_poly_pred = zip(*sorted_zip)
plt.plot(X, y_poly_pred, color='m')
plt.title('polynomial regerssion')
plt.xlabel('area')
plt.ylabel('price')
plt.show()
