1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.naive_bayes import MultinomialNB from sklearn.metrics import accuracy_score # 데이터 셋 가져오기 from sklearn.datasets import fetch_20newsgroups news_data = fetch_20newsgroups(subset='train') # 주어진 데이터셋을 이용해서 DTM 벡터 만들기 dtm_maker = CountVectorizer() dtm_vector = dtm_maker.fit_transform(news_data.data) # DTM 벡터를 TF-IDF 벡터로 변환하기 tfidf_maker = TfidfTransformer() tfidf_vector = tfidf_maker.fit_transform(dtm_vector) # Naiive Bayes 에 학습시키기 NB_model = MultinomialNB() NB_model.fit(tfidf_vector, news_data.target) # 학습된 모델에 데이터 넣어본 뒤, 예측값 확인하기 test_data = fetch_20newsgroups(subset='test') tmp_dtm = dtm_maker.transform(test_data.data) tmp_tfidf = tfidf_maker.transform(tmp_dtm) predict_data = NB_model.predict(tmp_tfidf) correct = accuracy_score(test_data.target, predict_data) print("accuracy : ", correct) # 임의의 데이터 하나를 직접 실행 후 예측해보기 import random idx = random.randint(0,len(test_data.data)) little_data = test_data.data[idx:idx+1] little_data_dtm = dtm_maker.transform(little_data) little_data_tfidf = tfidf_maker.transform(little_data_dtm) little_data_predict = NB_model.predict(little_data_tfidf) print(little_data) print("prediction : ", little_data_predict) print("real data : ", test_data.target[idx:idx+1]) # 결괏값 라벨을 원문으로 바꾸기 predict_idx = little_data_predict[0] real_idx = test_data.target[idx:idx+1][0] print("prediction 원문 : ", test_data.target_names[predict_idx]) print("real data 원문 : ", test_data.target_names[real_idx]) | cs |
정확도가 그리 높진 않지만, 그래도 나쁘진 않은 수치다.
곧바로 네이버 영화 분류기 실습을 해봐야겠다.
나이브 베이즈 분류 모델이었다
'기계학습 > 자연어 처리 머신러닝' 카테고리의 다른 글
품사 태깅 - N:N 양방향 LSTM 모델 (0) | 2020.02.18 |
---|---|
개체명 인식기 - N:N 양방향 LSTM 모델 (0) | 2020.02.17 |
스팸 메일 분류기 - 실습 이론 (0) | 2020.02.13 |
IMDB 실습 - LSTM 모델 (0) | 2020.02.12 |
LSTM 실습 - 로이터 뉴스 분류기 (0) | 2020.02.12 |