본문 바로가기
Machine learning/Machine learning 강의

머신 러닝 로지스틱 회귀(Logistic Regrssion)#3 - 로지스틱 회귀 구현하기, 와인 종류 예측하기 구현

by grey-hat hacker 2021. 2. 9.
728x90

 

from sklearn.datasets import load_iris

import pandas 

iris_data = load_iris()
print(iris_data.DESCR)

 - sepal length in cm
        - sepal width in cm
        - petal length in cm
        - petal width in cm
        - class:
                - Iris-Setosa
                - Iris-Versicolour
                - Iris-Virginica

데이터가 넓이, 높이 등등 있고 목표 변수가 꽃의 종류이다! 그리고 150개 중 Setosa 50개 Versicolour 50개 50개 있다. 


X = pd.DataFrame(iris_data.data, columns=iris_data.feature_names)
X


sepal length (cm)	sepal width (cm)	petal length (cm)	petal width (cm)
0	5.1	3.5	1.4	0.2
1	4.9	3.0	1.4	0.2
2	4.7	3.2	1.3	0.2
3	4.6	3.1	1.5	0.2
4	5.0	3.6	1.4	0.2

x에 입력 데이터를 pandas DataFrame 형식으로 넣어 주었다. 


y = pd.DataFrame(iris_data.target, columns=['class'])

y에 목표변수를 넣어주었다. 


X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=5)
y_train = y_train.values.ravel()

트레이닝 셋과 테스트 셋으로 나누어 주었다. 

values.ravel() -> 이거는 추가해도 되고 안해도 되는데 안하면 경고창 하나가 뜨니 추가하는게 좋다. 


model = LogisticRegression(solver='saga', max_iter=2000)

solver = 모델을 최적화 할 때 어떤 알고리즘을 사용할지 결정하는 것 

max_iter = 최적화를 할 때 그 과정을 몇 번 반복할지 결정하는 것(2000설정해도 최적화가 되면 멈춤)


model.fit(X_train, y_train)
model.predict(X_test)
array([1, 2, 2, 0, 2, 1, 0, 2, 0, 1, 1, 2, 2, 2, 0, 0, 2, 2, 0, 0, 1, 2,
       0, 1, 1, 2, 1, 1, 1, 2])

트레이닝 하였고 분류이기 때문에 0,1,2 의 값만 나온다. 


model.score(X_test, y_test)
0.9666666666666667

예측을 잘 했는지 평가! 

약 96%정도로 정확하다는 것을 의미 한다. 


최종 코드

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression 

import pandas as pd

iris_data = load_iris()

X = pd.DataFrame(iris_data.data, columns=iris_data.feature_names)
y = pd.DataFrame(iris_data.target, columns=['class'])

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=5)
y_train = y_train.values.ravel()

model = LogisticRegression(solver='saga', max_iter=2000)
model.fit(X_train, y_train)
model.predict(X_test)

model.score(X_test, y_test)

로지스틱 회귀로 와인 종류 분류하기

# 필요한 라이브러리 import
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

import pandas as pd  

wine_data = datasets.load_wine()
""" 데이터 셋을 살펴보는 코드
print(wine_data.DESCR)
"""

# 입력 변수를 사용하기 편하게 pandas dataframe으로 변환
X = pd.DataFrame(wine_data.data, columns=wine_data.feature_names)

# 목표 변수를 사용하기 편하게 pandas dataframe으로 변환
y = pd.DataFrame(wine_data.target, columns=['Y/N'])

# 코드를 쓰세요
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=5)
y_train = y_train.values.ravel()

logistic_model = LogisticRegression(solver='saga', max_iter=7500)  # sci-kit learn에서 로지스틱 모델을 가지고 온다
logistic_model.fit(X_train, y_train)  # 학습 데이터를 이용해서 모델을 학습 시킨다

# 로지스틱 회귀 모델를 이용해서 각 와인 데이터 분류를 예측함
y_test_predict = logistic_model.predict(X_test)

# 로지스틱 회귀 모델의 성능 확인 (정확성 %를 리턴함)
score = logistic_model.score(X_test, y_test)
y_test_predict, score
728x90
반응형

댓글