01. 기본 미션

<aside> 1️⃣ 로지스틱 회귀가 이진 분류에서 확률을 출력하기 위해 사용하는 함수는 무엇인가요?

</aside>

답: 1. 시그모이드 함수
풀이: 확률이 되려면 0과 1 사이의 값이 되어야 하는데, 이를 이진 분류 (두 가지 분류로 나누는 것)을 위해서는 시그모이드 함수를 사용해야 합니다. 시그모이드 함수는 선형 방정식의 출력 z의 음수를 사용해 자연 상수 e를 거듭제곱해 그래프를 그려내고, 기준점을 정해 0과 1로 나눌 수 있도록 하기 때문입니다.

02. 선택 미션

import numpy as np
from sklearn.linear_model import SGDClassifier
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import pandas as pd

fish = pd.read_csv('<https://bit.ly/fish_csv>')
fish_input = fish[['Weight', 'Length', 'Diagonal', 'Height', 'Width']].to_numpy()
fish_target = fish['Species'].to_numpy()
train_input, test_input, train_target, test_target = train_test_split(fish_input, fish_target, random_state=42)
classes = np.unique(train_target)
ss = StandardScaler()
ss.fit(train_input)
train_scaled = ss.transform(train_input)
test_scaled = ss.transform(test_input)
sc = SGDClassifier(loss='log', random_state=42)
train_score = []
test_score = []

for _ in range(0, 300):
    sc.partial_fit(train_scaled, train_target, classes=classes)
    train_score.append(sc.score(train_scaled, train_target))
    test_score.append(sc.score(test_scaled, test_target))

plt.plot(train_score)
plt.plot(test_score)
plt.xlabel('epoch')
plt.ylabel('accuracy')
plt.show

Untitled