오늘은 익스 노드로 분류하기를 만들었다.
다행히 처음에 한 가위 바위 보 보다는 훨씬 쉬웠던거 같다. 이게 처음으로 나왔어야 하지 않을까 싶다.
다 적고 싶지만 내용이 너무 많으니 문자분류에 대한 노드를 기입하겠다.
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.datasets import load_digits
digits = load_digits()
print(dir(digits)) **dir()는 객체가 어떤 변수와 메서드를 가지고 있는지 나열함**
digits.keys()
이렇게 digits에 들어있는 매서드를 확인한 후 시작하면 된다.
digits_data = digits.data
print(digits_data.shape)
(1797, 64) 이런 결과값이 나오게 된다.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(digits_data,
digits_label,
test_size=0.2,
random_state=7)
print('X_train 개수: ', len(X_train),', X_test 개수: ', len(X_test))
X_train.shape, y_train.shape
이렇게 하면 X_train 개수: 1437 , X_test 개수: 360
((1437, 64), (1437,)) 이 값이 나온다.
이제 여기서 테스트 값을 구하려고 한다면
X_test.shape, y_test.shape
((360, 64), (360,))이 나오게 된다.
이렇게 쭉쭉쭉 하다가. 분류방법이 나오는데 오늘 배운 분류모델들은
먼저
from sklearn import svm #내장분류 모델
svm_model = svm.SVC()
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 Classifier 모델
sgd_model = SGDClassifier()
print(sgd_model._estimator_type)
sgd_model.fit(X_train, y_train)
y_pred = sgd_model.predict(X_test)
print(classification_report(y_test, y_pred))
from sklearn.linear_model import LogisticRegression #Logistic Regression 모델
logistic_model = LogisticRegression(max_iter=2500)
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))
각각의 accuracy값이 비슷비슷하게 나오고 있는것을 볼 수 있고, 더 많은 분류법이 있겠지만 내가 오늘 배운건 여기까지다.