KFOLD의 For 구문 작성시 DATAFRAME 적용 질문
강사님 안녕하세요! 아래와 같이 코드 작성하여 실행하였습니다. 어제는 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)