인프런 커뮤니티 질문&답변
새로운 데이터 입력
작성
·
232
0
안녕하세요 강의 잘 보고 있습니다.
새로운 행동입력 데이터 혹은 꽃잎 데이터를 추가하고자하면
지금 강의하신 코드에서 데이터만 추가해서 진행하면 되는거가요? 즉 새로운 데이터에 대한 y target값이 정해져 있지 않은 상태에서는 어떻게 진행해야하는지 궁금합니다.
답변 2
1
안녕하십니까,
새로운 행동입력 데이터 혹은 꽃잎 데이터를 추가하고자하면 feature 데이터와 거기에 상응하는 target 데이터를 만들어서 추가해 주시면 됩니다.
numpy의 경우는 concatenate( ) 메소드를 사용하시면 두개의 numpy ndarray를 더해 줍니다.
아래는 예시 코드 입니다. 원본 iris 데이터는 150개의 데이터를 가지는 데 추가로 100개의 feature 데이터와 target 데이터를 추출해서 최종적으로 250개의 feature 데이터와 target 데이터를 만들고 이를 이용하여 학습을 시키는 예제 입니다.
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
import numpy as np
iris = load_iris()
# iris.data는 Iris 데이터 세트에서 피처(feature)만으로 된 데이터를 numpy로 가지고 있습니다.
iris_data = iris.data
# iris.target은 붓꽃 데이터 세트에서 레이블(결정 값) 데이터를 numpy로 가지고 있습니다.
iris_label = iris.target
print('원본 iris feature data shape:', iris_data.shape)
print('원본 iris target data shape:', iris_label.shape)
iris_data_new = iris.data[:100]
iris_label_new = iris_label[:100]
print('신규 추가되는 iris feature data shape:',iris_data_new.shape)
print('신규 추가되는 iris target data shape:',iris_label_new.shape)
iris_data_total = np.concatenate((iris_data, iris_data_new))
iris_label_total = np.concatenate((iris_label, iris_label_new))
print('원본 iris feature에 신규 iris feature 추가된 결과 shape:', iris_data_total.shape)
print('원본 iris target에 신규 iris target 추가된 결과 shape:', iris_label_total.shape)
X_train, X_test, y_train, y_test = train_test_split(iris_data_total, iris_label_total,
test_size=0.2, random_state=11)
print('train_test_split 된 결과 shape:',X_train.shape, X_test.shape)
# DecisionTreeClassifier 객체 생성
dt_clf = DecisionTreeClassifier(random_state=11)
# 학습 수행
dt_clf.fit(X_train, y_train)
감사합니다.
0





