답: 2
→ 기울기 폭주는 일어나지 않는다
답: 3,4
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))

답: 2,4
2: MAE의 식을 제곱하게 되어도 한 개의 최저점을 갖는 볼록함수가 나온다
4: 반드시는 아니다
#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 = " : ")
