경기도미래기술학교 AI개발자 부트캠프 33일차 TIL- 혼자서 예측 프로그램 만들어보기.

2023. 6. 26. 02:04python

반응형

1. 당뇨, 2. 자전거, 3. 골프 회원 의 세 가지를 예측하여 만드는 과제를 받았다.

 

근데 하나도 몰라서.. 약간 하기 싫었다가 주말에 기초강의를 다시 보고 다시 보니까 조금 이해가 가는 부분. 월요일에 재설명 해주시겠지?? ㅎㅎ 아마 낸 사람 많이 없을 것이다. 수업시간에 따라잡고 공부 열심히 하면 된다.

from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import DecisionTreeRegressor
from sklearn.tree import plot_tree
import matplotlib.pyplot as plt
import numpy as np

from sklearn.metrics import r2_score

# Load the diabetes dataset
#당뇨병
diabetes = load_diabetes()
data, targets = diabetes.data, diabetes.target
#target : 정답 데이터이다. 지도학습이니까 정답인지 오답인지 알려주는 것.
#당뇨는 암처럼 양성, 악성 cancer가 아니라 수치로 환산되기 때문에 타겟이 다양하다.
# print(targets)
print(diabetes.feature_names)

print("data / target shape")
print(data.shape, targets.shape, '\n')

X_train, X_test, y_train, y_test = train_test_split(data, targets, test_size=0.2, random_state=11)
print(f"type: {type(X_train) = } /  {X_train.shape = }")
print(f"type: {type(y_train) = } /  {y_train.shape = }")
print(f"type: {type(X_test) = } /  {X_test.shape = }")
print(f"type: {type(y_test) = } /  {y_test.shape = }\n")

model = DecisionTreeRegressor(criterion="friedman_mse", max_depth=3)

print(type(model))
for attr in dir(model):
    if not attr.startswith('_'):
        print(attr)
model.fit(X_train, y_train)

#max_depth가 많아서 3까지 보이도록 제한.
print("depth: ", model.get_depth())
print("number of leaves: ", model.get_n_leaves())

accuracy = model.score(X_test, y_test)
print(f"{accuracy = :.4f}")

#결정계수. 타겟 - 예측 제곱의 합 / 타겟 - 평균 제곱의 합
#잔차는 실제값 - 예측값.

# y_pred = model.predict(X_test)
# r2 = r2_score(Y_test, y_pred)
# print(f"R²: {r2:.4f}")

y_pred = model.predict(X_test)
residuals = y_test - y_pred
ss_residuals = np.sum(residuals ** 2)
ss_total = np.sum((y_test - np.mean(y_test)) ** 2)

r2 = 1 - (ss_residuals / ss_total)
#c한자 하면 제곱 나옴.
print(f"R²: {r2:.4f}")


plt.figure(figsize=(12, 8))
# plot_tree(model, filled=True, feature_names=diabetes.feature_names, class_names=diabetes.target_names)
plot_tree(model, filled=True, feature_names=diabetes.feature_names)
plt.show()

결정 계수 다시 이해하고싶고,

엑셀에서는 y_train이랑 test를 어떻게 구분하는지? 그냥 실 데이터에서 추측 하는 것이겠지?

 

fit이라는 것으로 학습하고 predict 하는 것 까지. 다시 공부 해보자.

 

https://gggggeun.tistory.com/11

 

사이킷런 기반 프레임워크(1) Estimator, fit(), predict() 메서드

Estimator 이해 및 fit(), predict() 메서드 사이킷런은 API 일관성과 개발 편의성을 제공하기 위한 노력이 엿보이는 머신러닝학습에 최적인 패키지입니다. 사이킷런은 머신러닝 모델 학습을 위해서 fit(

gggggeun.tistory.com

 

728x90