使用Naive Bayes从个人广告中获取区域倾向
RSS源介绍:https://zhidao.baidu.com/question/2051890587299176627.html
http://www.rssboard.org/rss-profile
这个老铁讲的好:https://www.cnblogs.com/MrLJC/p/3731213.html

多个entry就是entries,所以我通过

这样的方式来枚举每一条RSS源,
枚举后,

书中这样子便是先把总结弄出来

便是这样

wordList中便是这样的

通过下面的函数选出使用频率最高的30个词汇:
def calMostFreq(vocabList,fulltext): #返回使用频率最高的30个词
freqDict = {} #dict
for token in vocabList:
freqDict[token] = fulltext.count(token)
sortedFreq = sorted(freqDict.items(),key=operator.itemgetter(1),reverse=True) #按第二关键字(索引从0开始)
return sortedFreq[:30]

这是剔除了这30个词汇后,词汇表中的词

这词一看就很个性,”cosplay“……
关于sorted(key=lambda),这位小哥写的和细,https://www.cnblogs.com/zle1992/p/6271105.html
全部代码:
from bayes import *
import operator
import feedparser
def calMostFreq(vocabList,fulltext): #返回使用频率最高的30个词
freqDict = {} #dict
for token in vocabList:
freqDict[token] = fulltext.count(token)
sortedFreq = sorted(freqDict.items(),key=operator.itemgetter(1),reverse=True) #按第二关键字(索引从0开始)
return sortedFreq[:30] def localWords(feed1,feed0):
docList = [];classList = [];fulltext = []
minLen = min(len(feed1['entries']),len(feed0['entries']))
# print("adsas")
# print(len(feed1['entries']))
# print(len(feed0['entries']))
#for i in range(minLen):
for i in range(minLen):
# print(feed1['entries'][i])
# print("\n")
wordList = textParse(feed1['entries'][i]['summary'])
#print(wordList)
docList.append(wordList) #没合
fulltext.extend(wordList) #合了
classList.append(1) #类别属性
wordList = textParse(feed0['entries'][i]['summary'])
#print(wordList)
docList.append(wordList) #没合
fulltext.extend(wordList) #合了
classList.append(0) #类别属性
vocabList = createVocabList(docList) #创建不重复词的集合
top30words = calMostFreq(vocabList,fulltext)
#print(top30words)
#print(vocabList)
for mp in top30words:
if mp[0] in vocabList:
vocabList.remove(mp[0])
#下面再用交叉验证的方式,来筛选训练集和测试集
trainingSet = list(range(minLen*2)) #总过的summary个数
print(trainingSet)
testSet = []
for i in range(20):
randIndex = int(random.uniform(0,len(trainingSet)))
testSet.append(randIndex) #保留索引
del(trainingSet[randIndex])
trainMat = [];trainClasses = []
for docIndex in trainingSet: #训练
trainMat.append(bagOfWordsVec(vocabList,docList[docIndex]))
trainClasses.append(classList[docIndex])
p0V,p1V,pSpam = trainNB0(array(trainMat),array(trainClasses))
numOError = 0
for docIndex in testSet:
wordVector = bagOfWordsVec(vocabList,docList[docIndex])
if classifyNB(array(wordVector),p0V,p1V,pSpam)!=classList[docIndex]:
numOError += 1
print("the error text %s" % docList[docIndex])
print("error rate: %f " % (float(numOError)/len(testSet)))
return vocabList,p0V,p1V
def getTopWords(ny,sf):
vocabList,p0V,p1V = localWords(ny,sf)
topNY = [];topSF = []
for i in range(len(p0V)):
if p0V[i] > -6.0: topSF.append((vocabList[i],p0V[i])) #概率大约是0.247%
if p1V[i] > -6.0: topNY.append((vocabList[i],p1V[i]))
sortedSF = sorted(topSF,key=lambda pair:pair[1],reverse = True) #按照第二个参数排序
print("SF*SF*SF*SF*SF*SF")
for item in sortedSF:
print(item)
sortedNY = sorted(topNY,key=lambda pair:pair[1],reverse = True) #按照第二个参数排序
print("NY*NY*NY*NY*NY")
for item in sortedNY:
print(item)
def main():
print(log(e))
ny = feedparser.parse('http://newyork.craigslist.org/stp/index.rss')
sf = feedparser.parse('http://sfbay.craigslist.org/stp/index.rss')
getTopWords(ny,sf)
main()
使用Naive Bayes从个人广告中获取区域倾向的更多相关文章
- 【Machine Learning in Action --4】朴素贝叶斯从个人广告中获取区域倾向
背景:广告商往往想知道关于一个人的一些特定人口统计信息,以便能更好地定向推销广告. 我们将分别从美国的两个城市中选取一些人,通过分析这些人发布的信息,来比较这两个城市的人们在广告用词上是否不同.如果结 ...
- 【机器学习实战】第4章 朴素贝叶斯(Naive Bayes)
第4章 基于概率论的分类方法:朴素贝叶斯 朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本章首先介绍贝叶斯分类算法的基础——贝叶斯定理.最后,我们 ...
- 机器学习算法 --- Naive Bayes classifier
一.引言 在开始算法介绍之前,让我们先来思考一个问题,假设今天你准备出去登山,但起床后发现今天早晨的天气是多云,那么你今天是否应该选择出去呢? 你有最近这一个月的天气情况数据如下,请做出判断. 这个月 ...
- [机器学习] 分类 --- Naive Bayes(朴素贝叶斯)
Naive Bayes-朴素贝叶斯 Bayes' theorem(贝叶斯法则) 在概率论和统计学中,Bayes' theorem(贝叶斯法则)根据事件的先验知识描述事件的概率.贝叶斯法则表达式如下所示 ...
- 【十大算法实现之naive bayes】朴素贝叶斯算法之文本分类算法的理解与实现
关于bayes的基础知识,请参考: 基于朴素贝叶斯分类器的文本聚类算法 (上) http://www.cnblogs.com/phinecos/archive/2008/10/21/1315948.h ...
- 基于Naive Bayes算法的文本分类
理论 什么是朴素贝叶斯算法? 朴素贝叶斯分类器是一种基于贝叶斯定理的弱分类器,所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关.举个例子,如果一种水果其具有红,圆,直径大概3英寸等特征,该水果 ...
- Python机器学习算法 — 朴素贝叶斯算法(Naive Bayes)
朴素贝叶斯算法 -- 简介 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法.最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Baye ...
- 《数据挖掘导论》实验课——实验四、数据挖掘之KNN,Naive Bayes
实验四.数据挖掘之KNN,Naive Bayes 一.实验目的 1. 掌握KNN的原理 2. 掌握Naive Bayes的原理 3. 学会利用KNN与Navie Bayes解决分类问题 二.实验工具 ...
- 机器学习---用python实现朴素贝叶斯算法(Machine Learning Naive Bayes Algorithm Application)
在<机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)>一文中,我们介绍了朴素贝叶斯分类器的原理.现在,让我们来实践一下. 在 ...
随机推荐
- 201621123080《JAVA程序设计》第八周学习总结
作业08-集合 1. 本周学习总结 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 根据代码,首先在源数组里找到下标,若下标符合>=0 ...
- k8s基于canel的网络策略
Kubernetes能够把集群中不同Node节点上的Pod连接起来,并且默认情况下,每个Pod之间是可以相互访问的.但在某些场景中,不同的Pod不应该互通,这个时候就需要进行访问控制.亲测:在kube ...
- 【Python学习之五】高级特性3(切片、迭代、列表生成器、生成器、迭代器)
3.列表生成器(List Comprehensions) 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式.举个例子,要生成list ...
- tab key usage
QA:gvim编辑ascii文本时由于tabkey的default setting 不合适编写Verilog代码(比如一个tab 代表多少空格) ANS: 1.tab 的自动补齐有两种usage自动补 ...
- 双击内容变input框可编辑,失去焦点后修改的数据异步提交
<html> <head> <meta charset="utf8"> <script src="https://cdn.boo ...
- 阿里云全国快递物流查询api接口
口地址: https://market.aliyun.com/products/56928004/cmapi021863.html?spm=5176.730005.productlist.d_cmap ...
- Python模块(二)(序列化)
1. namedtuple 命名元组->类似创建了一个类 from collections import namedtuple p = namedtuple("Point", ...
- Python爬取全站妹子图片,差点硬盘走火了!
在这严寒的冬日,为了点燃我们的热情,今天小编可是给大家带来了偷偷收藏了很久的好东西.大家要注意点哈,我第一次使用的时候,大意导致差点坏了大事哈! 1.所需库安装 2.网站分析 首先打开妹子图的官网(m ...
- golang(go语言)调试和查看gc信息,以及gc信息解析
这里记录一下调试golang gc的方法 启用gc打印: # GODEBUG=gctrace=1 go run ./main.go 程序启动后gc将打印如下信息: gc 65 @16.996s 0%: ...
- Linux学习-灾难复原的考虑
硬件损毁,且具有完整备份的数据时 由于是硬件损毁,所以我们不需要考虑系统软件的不稳定问题,所以可以直接将完整的系统复原回去 即可. 由于软件的问题产生的被攻破资安事件 由于系统的损毁是因为被攻击,此时 ...