이론 문제1

답: 2

→ 기울기 폭주는 일어나지 않는다

이론 문제2

답: 3,4

실습 문제3

def class_name(pro):
    if pro > 0.5:
        return '채소'
    return '과일'

tomatoma = tomato[['식품명']].values.reshape(-1, )

from scipy.special import expit
for case in zip(tomatoma , LogiReg.coef_ * scaled_tomato):
    z = sum(case[1])+LogiReg.intercept_
    #pro = sigmoid(z)
    pro = expit(z)
    print("%s = %s : %.06f"%(case[0], class_name(pro), pro))

Untitled

이론 문제4

답: 2,4

2: MAE의 식을 제곱하게 되어도 한 개의 최저점을 갖는 볼록함수가 나온다

4: 반드시는 아니다

실습 문제5

#load data
import pandas as pd
df = pd.read_csv('<https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv>')

#preprocessing
#print(df.isnull().sum())

titanic_target = df['Survived'].to_numpy()

titanic_input = df.drop(['Survived'], axis = 1)
titanic_input = titanic_input.drop(['Cabin', 'Name', 'PassengerId', 'Ticket'], axis = 1)
titanic_input['Age'].fillna(titanic_input['Age'].mean(), inplace=True)
titanic_input = pd.get_dummies(titanic_input)

from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(titanic_input, titanic_target, test_size = 0.2, random_state=42)

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()
ss.fit(train_input)
train_scaled = ss.transform(train_input)
test_scaled = ss.transform(test_input)

#Logistic regression
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()
lr.fit(train_scaled, train_target)
print("LogisticRegression_train_score", lr.score(train_scaled, train_target), sep = " : ")
print("LogisticRegression_test_score", lr.score(test_scaled, test_target), sep = " : ")

#SGDClassifier
from sklearn.linear_model import SGDClassifier

sc = SGDClassifier(loss = 'log', max_iter=50, random_state=42)
sc.fit(train_scaled, train_target)
print("SGDClassifier_train_score", sc.score(train_scaled, train_target), sep = " : ")
print("SGDClassifier_test_score", sc.score(test_scaled, test_target), sep = " : ")

Untitled