<jupyter_start><jupyter_text>"[MachineLearning] Regression Analysis - Polynomial Regression"> 2022.03.20 - toc: false- badges: false- comments: false- categories: [regression analysis]- hide_{github,colab,binder,deepnote}_badge: true __Content creators:__ 이중원__Content reviewers:__   1. Overview  Polynomial Regression란?- 데이터의 분포가 선형이 아닌 곡선으로 나타나는 경우에 사용하는 회귀- 1차항이 아닌 2차, 3차항 등으로 확장하여 구성된 다항 회귀식- $\bar y = b_0 + {b_1}{x_i} + {b_2}{x_i^2} \cdot\cdot\cdot b_p x_i^p$ 알고리즘- 입력 데이터셋을 X라 할 때, - 입력 데이터셋에 새로운 변수로 추가하고, 이 확장된 변수를 포함한 데이터셋을 선형모델로 훈련시키는 방법- 즉, X 를 통해 X^2, X^3 을 생성한 뒤, y = 1 + aX + bX^2 + cX^3 형식을 구성하고- a, b, c 를 선형 회귀 모델을 통해 학습하는 방법입니다.  2. Example  데이터셋 준비<jupyter_code>from sklearn.preprocessing import PolynomialFeatures
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import numpy as np

m = 100
X_train = 6 * np.random.rand(m, 1) - 3
y_train = 0.7 * X_train **2 + X_train + 2 + np.random.randn(m, 1)

plt.scatter(X, y)
plt.show()<jupyter_output><empty_output><jupyter_text>학습<jupyter_code>poly = PolynomialFeatures(degree=2, include_bias=True)

X_train_poly = poly.fit_transform(X_train)
from sklearn.linear_model import LinearRegression

lin_reg = LinearRegression()
lin_reg.fit(X_train_poly, y_train)<jupyter_output><empty_output><jupyter_text>테스트 데이터 생성<jupyter_code>m = 20
X_test = 6 * np.random.rand(m, 1) - 3
y_test = 0.7 * X_test **2 + X_test + 2 + np.random.randn(m, 1)<jupyter_output><empty_output><jupyter_text>변환<jupyter_code>X_test_poly = poly.transform(X_test)<jupyter_output><empty_output><jupyter_text>예측<jupyter_code>y_pred = lin_reg.predict(X_test_poly)
lin_reg.score(X_test_poly, y_test)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11782119597394908, 'fraction_numerical': 0.02605091770278271, 'mean_word_length': 5.7063492063492065, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 22, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '310141', 'license': 'Apache-2.0', 'n_tokens_mistral': 899, 'n_tokens_neox': 977, 'n_words': 165, 'path': '_notebooks/regression-analysis/ml-regression-polynomial-regression.ipynb', 'repo_name': 'KNU-AI-Researcher/reports', 'size': '1689'}