지도학습: 머신러닝에서 정답을 맞히기 위해 학습하는 것으로 훈련데이터에 정답이 있다
분류: 주어진 데이터가 어느 카테고리에 속하는지 맞히는 것
정확도 :
사용 모델
Decision Tree : 직관적이면서 간단하지만 데이터 축이 수직이어서 특정 데이터에만 작동한다.
# (1) 필요한 모듈 import
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report
# (2) 데이터 준비
iris = load_iris()
iris_data = iris.data
iris_label = iris.target
# (3) train, test 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(iris_data,
iris_label,
test_size=0.2,
random_state=7)
# (4) 모델 학습 및 예측
decision_tree = DecisionTreeClassifier(random_state=32)
decision_tree.fit(X_train, y_train)
y_pred = decision_tree.predict(X_test)
print(classification_report(y_test, y_pred))
from sklearn.ensemble import RandomForestClassifier
X_train, X_test, y_train, y_test = train_test_split(iris_data,
iris_label,
test_size=0.2,
random_state=21)
random_forest = RandomForestClassifier(random_state=32)
random_forest.fit(X_train, y_train)
y_pred = random_forest.predict(X_test)
print(classification_report(y_test, y_pred))
from sklearn import svm
svm_model = svm.SVC(random_state=32)
print(svm_model._estimator_type)
svm_model.fit(X_train, y_train)
y_pred = svm_model.predict(X_test)
print(classification_report(y_test, y_pred))
from sklearn.linear_model import SGDClassifier
sgd_model = SGDClassifier()
print(sgd_model._estimator_type)
from sklearn.linear_model import LogisticRegression
logistic_model = LogisticRegression()
print(logistic_model._estimator_type)
from sklearn.linear_model import LogisticRegression
logistic_model = LogisticRegression()
print(logistic_model._estimator_type)
logistic_model.fit(X_train, y_train)
y_pred = logistic_model.predict(X_test)
print(classification_report(y_test, y_pred))
라이브러리 : scikit-learn
from sklearn.datasets import load_iris : iris 데이터 로드
keys() : 데이터 정보 확인
-shape(): 데이터의 크기 확인
target(label): 머신러닝 모델이 출력해야하는 정답지, 변수 이름은 주로 y
feature : 머신러닝 모델에 입력되는 문제지, 변수이름은 주로 X
filename : 데이터셋의 전체 이름 보여준다
train_test_split : training dataset와 test dataet으로 데이터 셋 나누기 for 학습
test_size: test dataset의 크기 조절
random_state: train 데이터와 test데이터 분리 시, 적용되는 랜덤성 결정
맞은 데이터만 신경쓴다
가장 필요한 지표지만 정답의 분포에 따라 모델의 성능을 잘 평가하지 못하는 척도가 될 수도 있다
균형한 데이터 , 정확도는 정말 필요한 지표
불균형한 데이터, 정확도는 정말 불필요한 지표