중심선은 잔차(오차)의 제곱의 합이 최소가 되게 하는 선
기울기
가 0
이 되는 지점을 찾는 것이 경사하강법의 기본개념독립변수가 하나인 것을 단순 선형회귀 모델, 둘 이상인 것을 다중 선형회귀 모델이라고 한다
1차 방정식이므로 기울기와 절편을 알면 직선을 그릴 수 있다
훈련 과정
from sklearn.linear_model import LinearRegression
lr = LinearRegression().fit(X_train, y_train)
새로운 데이터 예측
import numpy as np
print(X_train.shape)
X_new = np.array([[2,9]]) # 다차원 배열로 만든다
result = lr.predict(X_new)
과대적합을 피하기 위하여 모델의 복잡도를 낮출 수 있다
가중치(weight)가 작은 값을 갖도록 하는 것 -> 가중치 규제 (Weight Regularization)
손실값에 penalty를 추가하여 가중치를 낮춘다
L1 규제: 가중치의 절댓값에 비례하는 패널티 추가
L2 규제: 가중치의 제곱에 비례하는 패널티 추가
from sklearn.linear_model import Ridge
ridge = Ridge().fit(X_train, y_train)
from sklearn.linear_model import Ridge
ridge = Ridge(alpha=10).fit(X_train, y_train)
from sklearn.linear_model import Lasso
lasso = Lasso().fit(X_train, y_train)
from sklearn.linear_model import Lasso
lasso = Lasso(alpha=0.1).fit(X_train, y_train)
from sklearn.linear_model import ElasticNet
elasticnet = ElasticNet(alpha=0.2, l1_ratio=0.2).fit(X_train,y_train)
stratify
옵션 사용, 종속변수 지정X_train, X_test, y_train, y_test= train_test_split(X,y,stratify=y)
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression(solver="liblinear")
logreg.fit(X_train, y_train)
logreg = LogisticRegression(C=100, solver="liblinear")
logreg.fit(X_train,y_train)
logreg = LogisticRegression(C=100, solver="liblinear", penalty= "l1", max_iter=150)
logreg.fit(X_train,y_train)
최적화(Optimization)는 모델의 예측값과 실제값 사이의 오차를 줄이기 위해 모델의 매개변수 (가중치, weight)를 조정하는 과정
어떤 노트북이 고성능 노트북일때, 그것이 팔릴 가능성
훈련
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
gnb.fit(X,y)
독립변수가
BernoulliNB와 MultinomialNB는 텍스트 분류에서 많이 사용되었다
# Bernoulli
from sklearn.naive_bayes import BernoulliNB
bnb = BernoulliNB()
bnb.fit(X,y)
# MultinomialNB
from sklearn.feature_extraction import DictVectorizer
data = [{'house': 100, 'street':50, 'shop': 25, 'car':100, 'tree': 20}, {'house':5,'street':5,'shop':0,'car':10, 'tree':500, 'river': 1}]
dv = DicVectorizer(sparse=False) # 순서에 상관없이 key와 value의 행렬을 구성
X = dv.fit_transform(data)
Y = np.array([1,0])
from sklearn.naive_bayes import MultinomialNB
mnb = MultinomialNB()
mnb.fit(X,Y)
X_test = X_data = [{'house': 80, 'street': 20, 'shop': 15, 'car':70, 'tree': 10, 'river':1}, {'house': 10,'street':5,'shop':1,'car':8, 'tree':300, 'river': 0}]
mnb.predict(dv.fit_transform(X_test))