diff --git a/README.md b/README.md index e69de29..c3f503a 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,253 @@ +--- +layout: default +title: 05. Regression +subtitle: 어프렌티스 프로젝트 과목 +--- +----- + +[PINBlog Gitea Repository](https://gitea.pinblog.codes/CBNU/05_Regression) + +----- + +# 05. Regression +- 산업인공지능학과 대학원 + 2022254026 + 김홍열 + +--- + + +# **Regression* +### **Linear Regression, Logistic Regression** + +# 선형 회귀 (Linear Regression) + +선형 회귀는 연속적인 값을 예측하기 위한 회귀 알고리즘입니다. 주로 종속 변수와 독립 변수 간의 선형 관계를 모델링하는 데 사용됩니다. + +### 수식 +​ \(y = \beta_0 + \beta_1x_1 + \beta_2x_2 + ... + \beta_nx_n + \epsilon\) + - \(y\): 예측값 + - \(x_1, x_2, ..., x_n\): 독립 변수들 + - \(\beta_0, \beta_1, ..., \beta_n\): 회귀 계수 + - \(\epsilon\): 오차 항 + +### 목적 +오차 항 ϵ의 제곱합을 최소화하는 회귀 계수를 찾는 것입니다. + +### 사용 사례 +주택 가격 예측, 연봉 예측, 판매량 예측 등 연속적인 값을 가지는 대상을 예측할 때 사용됩니다. + +--- + +### 예제 코드[¶]() + +
+Linear Regression +
+ +```python + +from sklearn.linear_model import LinearRegression +from sklearn.model_selection import train_test_split +import numpy as np + +# 예제 데이터 생성 +X = np.random.rand(100, 1) * 10 # 100개의 랜덤 데이터 +y = 2.5 * X + 5 + np.random.randn(100, 1) * 2 # y = 2.5x + 5 + 잡음 + +# 데이터 분할 +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) + +# 선형 회귀 모델 학습 +model = LinearRegression() +model.fit(X_train, y_train) + +# 예측 +y_pred = model.predict(X_test) + +print("Coefficients:", model.coef_) +print("Intercept:", model.intercept_) + + +``` + +
+
+ +
+diabetes 데이터셋 활용 +
+ + +### 개요 + - 위스콘신 대학의 유방암 진단 데이터셋으로, 유방암 종양의 임상 정보를 기반으로 악성(malignant) 또는 양성(benign)으로 분류하는 문제에 사용됩니다. + +### 특징 + - 30개의 특징 변수가 있으며, 이는 종양의 다양한 특성(크기, 반경, 질감 등)을 나타냅니다. + +### 목표 변수 + - 종양이 악성인지(1) 양성인지(0)를 나타내는 이진 값입니다. + +### 용도 + - 이 데이터셋은 주로 분류 문제에 사용됩니다. + +### 속성 + - age: 나이 + - sex: 성별 + - bmi: 체질량지수 + - bp: 평균 혈압 + - s1 ~ s6: 6개의 혈청 측정값 + + +```python + +import numpy as np +from sklearn import datasets +from sklearn.model_selection import train_test_split +from sklearn.linear_model import LinearRegression +from sklearn.metrics import mean_squared_error + +# 데이터 로드 +diabetes = datasets.load_diabetes() +X = diabetes.data[:, np.newaxis, 2] # BMI feature만 사용 +y = diabetes.target + +# 데이터 분할 +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) + +# 선형 회귀 모델 학습 +model = LinearRegression() +model.fit(X_train, y_train) + +# 예측 및 평가 +y_pred = model.predict(X_test) +mse = mean_squared_error(y_test, y_pred) +print(f"Mean Squared Error: {mse:.2f}") + +``` + + +
+
+ + +
+Logistic Regression +
+ + +# 로지스틱 회귀 (Logistic Regression) +로지스틱 회귀는 이름에 '회귀'가 들어가지만, 분류 문제에 사용되는 알고리즘입니다. 주로 이진 분류 문제에 사용되며, 확률을 출력으로 가집니다. + +### 수식 + - \(P(Y=1) = \frac{1}{1 + e^{-(\beta_0 + \beta_1x_1 + \beta_2x_2 + ... + \beta_nx_n)}}\) + - \(P(Y=1)\): 클래스 1에 속할 확률 + - \(x_1, x_2, ..., x_n\): 독립 변수들 + - \(\beta_0, \beta_1, ..., \beta_n\): 회귀 계수 + +### 목적 + - 로그 오즈를 최대화하는 것입니다. 로그 오즈는 실제 값과 예측 확률 간의 로그 비율로 계산됩니다. + +### 사용 사례 + - 스팸 메일 분류, 환자의 질병 발병 여부 예측, 고객 이탈 여부 예측 등 이진 분류 문제에 주로 사용됩니다. 다중 클래스 분류에도 확장하여 사용할 수 있습니다. +--- + + +
+Code View +
+ + +```python + + +from sklearn.linear_model import LogisticRegression +from sklearn.model_selection import train_test_split + +# 예제 데이터 생성 +X = np.random.rand(100, 1) * 10 # 100개의 랜덤 데이터 +y = (X > 5).astype(int).ravel() # X가 5보다 크면 1, 아니면 0 + +# 데이터 분할 +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) + +# 로지스틱 회귀 모델 학습 +model = LogisticRegression() +model.fit(X_train, y_train) + +# 예측 +y_pred = model.predict(X_test) + +print("Coefficients:", model.coef_) +print("Intercept:", model.intercept_) + + +``` + +
+
+
+
+ + +
+breast_cancer 데이터셋 +
+ +### 개요 + - 위스콘신 대학의 유방암 진단 데이터셋으로, 유방암 종양의 임상 정보를 기반으로 악성(malignant) 또는 양성(benign)으로 분류하는 문제에 사용됩니다. + +### 특징 + - 30개의 특징 변수가 있으며, 이는 종양의 다양한 특성(크기, 반경, 질감 등)을 나타냅니다. + +### 목표 변수 + - 종양이 악성인지(1) 양성인지(0)를 나타내는 이진 값입니다. + +### 용도 + - 이 데이터셋은 주로 분류 문제에 사용됩니다. + + + +
+Code View + + +```python + +from sklearn import datasets +from sklearn.model_selection import train_test_split +from sklearn.linear_model import LogisticRegression +from sklearn.metrics import accuracy_score + +# 데이터 로드 +cancer = datasets.load_breast_cancer() +X = cancer.data +y = cancer.target + +# 데이터 분할 +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) + +# 로지스틱 회귀 모델 학습 +model = LogisticRegression(max_iter=10000) # max_iter를 증가시켜 수렴을 도움 +model.fit(X_train, y_train) + +# 예측 및 평가 +y_pred = model.predict(X_test) +acc = accuracy_score(y_test, y_pred) +print(f"Accuracy: {acc*100:.2f}%") + + +``` + +
+
+
+
+
+ +--- + +### 참고[¶]() + +- 어프렌티스 프로젝트 과목, 김재영 교수 +- ChatGPT diff --git a/regression.ipynb b/regression.ipynb index 301b074..b4a7737 100644 --- a/regression.ipynb +++ b/regression.ipynb @@ -4,7 +4,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 선형 회귀 (Linear Regression)" + "# 선형 회귀 (Linear Regression)\n", + "\n", + "선형 회귀는 연속적인 값을 예측하기 위한 회귀 알고리즘입니다. 주로 종속 변수와 독립 변수 간의 선형 관계를 모델링하는 데 사용됩니다.\n", + "\n", + "### 수식\n", + "​ \\(y = \\beta_0 + \\beta_1x_1 + \\beta_2x_2 + ... + \\beta_nx_n + \\epsilon\\)\n", + " - \\(y\\): 예측값\n", + " - \\(x_1, x_2, ..., x_n\\): 독립 변수들\n", + " - \\(\\beta_0, \\beta_1, ..., \\beta_n\\): 회귀 계수\n", + " - \\(\\epsilon\\): 오차 항\n", + " \n", + "### 목적\n", + "오차 항 ϵ의 제곱합을 최소화하는 회귀 계수를 찾는 것입니다.\n", + "\n", + "### 사용 사례\n", + "주택 가격 예측, 연봉 예측, 판매량 예측 등 연속적인 값을 가지는 대상을 예측할 때 사용됩니다." ] }, { @@ -44,6 +59,32 @@ "print(\"Intercept:\", model.intercept_)\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# diabetes 데이터셋\n", + "\n", + "### 개요\n", + " - 위스콘신 대학의 유방암 진단 데이터셋으로, 유방암 종양의 임상 정보를 기반으로 악성(malignant) 또는 양성(benign)으로 분류하는 문제에 사용됩니다.\n", + "\n", + "### 특징\n", + " - 30개의 특징 변수가 있으며, 이는 종양의 다양한 특성(크기, 반경, 질감 등)을 나타냅니다.\n", + "\n", + "### 목표 변수\n", + " - 종양이 악성인지(1) 양성인지(0)를 나타내는 이진 값입니다.\n", + "\n", + "### 용도\n", + " - 이 데이터셋은 주로 분류 문제에 사용됩니다.\n", + "\n", + "### 속성\n", + " - age: 나이\n", + " - sex: 성별\n", + " - bmi: 체질량지수\n", + " - bp: 평균 혈압\n", + " - s1 ~ s6: 6개의 혈청 측정값" + ] + }, { "cell_type": "code", "execution_count": 9, @@ -86,7 +127,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 로지스틱 회귀 (Logistic Regression)" + "# 로지스틱 회귀 (Logistic Regression)\n", + "로지스틱 회귀는 이름에 '회귀'가 들어가지만, 분류 문제에 사용되는 알고리즘입니다. 주로 이진 분류 문제에 사용되며, 확률을 출력으로 가집니다.\n", + "\n", + "### 수식\n", + " - \\(P(Y=1) = \\frac{1}{1 + e^{-(\\beta_0 + \\beta_1x_1 + \\beta_2x_2 + ... + \\beta_nx_n)}}\\)\n", + " - \\(P(Y=1)\\): 클래스 1에 속할 확률\n", + " - \\(x_1, x_2, ..., x_n\\): 독립 변수들\n", + " - \\(\\beta_0, \\beta_1, ..., \\beta_n\\): 회귀 계수\n", + "\n", + "### 목적\n", + " - 로그 오즈를 최대화하는 것입니다. 로그 오즈는 실제 값과 예측 확률 간의 로그 비율로 계산됩니다.\n", + "\n", + "### 사용 사례\n", + " - 스팸 메일 분류, 환자의 질병 발병 여부 예측, 고객 이탈 여부 예측 등 이진 분류 문제에 주로 사용됩니다. 다중 클래스 분류에도 확장하여 사용할 수 있습니다." ] }, { @@ -116,6 +170,25 @@ "print(\"Intercept:\", model.intercept_)\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# breast_cancer 데이터셋\n", + "\n", + "### 개요\n", + " - 위스콘신 대학의 유방암 진단 데이터셋으로, 유방암 종양의 임상 정보를 기반으로 악성(malignant) 또는 양성(benign)으로 분류하는 문제에 사용됩니다.\n", + "\n", + "### 특징\n", + " - 30개의 특징 변수가 있으며, 이는 종양의 다양한 특성(크기, 반경, 질감 등)을 나타냅니다.\n", + "\n", + "### 목표 변수\n", + " - 종양이 악성인지(1) 양성인지(0)를 나타내는 이진 값입니다.\n", + "\n", + "### 용도\n", + " - 이 데이터셋은 주로 분류 문제에 사용됩니다." + ] + }, { "cell_type": "code", "execution_count": 11,