머신러닝을 공부를 사직하고나서 오랜만에 학생때로 돌아간 기분으로 공부했다! 무슨 소리인지..워딩이 중요한데..주말에도 강의는 계속된다~
- 논리 회귀 (Logistic regression) == sigmoid : 특정 변수에 대한 확률값이 선형이 아닌 S 커브 형태를 따르는 경우가 많으며 이러한 S-커브를 함수로 표현해낸 것
- 가설 : 시그모이드 함수에 선형회귀식이 들어간 형태
- 손실함수 : y=1에서 예측값이 0일 경우 확률이 0%가 되도록 해야하고, 예측값이 1일 경우 확률이 100%가 되도록 한다.

- activation='sigmoid'
- Keras에서 이진 논리 회귀의 경우 binary_crossentropy 손실 함수를 사용
- 다항 논리 회귀 (Multinomial logistic regression) : 바이너리 시그모이드의 다항 버전
- 1-hot encoding : 클래스를 2진법으로 변환
- Softmax 함수와 손실함수
- activation='softmax'
- Keras에서 다항 논리 회귀의 경우 categorical_crossentropy 손실 함수를 사용
- 다양한 머신러닝 모델
- Support vector machine (SVM)

- k-Nearest neighbors (KNN) ; 데이터 주변의 일정 거리 안의 다른 개체를 참고
- Decision tree (의사결정나무) : 스무고개
- Random forest : 다수의 Decision tree의 Majority voting
- Support vector machine (SVM)
- 전처리(Preprocessing) : 필요없는 데이터를 지우고 필요한 데이터만을 취하는 것, null 값이 있는 행을 삭제하는 것, 정규화(Normalization), 표준화(Standardization) 등의 많은 작업들을 포함
- 정규화 (Normalization)
- 표준화 (Standardization)

Multinomial logistic regression
# 라이브러리 임포트 및 약어
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam, SGD
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import OneHotEncoder
# 데이터프레임 로드
df = pd.read_csv('diabetes2.csv')
# 전처리 - 헤더 없는 경우 작성
df = pd.read_csv('Wine.csv', names=[
'name'
,'alcohol'
,'malicAcid'
,'ash'
,'ashalcalinity'
,'magnesium'
,'totalPhenols'
,'flavanoids'
,'nonFlavanoidPhenols'
,'proanthocyanins'
,'colorIntensity'
,'hue'
,'od280_od315'
,'proline'
])
# 전처리 - x데이터 outcome만 빼고 삽입
x_data = df.drop(columns=['Outcome'], axis=1)
x_data = x_data.astype(np.float32)
# 전처리 - y데이터 outcome만 삽입
y_data = df[['Outcome']]
y_data = y_data.astype(np.float32)
# 전처리 - x데이터 표준화
scaler = StandardScaler()
x_data_scaled = scaler.fit_transform(x_data)
# 전처리 - 1-hot 인코딩
encoder = OneHotEncoder()
y_data_encoded = encoder.fit_transform(y_data).toarray()
# 데이터셋 분할
x_train, x_val, y_train, y_val = train_test_split(x_data_scaled, y_data_encoded, test_size=0.2, random_state=2021)
# 모델 학습
model = Sequential([
Dense(1, activation='sigmoid') # 바이너리 : 1 , sigmoid | 멀티 : 다수 , softmax
])
model.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.01), metrics=['acc']) # 바이너리 : binary_crossentropy | 멀티 : categorical_crossentropy
model.fit(
x_train,
y_train,
validation_data=(x_val, y_val),
epochs=20
)'Python > Machine Learning' 카테고리의 다른 글
| Til - 24day (0) | 2022.05.19 |
|---|---|
| Til - 23day (0) | 2022.05.17 |
| Til - 22day (0) | 2022.05.16 |
| Til - 21day (0) | 2022.05.13 |
| Til - 20day (0) | 2022.05.12 |