请问SPARK mllib使用ALS做CF训练,如何魅族怎样确定使用版本存储模型parquet文件的数量?

使用Spark MLlib进行情感分析
时间: 12:29:23
&&&& 阅读:670
&&&& 评论:
&&&& 收藏:1
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
使用Spark MLlib进行情感分析
使用Spark MLlib进行情感分析
一、实验说明
在当今这个互联网时代,人们对于各种事情的舆论观点都散布在各种社交网络平台或新闻提要中。我们可以在移动设备或是个人PC上轻松地发布自己的观点。对于这种网上海量分布地数据,我们可以利用文本分析来挖掘各种观点。如下图中,CognoviLabs利用Twitter上人们发布对于美国大选两个候选人的推特,进行情感分析的结果。从这张图我们也可以直观地感受到民意所向(此图发表日期为10月10日,早于今年美国大选的日子)。
图片来源:CognoviLabs / Twitris
本次课程,我们将利用推特上的数据结合Spark MLlib实现人们对美国这两位总统的情感分析,查看在美国不同地方的网民们对于他们的看法如何。
1.1 知识点
Twitter数据
Spark MLlib情感分析
Python 地图可视化工具Basemap
1.2 实验流程
获取twitter流数据
tweet数据进行情感分析
分析结果可视化
二、Twitter流数据
为开发者提供了可用于获得推特上数据的开发者接口。大家可根据中的操作获取Twitter中有关Trump和Hillary的推特数据。
由于对Twitter的操作需要FQ,为方便大家进行后续实验操作,我们已将数据保存至tweets.json,&donald.json及hillary.json中,json&文件地址将在后续实验操作时给出。tweets.json包括和川普及希拉里有关的推特,而donald.json和hillary.json仅包括其文件名代表的候选人有关推特。
使用Tweepy接口获得的推特中包含很多数据,但由于我们只关心其发表内容的情感属性值,因此我们仅保存了其中的推特内容,及发表推特用户所在地。 我们所使用的Twitter数据内容:
数据名数据描述
该twitter的情感属性值(0:积极,1:无感,2:消极)
user_localtion
用户所在地区
其中polarity的内容由python获得,这里我们对textblob返回的polarity进行了特殊处理,设置polarity&0时为积极情感(polarity=0),polarity=0时为无感(polarity=1),polarity&0时为消极情绪(polarity=2)
三、Spark MLLib进行情感分析
3.1环境配置
Apach Spark的Python接口pyspark安装:
进入目录/usr/bin/spark-2.0.2/conf中设置配置文件spark-env.sh。
$ cd /usr/bin/spark-2.0.2/conf
安装python相关的包:
wget http://labfile./courses/722/numpy-1.11.3-cp27-cp27mu-manylinux1_x86_64.whl
wget http://labfile./courses/722/pyparsing-2.1.10-py2.py3-none-any.whl
wget http://labfile./courses/722/pytz-2016.10-py2.py3-none-any.whl
wget http://labfile./courses/722/cycler-0.10.0-py2.py3-none-any.whl
wget http://labfile./courses/722/python_dateutil-2.6.0-py2.py3-none-any.whl
wget http://labfile./courses/722/matplotlib-1.5.3-cp27-cp27mu-manylinux1_x86_64.whl
sudo pip install numpy-1.11.3-cp27-cp27mu-manylinux1_x86_64.whl
sudo pip install pyparsing-2.1.10-py2.py3-none-any.whl
sudo pip install pytz-2016.10-py2.py3-none-any.whl
sudo pip install cycler-0.10.0-py2.py3-none-any.whl
sudo pip install python_dateutil-2.6.0-py2.py3-none-any.whl
sudo pip install matplotlib-1.5.3-cp27-cp27mu-manylinux1_x86_64.whl
可视化分析结果使用的是python的地图可视化第三方包Basemap,basemap是Python中一个可用于地理信息可视化的包,安装basemap过程如下:
$ wget http://labfile./courses/722/basemap-1.0.7.tar.gz
$ tar zxvf basemap-1.0.7.tar.gz
$ cd basemap-1.0.7
$ cd geos-3.3.3
$ ./configure
$ sudo make install
上述过程需等待一段比较漫长的时间,这期间可以先浏览后续实验步骤。当执行完毕后返回目录basemap-1.0.7并安装basemap
进入examples目录运行程序simplestest.py查看是否安装成功
$ cd examples
$ python simpletest.py
3.2 实验操作
进入Code目录中并创建&shiyanlou_cs722&目录,通过以下命令获得tweets.json,&donald.json及hillary.json文件。
$ wget http://labfile./courses/722/tweets.json
$ wget http://labfile./courses/722/donald.json
$ wget http://labfile./courses/722/hillary.json
创建sparkSA.py文件开始我们的实验。
注意: 本次实验操作的所有文件及代码都应存放在同一个目录——shiyanlou_cs722下。
导入相关模块
使用Spark前的准备,因为实验楼有spark相关课程,这里就不做过多介绍
conf = SparkConf().setAppName("sentiment_analysis")
sc = SparkContext(conf=conf)
sc.setLogLevel("WARN")
sqlContext = SQLContext(sc)
进行情感分析的处理步骤如下图所示:
实验中我们利用获得的&tweets.json&作为情感分析分类器模型的训练集,这里测试集是用hillary.json,想要分析川普的,只需将测试集对应换成donald.json即可
据图可知,我们首先将每一条的推特数据分词,由于这里分析的是英文的tweet推特内容,因此只需将每个单词分开即可(与中文情感分析的不同),并定义stop_words 停用词一些无关情感分析的词
Spark MLlib中提供的机器学习模型处理的是向量形式的数据,因此我们需将文本转换为向量形式,为了节省时间,这里我们利用Spark提供的Word2Vec功能结合其提供的text8文件中的一部分单词进行了word2vec模型的预训练,并将模型保存至word2vecM_simple文件夹中,因此本次实验中将tweets转换为向量时直接调用此模型即可,从以下地址中获得此离线模型并解压:
wget http://labfile./courses/722/word2vecM_simple.zip
unzip word2vecM_simple.zip
由于实验楼的在线环境限制,同学们可线下使用text8自行训练词向量转换模型,或线上搜索利用tweets进行分词训练的word2vec模型
定义分词文本转换为向量的函数
def doc2vec(document):
读入预先训练好的文本向量化模型word2vecM
lookup = sqlContext.read.parquet("/home/shiyanlou/word2vecM_simple/data").alias("lookup")
lookup.printSchema()
lookup_bd = sc.broadcast(lookup.rdd.collectAsMap())
情感分析相关的函数定义好后,我们便可从json文件中读入数据,创建RDD对象,利用spark mllib的分类器进行情感分析:
在编写完代码后,在shiyanlou_cs722目录下,通过spark-submit命令提交程序运行:
$ /usr/bin/spark-2.0.2/bin/spark-submit --master=local sparkSA.py
--master=local sparkSA.py
在下一节的可视化的函数编写后,也是通过此命令提交运行程序。
训练得到的随机森林模型:
四、分析结果可视化
基于上一小节的RandomForest随机森林的训练结果,我们利用该分类器对推特上关于hillary的情感分析结果,结合basemap将其展示到美国的48个州(除去阿拉斯加及夏威夷)上,观察这48个州对于&hillary&的看法。
我们将在函数res_visulization中绘制可视化结果,首先我们需要定义该函数。
导入作图相关模块。
from mpl_toolkits.basemap import Basemap
from mpl_toolkits.basemap import cm
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib.colors import rgb2hex
from matplotlib.patches import Polygon
我们本次通过美国的shapefile结合basemap进行绘图,因此需要以下三个文件(这个三个文件需放置在目录shiyanlou_cs722下):
wget http://labfile./courses/722/st99_d00.shp
wget http://labfile./courses/722/st99_d00.dbf
wget http://labfile./courses/722/st99_d00.shx
函数res_visulization可视化情感分析结果
在可视化结果中加上各个州的缩写,这里的我们只给出了部分州的缩写,有些美国较小的东部城市没有具体列出。
有关美国的各个州的经纬度可在中查阅。
函数定义完成后,在 sparkSA.py 的最后一行调用该函数以执行它。在代码最后加上此行:
res_visulization(predictions.collect())
保存该文件后退出编辑,在&Shiyanlou_cs722&目录下, 通过spark-submit命令提交所编写好的Python脚本SparkSA.py执行程序:
程序运行结束,我们可看到每个州的原始数据及模型预测的情感属性值:&
本次课程我们介绍了twitter api一个Twitter官方提供可用于获得推特数据的接口,并且基于此接口获得了推特上的&流式&数据,在实际应用中可利用spark streaming获得这些流式数据进行实时处理并显现当下网友的情感状态。而本次实验我们是利用spark mllib的随机森林模型进行twitter的情感分析,并且利用basemap进行可视化,通过可视化结果,我们可以直观的感受到美国今年曾经的候选总统在美国各个州的受欢迎程度。基于此课程,同学们也可以利用twitter或者微博提供的开发者接口获取网络上的数据,对不同方面(房价、物价、交通之类)的情感进行分析。
情感分析最终效果图(有时可视化效果未显现程序就已经结束,此时只需重复提交即可):
本次课程的所有源码可通过以下命令获得:
wget http://labfile./courses/722/sparkSA.py
六、课后习题
在使用spark mllib进行情感分析的例子中,很多都是使用朴素贝叶斯模型,这里我们使用的是随机森林模型,在此请同学们使用spark mllib的朴素贝叶斯模型进行代码改写,并输出情感分析结果。
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&国之画&&&& &&&&chrome插件&&
版权所有 京ICP备号-2
迷上了代码!*邮箱不能为空
*密码不能为空
*验证码不能为空
*昵称不能为空
*邮箱不能为空
点击获取验证码
*验证码不能为空
*密码不能为空
*密码不能为空
使用Spark MLlib训练和提供自然语言处理模型
粤ICP备号&&(C)2015版权所有唉,最近有点忙,没来及更新博客和主题,大家见谅~~(●'?'●)如果本站的内容帮助到了您,请帮忙点击页面上的广告,万分感谢!
> 大数据Spark企业级实战版【学习笔记】—–交互式SQL处理框架Spark SQL1.3.3 交互式SQL处理框架SparkSQLSpark SQL的四个特点如下:其一,能在Scala代码里写SQL,支持简单的SQL语法检查,能把RDD指为Table存储起来。此外支持部分SQL语法的DSL。对SQL的支持主要依赖Catalyst这个新的查询优化框架,在把SQL解析成逻辑执行计划之后,利用Catalyst包里的一些类和接口,执行一些简单的执行计划优化,最后变成RDD的计算。其二,支持Parquet文件的读/写,且保留Schem。Parquet是一个列式存储格式的文件系统,使用Parquet进行文件读/写可以极大降低对CPU和磁盘I/O的消耗。其三,支持直接多JSON格式数据的操作。JSON是一种流行的数据存储和传输格式,SPark SQL提供的对JSON的操作丰富了Spark SQL的应用场景和数据来源。其四,能在Scala代码里访问Hive元数据,能执行Hive语句,并且把结果取回作为RDD使用。Spark SQL作为Spark生态的一员继续发展,而不再受限于Hive,只是兼容Hive;而Hive on Spark是一个Hive的发展计划,该计划将Spark作为Hive的底层引擎之一,也就是,Hive将不再受限于一个引擎,可以采用map-reduce、Tez、Spark等引擎。1.3.4 机器学习框架(Spark MLlib)&&&&&& MLlib是Spark对常用的机器学习算法的实现库,同时包括相关的测试和数据生成器。MLlib目前支持4种常见的机器学习问题:二元分类、回归、聚类以及协同过滤,同时也包括一个底层的梯度下降优化基础算法。1.&&&&&&&依赖&&&&&& MLlib将会调用jblas线性代数库,这库依赖于原生的Fortran程序。2.&&&&&&&二元分类&&&&&& 二元分类是一个监督学习问题。MLlib目前支持两个适用于二元分类的标准模型家族:线性支持向量机(SVMs)和逻辑回归,同时也包括分别适用于这两个模型家族的L1和L2正则化变体。二元分类算法的输入值是一个正则参数(regParam)和多个与梯度下降相关的参数(stepSize,numIterations,miniBatchFraction)。&&&&&& 目前可用的二元分类算法:SVMWithSGD、LogisticRegressionWithSGD。3.&&&&&&&线性回归&&&&&& MLlib支持线性回归与与之相关的L1(lasso)和L2(ridge)正则化的变体。MLlib中的回归算法业利用了底层的梯度下降基础算法,输入参数与二元分类算法一致。目前可用的线性回归算法:LineearRegressionWithSGD、RidgeRegressionWithSGD、LassoWithSGD。4.&&&&&&&聚类&&&&&& 聚类通常被用于探索性的分析,或者作为层次化监督学习管道网的一个组件(其中每一个类簇都会用于训练不同的分类器或者回归模型)。MLlib目前已经支持作为最被广泛使用的聚类算法之一的k-means聚类算法,根据事先定义的类簇个数,这个算法能对数据进行聚类。MLlib的实现中包含一个k-means++方法的并行化变体kmeans||。MLlib里面的实现包含如下参数:?& k是所需的类簇的个数;?& maxIterations是最大的迭代次数;?& initializationMode这个参数决定了是用随机初始化还是通过k-means||初始化;?& runs是跑k-means算法的次数(k-mean算法不能保证能找出最优解,如果在给定的数据集上运行多次,算法将会返回最佳的结果);?& initializiationSteps决定了k-means||算法的步数;?& epsilon决定了判断k-means是否收敛的距离阀值。5.&&&&&&&协同过滤&&&&&& 协同过滤常被应用于推荐系统。这一技术旨在补充用户–商品关联矩阵中所缺失的部分。MLlib当前支持基于模型的协同过滤,其中用户和商品通过一组隐语义因子进行表达,并且这些因子也用于预测缺失的元素。为此,实现交替最小二乘法(ALS)来学习这些隐性语义因子。在MLlib中的实现有如下参数:n& numBlocks是用于并行化计算的分块个数(设置为-1为自动配置);n& rank是模型中隐语义因子的个数;n& iterations是迭代的次数;n& lambda是ALS的正则化参数;n& implicitPrefs决定了是用显性反馈ALS的版本还是用隐性反馈数据集的版本;n& alpha是一个针对于隐性反馈ALS版本的参数,这个参数决定了偏好行为强度的基准。隐性反馈与显性反馈&&&&&& 基于矩阵分解的协同过滤的标准方法一般将用户商品矩阵中的元素作为用户对商品的显性偏好。&&&&&& 在现实生活的很多场景中,常常只能接触到隐性的反馈。本质上,这个方法将数据作为二元偏好值和偏好强度的一个结合,而不是对评分、矩阵直接进行建模。目前可用的协同过滤的算法:ALS。6.&&&&&&&梯度下降基础算法&&&&&& 梯度下降(及其随机的变种)是非常适用于大型分布式计算的一阶优化方案。梯度下降旨在通过向一个函数当前点(当前的参数值)的负梯度方向移动的方式迭代地找到这个函数的本地最优解。MLlib以梯度下降作为一个底层的基础算法,梯度下降算法有如下参数:l& gradient这个类是用来计算要被优化的函数的随机梯度。MLlib包含常见损失函数(hinge、logistic、least-squares)的梯度类。梯度类将训练样本、标签,以及当前的参数值作为输入值。l& updater是在梯度下降的每一次迭代中更新权重的类。MLlib包含适用于无正则项、L1正则项和L2正则项3种情况下的类。l& stepSize是一个表示梯度下降初始步长的数值。MLlib中所有的更新器第t步的步长等于stepSize/sqrt(t)。l& numIterations表示迭代的次数。l& regParam是在使用L1、L2正则项时的正则化参数。l& miniBatchFraction是每一次迭代中用来计算梯度的数据百分比。目前可用的梯度下降算法:GradientDescent。本文由【】发表在 本文固定链接: 欢迎关注本站官方公众号,每日都有干货分享!
赏分享 (0)相关文章推荐
承接上文:
http://blog.csdn.net/wangqi880/article/details/
对了,每台机子的防火墙要关闭哈,不然spark集群启动不起来
前一次,...
主要介绍了一下几点:
1矩阵分解的几种算法
2spark使用矩阵分解的几种方式,1ml 包中使用,2mllib包中的使用,其实有不调用包自己写的案列(可以去看看哈,就在example目录)
更多代码请见:/xubo245/SparkLearning1解释
使用隐式转换的来进行推荐,感觉有问题2.代码:package apache.spark.mlli...
ALS(alternating least squares ):交替最小二乘法
------------------------------------------------------------...
1、Spark构建推荐引擎之一:基于物品的协同过滤推荐
目前SparkMLlib支持的推荐算法只有alternating least squares (ALS)这一种,相比较Mahout...
协同过滤推荐算法,是最经典、最常用的推荐算法。通过分析用户兴趣,在用户群中找到指定用户的相似用户,综合这些相似用户对某一信息的评价,形成系统关于该指定用户对此信息的喜好程度预测。
要实现协同过滤,需...
又好一阵子没有写文章了,阿弥陀佛...最近项目中要做理财推荐,所以,回过头来回顾一下协同过滤算法在推荐系统中的应用。
说到推荐系统,大家可能立马会想到协同过滤算法。本文基于Spark MLli...
上接基于Spark MLlib平台和基于模型的协同过滤算法的电影推荐系统(一)
设置不打印一堆INFO信息(减少打印量 保证Shell页面清晰干净)
sc.setLogL...
说到推荐系统,大家可能立马会想到协同过滤算法。本文基于Spark MLlib平台实现一个向用户推荐电影的简单应用。其中,主要包括三部分内容:
协同过滤算法概述
基于模型的协同过滤应用--...
spark第四次作业
使用Spark ALS explicit训练,得到模型,并进行评价;
1. 代码(只需要保留评价代码,建模代码,数据分割代码即可);
2. 相关图表(建...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)一 二 三 四 五 六 日
236111213141516171819202122232425262728293031
文章总数:182
页面总数:1
分类总数:41
标签总数:0
评论总数:24
浏览总数:91169
您好,欢迎到访网站!&&

我要回帖

更多关于 工信部确定5g使用频段 的文章

 

随机推荐