ITS's Dev Story

오늘은 머신러닝 알고리즘인 나이브 베이스 확률이론에 대해 공부해 보기로 하였다. 이 방식은 데이터가 각 분류에 속할 확률을 구하고, 이중 가장 높은 확률을 가지는 분류를 선택하는 것이다. 나는 오늘 이 알고리즘을 사용해서 문서를 분류하는 알고리즘을 만들어 보았다.

먼저, 실험을 위해 몇개의 예제 데이터를 생성한다. 그리고 모든 문서에 있는 모든 유일한 단어 목록을 생성한다. 마지막으로 어휘 목록을 만든 다음 단어가 존재하는지 아닌지를 구별하는 함수를 사용할 것이다.

-------------------------------------------------------------------------------------------

* Numpy 기계학습의 모든 문서는 제가 머신러닝을 공부하고, 제 프로젝트에 필요한 알고리즘을 찾기 위해 정리하는 일종의 '요점정리 노트' 입니다. 혹여나 오해 없으시기 바랍니다. (2016.03.14 추가)

-------------------------------------------------------------------------------------------

내가 만들어 본 소스 코드는 아래와 같다.

from numpy import *

def loadDataSet():
    postingList=[['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'],
                 ['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],
                 ['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'],
                 ['stop', 'posting', 'stupid', 'worthless', 'garbage'],
                 ['mr', 'licks', 'ate', 'my', 'steak', 'how', 'to', 'stop', 'him'],
                 ['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']]
    classVec = [0,1,0,1,0,1]
    return postingList,classVec
                 
def createVocabList(dataSet):
    vocabSet = set([])
    for document in dataSet:
        vocabSet = vocabSet | set(document)
    return list(vocabSet)

def setOfWords2Vec(vocabList, inputSet):
    returnVec = [0]*len(vocabList)
    for word in inputSet:
        if word in vocabList:
            returnVec[vocabList.index(word)] = 1
        else: print "the word: %s is not in my Vocabulary!" % word
    return returnVec

직접 확인해 보기 위해 아래와 같이 실습을 해 본다.

오늘은 여기까지 하기로 했다.