from sklearn.datasets import load_iris
.keys() : key값 조회
target_names: 예측하려는 값(class)을 가진 문자열 배열 > 컬럼명같은거 불러옴
target: Label(출력데이터)
data: Feature(입력변수)
feature_names: 입력변수 각 항목의 이름 > 컬럼명같은거 불러옴
DESCR: 데이터셋에 대한 설명 > info같은거
# feature
import pandas as pd
df = pd.DataFrame(iris['data'], columns=iris['feature_names'])
# label붙이기
df['target'] = iris['target']
#label 종류
df['class_name'] = np.where(iris['target']==0, "setosa", np.where(iris['target']==1, "versicolor", "verginica"))
df['class_name2'] = df['target'].apply(lambda x: iris['target_names'][x])
from sklearn.tree import DecisionTreeClassifier(DecisionTreeRegressor)
clf = DecisionTreeClassifier()
clf.fit(X,y)
pred = clf.predict(new_data)
pred
#iris dataset을 제공하는 함수
from sklearn.datasets import load_iris
#데이터셋을 분리하는 함수
from sklearn.model_selection import train_test_split
#모델 클래스
from sklearn.tree import DecisionTreeClassifier
#정확도(몇개 맞았는지)를 계산해주는 평가함수
from sklearn.metrics import accuracy_score, confusion_matrix
import numpy as np
#데이터 로딩 -> 데이터 수집
iris = load_iris()
# feature: X, target(label): y
X, y = iris.data, iris.target
#데이터셋(X,y)을 train용 데이터셋(train set)과 test용 데이터셋(test set)으로 분리
X_train, X_test, y_train, y_test = train_test_split(X, #전체 데이터셋중 Features(input, X)
y, #전체 데이터셋중 target(label, output, y)
test_size=0.2, # test set의 비율을 정의
stratify=y, #분류에서만 지정. 전체 데이터셋의 label의 클래스별 비율과 동일한 비율로 나눠지도록 설정
shuffle = True, #나누기전에 전체 데이터셋을 random하게 섞어준다 (기본=True)
random_state = 0 # random seed값 설정
#stratify > 각각 동일한 비율로 나눠짐 확인
np.unique(y, return_counts=True)
> (array([0, 1, 2]), array([50, 50, 50], dtype=int64))
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
pred = clf.predict(X_test)
pred
accuracy_score(y_test, pred)
result = confusion_matrix(y_test, pred)
result
array([[10, 0, 0],
[ 0, 10, 0],
[ 0, 1, 9]], dtype=int64)
> 막줄 : 1인데 2라고 써서 틀린거 하나/ 2인데 2라고 쓴거 9개