一、贝叶斯网络
1、贝叶斯算法:有监督的学习算法,解决的是分类问题,如新闻分类、评论分类、邮件分类、客户是否流失、是否值得投资、信用等级评定等二分类和多分类问题;
2、贝叶斯理论:用客观的新信息更新我们最初关于某个事物的信念后,我们就会得到一个新的、改进了的信念;
3、经典统计学vs贝叶斯统计学:
- 经典统计学:抽样信息 = 总体信息 + 样本信息;
- 贝叶斯统计学:总体信息+样本信息+先验信息;
4、贝叶斯核心思想:选择具有最高概率的决策(计算每种类别,选择最高概率的类别);
5、贝叶斯推断:
二、朴素贝叶斯
1、朴素贝叶斯推断:
2、词向量模型:
2.1、One-hot Representation:
把每个词表示为一个很长的向量。这个向量的维度是词表大小,只有一个维度的值为1,其他元素为0,这个维度就代表了当前的词。
存在问题:不考虑词距离,词频,维度灾难及数据稀疏;
代码:
a、创建词汇表
import numpy as np
import pandas as pd
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] # 类别标签向量,1代表侮辱性词汇,0代表不是
b、词条向量化
# 词条转换为词条向量
def createVocabList(postingList):
vocabSet = set(word for senten in postingList for word in senten) # 集合:去重
return list(vocabSet)
def setOfWords2Vec(vocabList, inputSet):
returnVec = [0] * len(vocabList) # 创建一个其中所含元素都为0的向量
for word in inputSet: # 遍历每个词条
if word in vocabList: # 如果词条存在于词汇表中&#x