반응형
- datesets: scikit learn에서 제공하는 데이터 셋 이용
- DecisionTreeClassifier: decision tree 기계학습모델 이용
In [2]:
from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier
- train test split: 데이터셋을 training과 test로 분리
- StrarifiedKFold: Strarified k fold cross validation 사용
- kfold와는 다르게 fold내 데이터의 클래스 비율을 일정하게 유지
- Cross val score: cross validation 결과의 정확도를 측정하기 위한 모듈
In [3]:
from sklearn.model_selection import train_test_split
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import cross_val_score
분석 결과의 confusion matrix, accuracy score, recall, precision, f-measure, ROC, MSE 측정
In [4]:
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import roc_auc_score
from sklearn.metrics import mean_squared_error
In [5]:
# 데이터 불러오기
data = datasets.load_breast_cancer()
# 속성데이터
X = data.data
# 클래스 데이터
y = data.target
In [7]:
data
Out[7]:
Train, Test set 구성¶
train test split 함수를 사용해 train set과 test set으로 분리 ( test size = 20%)
In [8]:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
In [12]:
len(X_train), 455/569
Out[12]:
Desicion tree 분류 모델 생성¶
In [13]:
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
clf
Out[13]:
In [14]:
y_pred = clf.predict(X_test)
print(confusion_matrix(y_test, y_pred))
Confusion Matrix¶
Accuracy¶
- normalize = False: 올바르게 분류된 데이터 건수 출력
- normalize = Ture: 올바르게 분류된 데이터 비율 출력
In [16]:
print(accuracy_score(y_test, y_pred, normalize=True))
Classification report를 통해 precision, recall 출력¶
In [17]:
print(classification_report(y_test, y_pred))
roc_auc_score 함수를 통해 roc 곡선 아래 면적 출력¶
In [18]:
print(roc_auc_score(y_test, y_pred))
In [19]:
# Mean Squared error 출력
In [20]:
print(mean_squared_error(y_test, y_pred))
In [21]:
skf = StratifiedKFold(n_splits=10)
skf.get_n_splits(X, y)
print(skf)
In [23]:
for train_index, test_index in skf.split(X, y):
print("Train set: {}\nTest set:{}".format(train_index, test_index))
2. 기계학습 모델 성능평가¶
- DecisionTreeClassifier 모델 생성
- Cross_val_score 함수를 통해 X, y 데이터에 대해 10 fold cross validation 진행한 Accuracy 출력
- 10개 accurac 평균 출력
In [24]:
clf = DecisionTreeClassifier()
scores = cross_val_score(clf, X, y, cv=skf)
print("K Fold Cross validation score")
print(scores)
print("Average Accuracy")
print(scores.mean())
In [26]:
skf_sh = StratifiedKFold(n_splits=10, shuffle=True)
skf_sh.get_n_splits(X, y)
print(skf_sh)
In [28]:
for train_index, test_index in skf_sh.split(X, y):
print("Train set: {}\nTest set:{}".format(train_index, test_index))
In [29]:
clf = DecisionTreeClassifier()
scores = cross_val_score(clf, X, y, cv=skf_sh)
print("K Fold Cross validation score")
print(scores)
print("Average Accuracy")
print(scores.mean())
반응형
'Study > 파이썬으로 데이터 주무르기' 카테고리의 다른 글
[Linear regression] 단일선형회귀분석 실습 (0) | 2018.07.09 |
---|---|
[Linear regression] 단일선형회귀분석이란? (0) | 2018.07.09 |
[모델 성능 평가 척도] Residuals / MSE / RMSE (0) | 2018.07.09 |
[모델 성능 평가 척도] Confusion matrix / Learning curve / ROC curve (0) | 2018.07.09 |
[데이터 분석] 데이터 셋의 구성과 검증 방법 (0) | 2018.07.09 |
댓글