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从个人广告中获取区域倾向的更多相关文章

  1. 【Machine Learning in Action --4】朴素贝叶斯从个人广告中获取区域倾向

    背景:广告商往往想知道关于一个人的一些特定人口统计信息,以便能更好地定向推销广告. 我们将分别从美国的两个城市中选取一些人,通过分析这些人发布的信息,来比较这两个城市的人们在广告用词上是否不同.如果结 ...

  2. 【机器学习实战】第4章 朴素贝叶斯(Naive Bayes)

    第4章 基于概率论的分类方法:朴素贝叶斯 朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本章首先介绍贝叶斯分类算法的基础——贝叶斯定理.最后,我们 ...

  3. 机器学习算法 --- Naive Bayes classifier

    一.引言 在开始算法介绍之前,让我们先来思考一个问题,假设今天你准备出去登山,但起床后发现今天早晨的天气是多云,那么你今天是否应该选择出去呢? 你有最近这一个月的天气情况数据如下,请做出判断. 这个月 ...

  4. [机器学习] 分类 --- Naive Bayes(朴素贝叶斯)

    Naive Bayes-朴素贝叶斯 Bayes' theorem(贝叶斯法则) 在概率论和统计学中,Bayes' theorem(贝叶斯法则)根据事件的先验知识描述事件的概率.贝叶斯法则表达式如下所示 ...

  5. 【十大算法实现之naive bayes】朴素贝叶斯算法之文本分类算法的理解与实现

    关于bayes的基础知识,请参考: 基于朴素贝叶斯分类器的文本聚类算法 (上) http://www.cnblogs.com/phinecos/archive/2008/10/21/1315948.h ...

  6. 基于Naive Bayes算法的文本分类

    理论 什么是朴素贝叶斯算法? 朴素贝叶斯分类器是一种基于贝叶斯定理的弱分类器,所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关.举个例子,如果一种水果其具有红,圆,直径大概3英寸等特征,该水果 ...

  7. Python机器学习算法 — 朴素贝叶斯算法(Naive Bayes)

    朴素贝叶斯算法 -- 简介 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法.最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Baye ...

  8. 《数据挖掘导论》实验课——实验四、数据挖掘之KNN,Naive Bayes

    实验四.数据挖掘之KNN,Naive Bayes 一.实验目的 1. 掌握KNN的原理 2. 掌握Naive Bayes的原理 3. 学会利用KNN与Navie Bayes解决分类问题 二.实验工具 ...

  9. 机器学习---用python实现朴素贝叶斯算法(Machine Learning Naive Bayes Algorithm Application)

    在<机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)>一文中,我们介绍了朴素贝叶斯分类器的原理.现在,让我们来实践一下. 在 ...

随机推荐

  1. sphinx中文入门指南 (转自sphinx中文站)

    Sphinx中文入门指南 wuhuiming<blvming在gmail.com>,转载请注明来源和作者 最后修改:2010年1月23日 1.简介 1.1.Sphinx是什么 1.2.Sp ...

  2. day22-python之模块

    1.os import os # print(os.getcwd()) # os.chdir("..") # print(os.getcwd()) # os.makedirs('d ...

  3. ubuntu12.04ppa安装emacs24

    ppa地址:https://launchpad.net/~cassou/+archive/emacs 因为debian版本的emacs-snapshot维护者停止更新,所有ubuntu上的也停止了. ...

  4. WPF使用异步+绑定的方式处理大数据量

    WPF的优势在于界面处理,即使是这样,在面对大数据量的时候也免不了界面假死,同一个线程里处理界面跟大数据量,这是不可避免的.解决办法还是有的,可以使用分页加载,虚拟加载,动态加载,增加条件限制... ...

  5. hdu 1011 Starship Troopers(树形背包)

    Starship Troopers Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  6. clr(Windows 运行时和公共语言运行时)

    Windows 运行时   编译器使用 COM 引用计数机制来确定对象是否不再使用并可以删除. 因为从 Windows 运行时接口派生的对象实际上是 COM 对象,所以这是可行的. 在创建或复制对象时 ...

  7. 【Netty】NIO框架Netty入门

    Netty介绍 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty ...

  8. canvas 动画库 CreateJs 之 EaselJS(上篇)

    本文来自网易云社区 作者:田亚楠 须知 本文主要是根据 createjs 中的 EaselJS 在 github 上的 tutorials 目录下的文章整理而来 (原文链接),同时也包含了很多本人的理 ...

  9. postgres 用户管理

    首次安装完成 pg 数据库后,会默认自带一个用户, 用户名: postgres 密码: postgres 可以使用命令 \du 查看数据库用户 创建新用户: create user dev with ...

  10. Leetcode 446.等差数列划分II 子序列

    等差数列划分II 子序列 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列. 例如,以下数列为等差数列: 1, 3, 5, 7, 9 7, 7, 7, 7 3, -1, ...