문제1
9.x
10.o
문제2
문제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()