[Machine Learning] 가짜 뉴스 분류 모델 - 데이터 전처리의 내용에 이어서 머신러닝 모델을 만들어 보겠습니다.
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
학습 데이터와 검증 데이터로 나눌 train_test_split, naive bayes 모델인 MultinomialNB, clean_message에 있는 단어들의 특징 추출을 위해 문자열 데이터를 수치 벡터로 변환시켜주는 CountVectorizer를 import 해줍니다.
X = result_df['clean_message']
y = result_df['label']
종속변수 label을 y에 독립변수 cleam_message를 x에 저장해준다.
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.7, random_state = 1234)
전체 데이터에서 테스트 사이즈를 70%로 설정하고, random_state를 1234로 설정해준다.
X_train.shape, X_test.shape, y_train.shape, y_test.shape
((31428,), (13470,), (31428,), (13470,))
나누어진 데이터의 크기를 확인해본다.
vectorizer = CountVectorizer()
단어들의 출현 빈도를 체크하기 위한 vectorizer를 생성해준다.
X_train_docs = vectorizer.fit_transform(X_train)
X_test_docs = vectorizer.transform(X_test)
print(X_train_docs.shape, X_test_docs.shape)
(31428, 207868) (13470, 207868)
X_train과 X_test의 데이터를 vectorizer를 통해 수치 벡터로 만들어 X_train_docs와 X_test_docs에 넣어준다.
X_train_docs.toarray()
X_test_docs.toarray()
array([[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]], dtype=int64)
수치 벡터로 만들어진 데이터를 넘파이 배열로 바꿔준다.
naive_bayes = MultinomialNB(alpha=1, fit_prior=True)
naive_bayes.fit(X_train_docs, y_train)
MultinomialNB(alpha=1)
MultinomialNB 모델을 alpha=1, fit_prior=True로 설정하여 navive_bayer에 저장한다. 이때 모델의 복잡도를 조정하는 alpha값은 작으면 작을수록 모델의 성능이 향상된다.
y_pred = naive_bayes.predict(X_test_docs)
y_pred
array([1, 1, 1, ..., 0, 0, 0], dtype=int64)
predict를 사용하면 0과 1만을 반환하여 0은 가짜 뉴스 1은 진짜 뉴스가 되게 된다.
y_pred_proba = naive_bayes.predict_proba(X_test_docs)
y_pred_proba
array([[1.44370683e-084, 1.00000000e+000],
[6.84226586e-004, 9.99315773e-001],
[1.54851509e-016, 1.00000000e+000],
...,
[1.00000000e+000, 6.05089154e-119],
[1.00000000e+000, 3.01655703e-019],
[1.00000000e+000, 1.15350827e-084]])
predict_proba를 사용하면 0일 가능성과 1일 가능성을 둘 다 출력해준다.
이렇게 만든 머신러닝 모델은 약 98.13%의 정확도를 보여준다.
'Artificial Intelligence > Machine Learning' 카테고리의 다른 글
[MachineLearning] 머신러닝과 프로그래밍의 차이 (0) | 2021.03.24 |
---|---|
[Machine Learning] 가짜 뉴스 분류 모델 - 파라미터 튜닝 (0) | 2021.03.08 |
[Machine Learning] 가짜 뉴스 분류 모델 - 데이터 전처리 (0) | 2021.03.04 |
[Machine Learning] 가짜 뉴스 분류 모델 - 데이터 수집 및 확인 (0) | 2021.03.03 |
[Machine Learning] 영화 관객수 예측 모델 (5) (0) | 2021.02.24 |