작성
·
161
0
featues = iris_df[ :, :-1 ]
labels = iris_df["label"]
for train_index, test_index in skfold. split( features, labels ) :
X_train, y_train = features. iloc[train_index], labels. iloc[train_index]
X_test, y_test = features. iloc[test_index], labels. iloc[test_index]
dt_clf.fit(X_train,y_train)
pred= dt_clf.predict(X_test)
accuracy= np.round(accuracy_score(y_test, pred),4 )
답변 2
0
강사님 안녕하세요!
아래와 같이 코드 작성하여 실행하였습니다.
어제는 cv_accuacy 값이 모두 1이 나왔는데 오늘은 정상작동하는 걸로 보입니다(에디터 문제인지... )
>>> [0.98, 0.92, 0.92]
질문1. KFOLD에서 pandas DataFrame을 인자로 받을 때 아래 코드로 만들어 보았는데 이렇게 수행하여도 무방한지 알고 싶습니다.
질문2. 해당 강의 13:37에 나오는 예제에서 skf.split( )의 인자로 feature 값을 iris_df로 넣어주셨는데, Label 값이 포함된 DataFrame을 넣어도 결과 값에는 차이가 없는지 궁금합니다. iris_df는 위에서 DataFrame을 만들때 Label 값을 포함한걸로 보여서, 순수하게 feature값만 추출하려면 iris_df.iloc[ : , :-1]로 해야하는건 아닌가해서 여쭤봅니다.
감사합니다
import pandas as pd
import numpy as np
import sklearn
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split, KFold, StratifiedKFold
from sklearn.metrics import accuracy_score
iris = load_iris()
dt_clf = DecisionTreeClassifier( random_state=11 )
cv_accuracy = []
# 판다스 데이터로 변환
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
iris_df["label"] = iris.target # iris_df에 label 항목 포함
features_pd = iris_df.iloc[:,:-1]
label_pd = iris_df["label"]
n_iter = 0
skfold = StratifiedKFold(n_splits=3)
for train_index, test_index in skfold.split(features_pd, label_pd):
# split( )으로 반환된 인덱스를 이용하여 학습용, 검증용 테스트 데이터 추출
X_train, y_train = features_pd. iloc[train_index], label_pd. iloc[train_index]
X_test, y_test = features_pd. iloc[test_index], label_pd. iloc[test_index]
dt_clf.fit(X_train, y_train)
pred = dt_clf.predict(X_test)
accuracy = np.round(accuracy_score(y_test, pred),4 )
cv_accuracy.append(accuracy)
print(cv_accuracy)
0
안녕하십니까,
전체 코드를 제가 돌려 볼수 있게 정제해서 다시 올려 주십시요. 그리고 featues = iris_df[ :, :-1 ] 는 수행되지 않는 코드 입니다.
해결이 되었다니 다행입니다.
네, 질문 1,2 모두 그렇게 하셔도 무방합니다.
감사합니다.