비지도 학습 알고리즘: K-means 군집화

Bag of Words Meets Bags of Popcorn | Kaggle

튜토리얼 파트 3, 4

첫 번째 시도(average feature vectors)

  • 튜토리얼2의 코드로 벡터의 평균을 구한다.

두 번째 시도(K-means)

  • Word2Vec은 의미가 관련 있는 단어들의 클러스터를 생성하기 때문에 클러스터 내의 단어 유사성을 이용하는 것이다.
  • 이런 식으로 벡터를 그룹화하는 것을 vector quantization(벡터 양자화)라고 한다.
  • 이를 위해서는 K-means와 같은 클러스터링 알고리즘을 사용하여 클러스터라는 단어의 중심을 찾아야 한다.
  • 비지도 학습인 K-means를 통해 클러스터링하고 지도학습인 랜덤포레스트로 리뷰가 추천인지 아닌지를 예측한다.
import pandas as pd
import numpy as np
from gensim.models import Word2Vec
from sklearn.cluster import KMeans
from sklearn.ensemble import RandomForestClassifier

from bs4 import BeautifulSoup
import re
import time

from nltk.corpus import stopwords
import nltk.data

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
model = Word2Vec.load('300features_40minwords_10text')
model

# 숫자로 단어를 표현
# Word2Vec 모델은 어휘의 각 단어에 대한 feature 벡터로 구성되며
# 'syn0'이라는 넘파이 배열로 저장된다.
# syn0의 행 수는 모델 어휘의 단어 수
# 컬럼 수는 2부에서 설정한 피처 벡터의 크기
type(model.wv.syn0)

numpy.ndarray

# syn0의 행 수는 모델 어휘의 단어 수
# 열 수는 2부에서 설정한 특징 벡터의 크기
model.wv.syn0.shape

(11986, 300)

# 개별 단어 벡터 접근
model.wv['flower'].shape

(300,)

model.wv['flower'][:10]

array([ 0.02855109, 0.09972946, 0.04564843, -0.07675261, -0.01836147,
0.03833596, -0.03972314, 0.00658973, 0.02472829, 0.08172724],
dtype=float32)

강의에 등록된 질문이 없습니다. 궁금한 부분이 있으면 주저하지 말고 무엇이든 물어보세요.