.
.
.
: ID3, C4.5, C5.0, CART
entropy
_
값이 0 이거나 1일 때 (즉, 분류가 잘 될 수록) entropy값은 0이나 1이 됨 : 값이 최소
gini
_
어느 것 하나일 확률 ( )가 높다면, 분류가 잘 될수록, 지니계수는 0에 가까운 값을 반환함
import pandas as pd
import numpy as np
import seaborn as sns
from sklearn.datasets import load_iris
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.metrics import r2_score, mean_squared_error
Iris Data : Decision Tree
X, y = load_iris(return_X_y = True)
X_train, y_train, X_test, y_test = train_test_split(X, y, stratify = y, random_state = 120)
model = DecisionTreeClassifier(criterion = 'entropy', max_depth = 3, min_samples_leaf = 3)
# mins_samples_leaf : leaf의 최소 샘플 개수
model.fit(X_train, y_train)
pred = model.predict(X_test)
print(model.score(X_train, y_train)) # train score
print(model.score(X_test, y_test)) # test score
#train score 0.9642857142857143
#test score 1.0
plot_tree(model)
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.KFold.html
머신러닝 모델의 성능을 평가하는 방법 중 하나로,
데이터셋을 K개의 폴드로 나누고, 각 폴드를 번갈아가며 모델의 학습과 검증을 수행
< code >
from sklearn.model_selection import KFold
m = KFold(n_splits = 5)
#m.get_n_splits(X)
#print(m)
for train, test in m.split(X) :
print('----------------------')
#print('train' , train)
#print('test' , test)
#print(X[test], y[test])
d = DecisionTreeClassifier()
d.fit(X[train], y[train])
print('Train score', d.score(X[train], y[train]))
print('Test score', d.score(X[test], y[test]))
< result >
KNN 은 분류 및 회귀에 사용되는 지도학습 알고리즘으로
새로운 데이터 포인트를 분류하거나 예측할 때, 주변에 가장 가까운 K개의 훈련데이터 포인트를 확인 하여 결정하는 방식
( * Clustering 에는 반지름 반경을 정해주는 option도 존재 )
< code >
from sklearn.neighbors import KNeighborsClassifier
X, y = load_iris(return_X_y = True)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify = y, random_state = 10)
m = KNeighborsClassifier(n_neighbors = 10)
m.fit(X_train, y_train)
print('test score', m.score(X_test, y_test))
< result >
좋은 글 감사합니다. 자주 올게요 :)