-
의사결정나무(Decision Tree) 실습카테고리 없음 2020. 11. 9. 21:49
의사결정나무(Decision Tree): 학습 데이터를 분석하여 데이터안에 내재되어 있는 패턴을 통해 새롭게 관측된 데이터를 예측/분류하는 방법론
Decision Tree Regression
- 데이터 셋 불러오기
sklearn.datasets 라이브러리를 이용하여 캘리포니아 데이터셋을 불러온다.
더보기<sklearn.datasets.fetch_california_housing>
from sklearn.datasets import fetch_california_housing house = fetch_california_housing()
############# house.feature_names() 를 이용하여 컬럼명 확인하기 ############# x_data = pd.DataFrame(data = house.data, columns = ['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude']) y_data = pd.DataFrame(data=house.target)
- 학습 데이터/테스트 데이터 나누기
학습/테스트 데이터를 나누어 학습 데이터를 가지고 학습한 모델을 테스트 데이터를 이용하여 얼마나 좋은 성능을 내는지 확인할 예정
더보기<sklearn.model_selection.train_test_split>
from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size = 0.3) # 학습/테스트 데이터 비율 -> 7:3
- 모델학습
싸이킷 런에서 제공하는 Decision Tree 라이브러리를 이용하여 모델 학습을 한다
더보기<sklearn.tree.DecisionTreeRegressor>
from sklearn.tree import DecisionTreeRegressor reg = DecisionTreeRegressor(max_depth = 10, criterion = 'mae', splitter = 'best') reg.fit(x_train, y_train) y_pred = reg.predict(x_test)
사용 된 DecisionTreeRegressor 파라미터:
criterion: 분할 성능 측정하는 기능 ("mse", "friedman_mse", "mae")
splitter: 각 노드에서 분할을 선택하는 방법 ("best", "random")
max_depth: 트리의 최대 깊이
- 성능 테스트
MSE(mean squared error)로 계산된 회귀모델의 성능 측정
더보기<sklearn.metrics.mean_squared_error>
from sklearn.metrics import mean_squared_error print(mean_squared_error(y_test, y_pred))
Decision Tree Classification
- 데이터 셋 불러오기
#dataset from sklearn.datasets import load_wine wine = load_wine() #wine.feature_names() x_data = pd.DataFrame(data= wine.data, columns=['alcohol', 'malic_acid', 'ash', 'alcalinity_of_ash', 'magnesium', 'total_phenols', 'flavanoids', 'nonflavanoid_phenols', 'proanthocyanins', 'color_intensity', 'hue', 'od280/od315_of_diluted_wines', 'proline']) y_data = pd.DataFrame(data= wine.target)
- 학습 데이터/테스트 데이터 나누기
from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size= 0.3)
- 모델 학습
싸이킷 런에서 제공하는 Decision Tree 라이브러리를 이용하여 모델 학습을 한다
더보기<sklearn.tree.DecisionTreeClassifier>
from sklearn.tree import DecisionTreeClassifier clf = DecisionTreeClassifier(max_depth = 7, criterion = 'gini', min_sample_leaf = 1) clf.fit(x_train, y_train) y_pred = clf.predict(x_test)
사용 된 DecisionTreeClassifier 파라미터:
criterion: 분할 성능 측정하는 기능 ("gini", "entropy")
splitter: 각 노드에서 분할을 선택하는 방법 ("best", "random")
max_depth: 트리의 최대 깊이
min_samples_leaf: 리프 노드에 있어야 하는 최소 샘플 수
- 성능 테스트
정확도(accuracy score)로 측정된 모델의 성능을 확인한다.
더보기<sklearn.metrics.accuracy_score>
from sklearn.metrics import accuracy_score print(accuracy_score(y_test, y_pred))