머신러닝 분류 테스크
붓꽃 분류
아이디어
-
지도학습: 머신러닝에서 정답을 맞히기 위해 학습하는 것으로 훈련데이터에 정답이 있다
-
분류: 주어진 데이터가 어느 카테고리에 속하는지 맞히는 것
-
정확도 :
-
사용 모델
-
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))
여러 모델
- Randomforest: Decision Tree를 여러 개 모아놓은 것이다.(앙상블기법) , 상위 모델을 예측하는 편향성보단 다양한 모델의 결과를 반영하는 다ㅑ양성에 초첨
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))
- SVM: 기존 데이터를 비선형 매핑을 통해서 고차원으로 변환시킨다. 이를 통해 최적으로 분리하는 선형 분리를 찾습니다. 이로 인해 복잡한 비선형 의사결정 영역을 이용할 수 있어서 매우 정확하고 그로 인해 over fitting되는 경향성이 적어짐
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))
- SGDClassifier : 주로 데이터가 큰 경우 사용이된다.
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)
- Logistic Regression : 회귀를 사용하여 데이터가 속할 범주의 확률을 0~1사이의 값으로 예측하여 그 확률값을 기반으로 범중 속해서 분류하는 지도학습 알고리즘
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))
Code 설명
-
라이브러리 : 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데이터 분리 시, 적용되는 랜덤성 결정
모델 평가
정확도
-
맞은 데이터만 신경쓴다
-
가장 필요한 지표지만 정답의 분포에 따라 모델의 성능을 잘 평가하지 못하는 척도가 될 수도 있다
-
균형한 데이터 , 정확도는 정말 필요한 지표
-
불균형한 데이터, 정확도는 정말 불필요한 지표
Author And Source
이 문제에 관하여(머신러닝 분류 테스크), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@qsdcfd/머신러닝-분류-테스크저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)