결정 트리 & pandas(통계값)

G·2023년 1월 25일

와인 데이터를 통해(도수, 당도 pH 값) 로지스틱 회귀 모델을 적용하여 훈련, 예측해보자.

로지스틱 회귀 모델

데이터 확인

import pandas as pd

wine = pd.read_csv('https://bit.ly/wine_csv_data')
wine.head()


도수, 당도, pH이다. 그리고 class는 0이면 레드, 1이면 화이트 와인이다.
로지스틱 회귀 모델을 이용한다면 화이트 와인이 1, 양성클래스이다. 이를 골라내는 문제이다.

누락된 값과 통계값 출력

wine.info()


non-null count가 6497이니, 누락된 값은 없다.(non-null은 결측지로, 값이 존재하지 않는 데이터이다.)

wine.describe()


데이터프레임의 통계값을 출력한다.

이전 포스트에서의 훈련과정을 단순히 작성한다.

splitting

data = wine[['alcohol', 'sugar', 'pH']].to_numpy()
target = wine['class'].to_numpy()
from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(
	data, target, test_size=0.2, random_state=42s)

scaling

from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(train_input)
train_scaled = ss.transform(train_input)
test_scaled = ss.trasnsform(test_input)
from sklearn.Lienar_model import LogisticRegression
lr = LogisticRegression()
lr.fit(train_scaled, train_target)
lr.score(train_scaled, train_target) # 0.7808350971714451
lr.score(test_scaled, test_target) # 0.7776923076923077

점수가 높지 않다. 생각보다 화이트 와인을 고르는게 어렵나보다.

feedback

print(lr.coef_, lr.intercept_) # [[ 0.51270274  1.6733911  -0.68767781]] [1.81777902]

도수 값에 0.51270274를 곱하고, 당도에 1.6733911을 곱하고,... 이런식으로 모델에 대해 설명한다면, 이해하기 힘들다.
아마도 알코올 도수와 당도가 높을수록 화이트 와인일 가능성이 높고, pH가 높을수록 레드와인일 가능성이 높을 것 같지만, 여전히 직관적으로 다가오지 않는다.

이를 설명할 수 있는 방법이 무엇이 있을까?

Decision Tree(결정트리)

profile
열심히 안 사는 사람

0개의 댓글