728x90
728x90
[ 지난 글 ] 에서 다중선형회귀가 무엇인가에 대해 다뤄봤다.
다중선형회귀에서는 연속성 숫자를 가진 종속변수 Y는 구할 수 있지만
0 or 1 (범주형 숫자)에는 적용이 되지 않는 것을 볼 수있다.
아래의 그림은 나이에 따른 암 발병 여부인데 빨간 선이 의미가 없다는 것을 알 수 있다.
이런 문제는 로지스틱 회귀 모델을 적용할 수 있다.
🔎 로지스틱 함수 [ Logistic Function ]
- s - 커브 함수를 나타냄
- x값은 어떤 값을 받아도 상관없지만 y값은 항상 0 ~ 1로 정해져 있음
- 시그모이드 함수라고 하기도 함
이항 로지스틱 회귀 결정경계란
2개의 클래스가 있을 때 클래스를 분류하는 기준
위와 같이 Y가 1이 될 확률이 0이될 확률보다 높으면 1로 분류하고
그 반대가 되면 0으로 분류하는데
그 확률이 같게 되면 그걸 하이퍼 플레인 [ hyperplane ] = 로지스틱 결정경계 라고 한다.
✔️ [ 실습 ] IRIS 데이터
import seaborn as sns # seaborn을 불러오고 SNS로 축약
iris = sns.load_dataset('iris') # iris라는 변수명으로 Iris data를 download
X = iris.drop('species', axis=1) # 'species'열을 drop하고 input X를 정의
y = iris['species']
1️⃣ Iris 데이터를 다운로드 받고 x, y에 데이터를 넣어줌
# y data를 범주형으로 변환
from sklearn.preprocessing import LabelEncoder # LabelEncoder() method를 불러옴
classle = LabelEncoder()
y = classle.fit_transform(iris['species'].values) # species 열의 문자열을 categorical 값으로 전환
2️⃣ LabelEncoder로 y데이터를 범주형으로 바꿈
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
3️⃣ StandardScaler로 x_train 데이터를 스케일링
✔️StandardScaler
- 평균을 제거하고 데이터를 단위 분산으로 조정
🔺 이상치가 있다면 평균과 표준편차에 영향을 미쳐 균형잡힌 척도를 보장할 수 없음
from sklearn.linear_model import LogisticRegression
Logit = LogisticRegression(C=200, random_state=11) # C = 1/λ. 디폴트: L2, Auto.
l_1=Logit.fit(X_train_std, y_train)
y_train_pred = Logit.predict(X_train_std)
C 값이 크면 regularization 이 적게 적용되고 ➡️ Overfitting ( train결과에만 너무 치중 ) 발생 가능
C 값이 작으면 regularization이 크게 적용되어 ➡️ Underfitting 발생 가능
from sklearn.metrics import accuracy_score
print(accuracy_score(y_train,y_train_pred))
from sklearn.metrics import confusion_matrix
print(confusion_matrix(y_train, y_train_pred))
정확도와 matrix가 이렇게 나오는 것을 알 수 있음
728x90
'CODING > AI & ML & DL' 카테고리의 다른 글
[기계학습] 선형 판별 분석 | Linear Discriminant Analysis (0) | 2020.10.14 |
---|---|
[기계학습] 판별 분석 | Discriminant analysis (0) | 2020.10.13 |
[기계학습] Bias - Variance Decomposition (0) | 2020.09.29 |
[기계학습] 다중선형회귀 & 경사하강법 | Multiple Linear Regression & Gradient Descent (0) | 2020.09.28 |
[기계학습] KNN | K - 최근접 이웃 알고리즘 (5) | 2020.09.21 |
댓글