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
반응형
'Machine learning > Machine learning 강의' 카테고리의 다른 글
머신 러닝 데이터 전처리 #2 - One-hot Encoding (0) | 2021.02.09 |
---|---|
머신 러닝 데이터 전처리 #1 - Feature Scaling(min-max normalization) 0과 1사이 (0) | 2021.02.09 |
머신 러닝 로지스틱 회귀(Logistic Regrssion)#2 - 손실 함수, 로그 손실 (0) | 2021.02.09 |
머신 러닝 로지스틱 회귀(Logistic Regrssion)#1 - 로지스틱 회귀란? (0) | 2021.02.08 |
머신 러닝 다항 회귀(Polynomial Regression) #2 - sklearn으로 다중 회귀, 당뇨병 예측 학습 프로그램 만들기 (0) | 2021.02.08 |
댓글