2017-03-18_添加交流的课程注释

This commit is contained in:
jiangzhonglian
2017-03-18 20:55:22 +08:00
parent 096dd4c516
commit fc481871c4
4 changed files with 74 additions and 35 deletions

View File

@@ -1,6 +1,10 @@
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from numpy import *
"""
p(xy)=p(x|y)p(y)=p(y|x)p(x)
p(x|y)=p(y|x)p(x)/p(y)
"""
def loadDataSet():
@@ -8,7 +12,7 @@ def loadDataSet():
创建数据集
:return: 单词列表postingList, 所属类别classVec
"""
postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'],
postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'], #[0,0,1,1,1......]
['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],
['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'],
['stop', 'posting', 'stupid', 'worthless', 'garbage'],
@@ -37,7 +41,7 @@ def setOfWords2Vec(vocabList, inputSet):
:param inputSet: 输入数据集
:return: 匹配列表[0,1,0,1...]
"""
returnVec = [0] * len(vocabList)
returnVec = [0] * len(vocabList)# [0,0......]
for word in inputSet:
if word in vocabList:
returnVec[vocabList.index(word)] = 1
@@ -49,8 +53,8 @@ def setOfWords2Vec(vocabList, inputSet):
def _trainNB0(trainMatrix, trainCategory):
"""
训练数据原版
:param trainMatrix: 文件单词矩阵
:param trainCategory: 文件对应的类别
:param trainMatrix: 文件单词矩阵 [[1,0,1,1,1....],[],[]...]
:param trainCategory: 文件对应的类别[0,1,1,0....]
:return:
"""
# 文件数
@@ -60,21 +64,21 @@ def _trainNB0(trainMatrix, trainCategory):
# 侮辱性文件的出现概率
pAbusive = sum(trainCategory) / float(numTrainDocs)
# 构造单词出现次数列表
p0Num = zeros(numWords)
p1Num = zeros(numWords)
p0Num = zeros(numWords)[0,0,0,.....]
p1Num = zeros(numWords)[0,0,0,.....]
# 整个数据集单词出现总数
p0Denom = 0.0
p1Denom = 0.0
for i in range(numTrainDocs):
if trainCategory[i] == 1:
p1Num += trainMatrix[i]
p1Num += trainMatrix[i] #[0,1,1,....]->[0,1,1,...]
p1Denom += sum(trainMatrix[i])
else:
p0Num += trainMatrix[i]
p0Denom += sum(trainMatrix[i])
# 类别1即侮辱性文档的[P(F1|C1),P(F2|C1),P(F3|C1),P(F4|C1),P(F5|C1)....]列表
p1Vect = p1Num / p1Denom
p1Vect = p1Num / p1Denom# [1,2,3,5]/90->[1/90,...]
# 类别0即正常文档的[P(F1|C0),P(F2|C0),P(F3|C0),P(F4|C0),P(F5|C0)....]列表
p0Vect = p0Num / p0Denom
return p0Vect, p1Vect, pAbusive
@@ -94,7 +98,7 @@ def trainNB0(trainMatrix, trainCategory):
# 侮辱性文件的出现概率
pAbusive = sum(trainCategory) / float(numTrainDocs)
# 构造单词出现次数列表
p0Num = ones(numWords)
p0Num = ones(numWords)#[0,0......]->[1,1,1,1,1.....]
p1Num = ones(numWords)
# 整个数据集单词出现总数2.0根据样本/实际调查结果调整分母的值
@@ -117,7 +121,7 @@ def trainNB0(trainMatrix, trainCategory):
def classifyNB(vec2Classify, p0Vec, p1Vec, pClass1):
"""
使用算法
:param vec2Classify: 待测数据
:param vec2Classify: 待测数据[0,1,1,1,1...]
:param p0Vec: 类别1即侮辱性文档的[log(P(F1|C1)),log(P(F2|C1)),log(P(F3|C1)),log(P(F4|C1)),log(P(F5|C1))....]列表
:param p1Vec: 类别0即正常文档的[log(P(F1|C0)),log(P(F2|C0)),log(P(F3|C0)),log(P(F4|C0)),log(P(F5|C0))....]列表
:param pClass1: 类别1侮辱性文件的出现概率