본문 바로가기

Study_note(zb_data)/Machine Learning

(32)
스터디노트 (Logistic Regression) 📌 Logistic Regression - Linear Regression -> 회귀 - 분류기에 사용하기 위한 목적 - 분류는 0 or 1로 예측을 해야하나, Linear Regression을 그대로 적용하면 예측 값은 0보다 작거나 1보다 큰 값이 될 수 있다 - 예측 값을 항상 0과 1 사이의 값을 갖도록 함수를 수정하는 것! (시그모이드를 이용) import numpy as np z = np.arange(-10, 10, 0.01) g = 1 / (1+np.exp(-z)) import matplotlib.pyplot as plt %matplotlib inline plt.plot(z, g); plt.grid() plt.show() plt.figure(figsize=(12, 8)) ax = plt.gc..
스터디노트 (Cost Function 2) 📌 Boston 집 값에 대해 자세하게 알아보자 boston.head() #집 값에 대한 히스토그램 import plotly_express as px fig = px.histogram(boston, x='PRICE') fig.show() 📌 상관 계수 구하기 import matplotlib.pyplot as plt import seaborn as sns corr_mat = boston.corr().round(1) sns.heatmap(data = corr_mat, annot=True, cmap='bwr') 📌 plot 그림 그리기 sns.set_style('darkgrid') sns.set(rc={'figure.figsize':(12, 6)}) fig, ax = plt.subplots(ncols = 2)..
스터디노트 (Cost Function) 📌 Cost Function은 최소화 할 수 있는 것이 좋다. 📌 코드로 한 번 구해보자! import numpy as np a = np.poly1d([1, 1]) b = np.poly1d([1, -1]) a,b >>>> (poly1d([1, 1]), poly1d([ 1, -1])) # (x+1) * (x-1) = x^2 -1 a*b >>>> poly1d([ 1, 0, -1]) # x^2의 계수 -> 1 / x의 계수 -> 0 / 상수항 -> -1 np.poly1d([2, -1])**2 + np.poly1d([3, -5])**2 + np.poly1d([5, -6])**2 >>>> poly1d([ 38, -94, 62]) import sympy as sym theta = sym.Symbol('th') di..
스터디노트 (통계적 회귀) 📌 통계적 회귀 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns data = pd.read_csv('../data/ecommerce.csv', sep=',') data.drop(['Email', 'Address', 'Avatar'], axis=1, inplace=True) data.head() 🔻Boxplot을 그려보자 plt.figure(figsize=(12, 8)) sns.boxplot(data=data.iloc[:, :-1]); plt.figure(figsize=(12, 8)) sns.boxplot(data=data['Yearly Amount Spent']); 🔻Pairplot으로 ..
스터디노트 (Regression) 📌 학습의 종류 🔻지도 학습에는 분류와 회귀가 있다 🔻비지도 학습의 종류 📌 선형 회귀에 대해서 알아보자 🔻OLS - Ordinary Linear Least Square의 기본 개념 정리 - 🔻OLS 실습하기 (Code로 쉽게 할 수 있다!) import pandas as pd data = {'x':[1,2,3,4,5], 'y':[1,3,4,6,5]} df = pd.DataFrame(data) df import statsmodels.formula.api as smf lm_model = smf.ols(formula='y ~ x', data=df).fit() # y=ax+b >>> Intercept 0.5 x 1.1 dtype: float64 🔻lmplot 사용하여 직선을 그려보자 import matplot..
스터디노트 (ML_함수의 표현) 📌 벡터의 표현 🔻열 벡터 - 열벡터 (열 방향 정렬), 트랜스포지션(T)를 사용하는 경우가 많다. 🔻단일 변수 스칼라 함수 🔻다중 변수 스칼라 함수 - x 위에 화살표 방향을 표시하여 여러개의 값을 가진다고 표현 (열 벡터) - x 가 여러개의 값을 가지지만, y는 단일 값을 가진다 🔻다변수 벡터함수 - 들어가는 입력이 벡터이며, 출력 값이 벡터로 나옴 (열벡터) 📌 다변수 벡터함수 예제 u = np.linspace(0, 1, 30) v = np.linspace(0, 1, 30) U, V = np.meshgrid(u, v) X = U Y = V Z = (1+U**2) + (V/(1+V**2)) 🔻meshgrid - 한개의 값을 기준으로 다른 하나의 출력되는 모든 값을 더해준다. fig = plt.fig..
스터디노트 (ML_Math function) 📌다항함수와 평행이동 그래프 그려보기 - 다항함수? f(x) = ax^y + b # 평행이동 import numpy as np import matplotlib.pyplot as plt x = np.linspace(-3, 2, 100) y1 = 3 * x ** 2 + 2 y2 = 3 * (x+1) ** 2 + 2 plt.figure(figsize=(12, 8)); plt.plot(x, y1, ls='dashed', label='$y=3x^2+2$') plt.plot(x, y2, label='$y=3(x+1)^2+2$') plt.legend(fontsize=15) plt.grid() plt.xlabel('$x$', fontsize=25) plt.ylabel('$y$', fontsize=25) plt.show..
스터디노트 (ML_모델 평가, ROC와 AUC) 📌모델 평가는 어떻게 하는 걸까? 🔻 Model evaluation - 기존에는 0.5를 기준으로 0, 1로 결과를 반영하였으나 (if 이진분류), 이제는 가변성을 가지고 결과를 반영해보자 🔻 Accuracy - 전체 데이터 중 맞게 예측한 것의 비율 🔻 Precision (TP / (TP + FP)) - 양성이라고 예측한 것 중에서 실제 양성의 비율 🔻 RECALL (TP / (TP+FN)) - 참인 데이터들 중에서 참이라고 예측한 것 🔻 FALL-OUT (FP / (FP+TN)) - 실제 양성이 아닌데, 양성이라고 잘못 예측한 경우 📌F1 - Score 🔻 Recall과 Precision을 결합한 지표 - Recall과 Precision이 어느 한쪽으로 치우치지 않고, 둘 다 높은 값을 가질 수록 높..