3주차 colab

문제1

  1. O
  2. X 회귀모델은 확률을 구하는 거고 로지스틱회귀는 분류모델이다
  3. O 소프트맥스 함수 → 확률로 바꾸기
  4. O
  5. X epoch는 전체 샘플 1번 학습시킨 것을 의미한다.
  6. 모르겠음
  7. O 시그모이드 함수는 확률을 나타냄
  8. o

9.x

10.o

문제2

  1. X c는 규제의 역수
  2. O
  3. X decision_function() 메서드는 z값을 계산 predict_proba()는각 클래스에 속할 확률값을 계산
  4. O
  5. O 시그모이드는 이진 분류에 적합

문제3, 4

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from scipy.special import expit

df_fish = pd.read_csv('<https://bit.ly/fish_csv_data>')

T = df_fish['Species'].to_numpy()
I = df_fish[['Weight', 'Height', 'Width']].to_numpy()
train_input, test_input, train_target, test_target=train_test_split(I,T, test_size=0.2, random_state=42)

# StandardScaler를 통해 훈련세트를 표준화시키자
ss = StandardScaler()
ss.fit(train_input)
train_scaled = ss.transform(train_input)
test_scaled = ss.transform(test_input)

# 불리언 인덱싱을 통해 Parkki나 Perch가 있는 행만을 골라내자

boolidx =  (train_target == 'Parkki') | (train_target == 'Perch')
train_Pakki_Perch = train_scaled[boolidx]
target_Pakki_Perch = train_target[boolidx]

print(target_Pakki_Perch[:10])
print('\\n')
lr = LogisticRegression()
lr.fit(train_Pakki_Perch, target_Pakki_Perch)
# 0~9셀까지 로지스틱 선형방정식의 z값을 소수점 셋째자리까지 출력
# 0~9셀까지 z값을 시그모이드 함수를 적용해서 소수점 셋째자리까지 출력

z = lr.decision_function(train_Pakki_Perch[0:10])
z = np.round(z,3)
sig = np.round(expit(z),3)
print(z)
print('\\n')
print(sig)

# 실습문제 3번에서 나온 z값과 시그시그모이드 함수 거친 값을 가지고 그래프를 그리고자 한다.
# 위에서 나온 z 와 sig 변수 활용
import matplotlib.pyplot as plt
z_range = np.arange(-5,5, 0.001)
plt.plot(z_range,expit(z_range))
plt.scatter(z,sig)
plt.xlabel('z')
plt.ylabel('phi')
plt.show()