-
multiple logistic regression 실습아가개발자/머신러닝 2020. 10. 9. 02:51
multiple logistic regression(다중 로지스틱 회귀): Y값이 범주형 숫자로 된 데이터에 회귀를 적용하는 모델
범주형 숫자로 된 데이터 즉, 분류 문제는 Linear regression으로는 문제를 해결할 수 없지만 Logistic regression을 적용하여 회귀로 문제를 해결할 수 있다.
본 포스팅에서 실습할 문제는 wine dataset을 이용하여 wine의 종류를 분류하는 문제를 풀어볼 것이다. (사용한 라이브러리의 매뉴얼은 접은글에 첨부하였음)
데이터셋 로드
wine 데이터는 sklearn을 이용하여 불러올 수 있다. 왠만하면 sklearn.datasets. 라이브러리를 이용하여 학습에 자주 쓰이는 유명한 데이터는 다운받을 수 있다.
더보기<sklearn.datasets.load_wine>
manual: scikit-learn.org/stable/search.html?q=dataset.load
Search — scikit-learn 0.23.2 documentation
Search Please activate JavaScript to enable the search functionality. From here you can search these documents. Enter your search words into the box below and click "search". Note that the search function will automatically search for all of the words. Pag
scikit-learn.org
import torch import pandas as pd import numpy as np from sklearn.datasets import load_wine data_wine = load_wine() data_wine.feature_names #데이터의 column명을 읽어와서, 데이터 프레임의 column명으로 만들어줌 data_x= pd.DataFrame(data = data_wine.data, columns=['alcohol', 'malic_acid', 'ash', 'alcalinity_of_ash', 'magnesium', 'total_phenols', 'flavanoids', 'nonflavanoid_phenols', 'proanthocyanins', 'color_intensity', 'hue', 'od280/od315_of_diluted_wines', 'proline']) data_y = pd.DataFrame(data= data_wine.target) #target으로 결과값에 해당하는 y데이터를 만들어줌
학습데이터/테스트 데이터 나누기
본 실습에 사용된 모델이 얼마나 좋은 성능을 내는지 알아보기 위해 학습데이터와 테스트 데이터를 나누어 성능평가를 할 예정이다.
from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(data_x, data_y, test_size = 0.3, random_state = 1) # 30%를 테스트 데이터로 사용
모델 학습 & 평가
해당 모델은 Logistic regression을 사용할 것이기 때문에 싸이킷런에서 라이브러리를 import하여 학습 시킨다.
더보기*모델 학습*
<sklearn.linear_model.LogisticRegression>
sklearn.linear_model.LogisticRegression — scikit-learn 0.23.2 documentation
scikit-learn.org
*모델 평가*
<sklearn.metrics.accuracy_score>
sklearn.metrics.accuracy_score — scikit-learn 0.23.2 documentation
scikit-learn.org
#학습 from sklearn.linear_model import LogisticRegression l2 = LogisticRegression(penalty= 'l2', C = 0.5, solver= 'saga') clf = l2.fit(x_train, y_train) pred = l2.predict(x_test) #평가 from sklearn.metrics import accuracy_score print(accuracy_score(y_test, pred))
penalty(규제화 방법) : L1, L2C(규제강도): 1/λsolver // 설명 추가 예정. .'아가개발자 > 머신러닝' 카테고리의 다른 글
선형 판별 분석(LDA)/ 이차 판별 분석(QDA) (0) 2020.10.13 판별 분석 (Discriminant Analysis) (0) 2020.10.12 로지스틱 회귀-Logistic regression (0) 2020.09.28 다중선형회귀 - Multiple Linear Regression (0) 2020.09.28 KNN classification - iris (0) 2020.09.18