경기도미래기술학교 AI개발자 부트캠프 33일차 TIL- 혼자서 예측 프로그램 만들어보기.
2023. 6. 26. 02:04ㆍpython
반응형
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
728x90
'python' 카테고리의 다른 글
경기도미래기술학교 AI개발자 부트캠프 35일차 TIL- KNN 알고리즘 그려보기. (0) | 2023.06.28 |
---|---|
axis에 대해서. 1,2,3차원 (0) | 2023.06.27 |
머신러닝 용어, 기본 개념. 학습데이터? 테스트 데이터? 머신러닝 계의 Hello World인 붓꽃(load_iris) 연습하기. (0) | 2023.06.25 |
경기도미래기술학교 AI개발자 부트캠프 30일차 TIL- Decision Tree의 한계. ratio와 지니인덱스 (0) | 2023.06.20 |
경기도미래기술학교 AI개발자 부트캠프 29일차 TIL- Decision tree란? 엔트로피란? 개념 알고 실습하기. (1) | 2023.06.19 |