1. 로지스틱 회귀
import pandas as pd
fish = pd.read_csv('https://bit.ly/fish_csv_data')
fish.head()
fish_input = fish[['Weight', 'Length', 'Diagonal', 'Height', 'Width']].to_numpy()
fish_target = fish['Species'].to_numpy()
from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier(n_neighbors = 3)
kn.fit(train_scaled, train_target)
print(k)
위 코드는 판다스를 이용해 데이터를 미리 준비해둔 코드이다. 여기서 로지스틱 회귀는 가중치 z = a특징1 + b특징2 + ~~로 표현가능하다.
bream_smelt_indexes =(train_target == 'Bream') | (train_target == 'Smelt')
train_bream_smelt = train_scaled[bream_smelt_indexes]
target_bream_smelt = train_target[bream_smelt_indexes]
from sklearn.linear_medel import LogisticRegression
lr = LogisticRegression()
lr.fit(train_bream_smelt, target_bream_smelt)
print(lr.predict(train_bream_smelt[:5]))
print(lr.predict_proba(train_bream_smelt[:5]))
위 코드는 로지스틱 회귀 알고리즘으로 Bream, Smelt 이진 분류를 나타낸 코드이다. 로지스틱 회귀 알고리즘은 이름과는 다르게 분류 알고리즘이라는 것을 알고 있어야 한다.
lr = LogisticRegression(C = 20, max_iter=1000)
lr.fit(train_scaled, train_target)
print(lr.score(train_scaled, train_target))
print(lr.score(test_scaled, test_target))
proba = lr.predict_proba(test_sclaed[:5])
print(np.round(proba, decimals=3))
print(lr.coef_.shape, lr.intercept_.shape)
위 코드는 로지스틱 회귀 알고리즘을 다중 분류로 만든 코드이다. 이는 L2 로지스틱 규제를 기본적으로 적용하여 정확도를 측정한다. 위 코드는 5개의 클래스와 7개의 개체를 가진 표인데, 이는 원래 확률은 다 더했을 때 1이 나와야 하는데 7개를 다 더했을 때 1이 나오지 않는 오류를 범하고 있는데 이를 소프트맥스 함수를 이용하여 이 오류를 고칠 수 있다.
decision = lr.decision_function(test_scaled[:5])
print(np.round(decision, deciamals=2))
from scipy.special import softmax
proba = softmax(decision, axis=1)
print(np.round(proba, decimals=3))