반응형
5.4 로지스틱 회귀분석을 이용한 문서 분류
from sklearn.linear_model import LogisticRegression #sklearn이 제공하는 logistic regression을 사용
#count vector에 대해 regression을 해서 NB와 비교
LR_clf = LogisticRegression() #분류기 선언
LR_clf.fit(X_train_tfidf, y_train) # train data를 이용하여 분류기를 학습
print('Train set score: {:.3f}'.format(LR_clf.score(X_train_tfidf, y_train))) # train data에 대한 예측정확도
print('Test set score: {:.3f}'.format(LR_clf.score(X_test_tfidf, y_test))) # test data에 대한 예측정확도
"""
Train set score: 0.930
Test set score: 0.734
"""
5.4.1 릿지 회귀를 이용한 과적합 방지
- 릿지 회귀: 회귀분석에 정규화를 사용하는 알고리즘
from sklearn.linear_model import RidgeClassifier
ridge_clf = RidgeClassifier() #릿지 분류기 선언
ridge_clf.fit(X_train_tfidf, y_train) #학습
print('Train set score: {:.3f}'.format(ridge_clf.score(X_train_tfidf, y_train)))
print('Test set score: {:.3f}'.format(ridge_clf.score(X_test_tfidf, y_test)))
"""
Train set score: 0.960
Test set score: 0.735
"""
import numpy as np
from sklearn.model_selection import train_test_split
X_train_ridge, X_val_ridge, y_train_ridge, y_val_ridge = train_test_split(
X_train_tfidf, y_train, test_size=0.2, random_state=42)
max_score = 0
max_alpha = 0
for alpha in np.arange(0.1, 10, 0.1): # alpha를 0.1부터 10까지 0.1씩 증가
ridge_clf = RidgeClassifier(alpha=alpha) #릿지 분류기 선언
ridge_clf.fit(X_train_ridge, y_train_ridge) #학습
score = ridge_clf.score(X_val_ridge, y_val_ridge) #검정 데이터셋에 대해 정확도를 측정
if score > max_score: #정확도가 이전의 정확도 최대값보다 크면 최대값을 변경한다.
max_score = score
max_alpha = alpha
print('Max alpha {:.3f} at max validation score {:.3f}'.format(max_alpha, max_score))
## Max alpha 1.600 at max validation score 0.826
ridge_clf = RidgeClassifier(alpha=1.6) #릿지 분류기 선언
ridge_clf.fit(X_train_tfidf, y_train) #학습
print('Train set score: {:.3f}'.format(ridge_clf.score(X_train_tfidf, y_train)))
print('Test set score: {:.3f}'.format(ridge_clf.score(X_test_tfidf, y_test)))
"""
Train set score: 0.947
Test set score: 0.739
"""
top10_features(ridge_clf, tfidf, newsgroups_train.target_names)
"""
alt.atheism: bobby, religion, atheism, atheists, motto, punishment, islam, deletion, islamic, satan
comp.graphics: graphics, computer, 3d, file, image, hi, 42, using, screen, looking
sci.space: space, orbit, nasa, spacecraft, moon, sci, launch, flight, funding, idea
talk.religion.misc: christian, christians, fbi, blood, order, jesus, objective, children, christ, hudson
"""
※ 해당 내용은 <파이썬 텍스트 마이닝 완벽 가이드>의 내용을 토대로 학습하며 정리한 내용입니다.
반응형
'텍스트 마이닝' 카테고리의 다른 글
BOW 기반의 문서 분류 (5) (0) | 2023.07.04 |
---|---|
BOW 기반의 문서 분류 (4) (0) | 2023.07.03 |
BOW 기반의 문서 분류 (2) (0) | 2023.07.01 |
BOW 기반의 문서 분류 (1) (0) | 2023.06.30 |
카운트 기반의 문서 표현 (5) (0) | 2023.06.29 |