舆情监测系统 源码_2017年舆情大事件

舆情监测系统 源码_2017年舆情大事件importbreeze.linalgimportorg.apache.spark.ml.Pipelineimportorg.apache.spark.ml.classification.MultilayerPerceptronClassifierimportorg.apache.spark.ml.evaluation.MulticlassClassificationEva…


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

import breeze.linalg
import org.apache.spark.ml.Pipeline
import org.apache.spark.ml.classification.MultilayerPerceptronClassifier
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator
import org.apache.spark.ml.feature.{IndexToString, StringIndexer, Word2Vec}
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
//http://qkxue.net/info/28517/SparkML
//spark-shell --driver-class-path /home/hadoop/test/mysqljdbc.jar
object WbClassifier {

  def main(args: Array[String]) {


    val VECTOR_SIZE =500

    val conf = new SparkConf().setAppName("WEIBO MLPC Classification")

    val sc = new SparkContext(conf)

    val sqlCtx = new SQLContext(sc)

    val titlesplit1 = sqlCtx.jdbc("jdbc:mysql://192.168.0.37:3306/emotional?user=root&password=123456", "mltest")
    val titlesplit =titlesplit1.toDF().registerTempTable("mltest")
    val value =sqlCtx.sql("SELECT mltest.svalue,mltest.words  FROM mltest")
    //model
    val parsedRDD = sc.textFile("hdfs://192.168.0.211:9000/user/hadoop/emotion/SMSSpamCollection.txt").map(_.split("\t")).map(eachRow => {
      (eachRow(0),eachRow(1).split(" "))
    })
//   val parsedRDD= value.map(p => {
//   val v0 = p.get(0).toString
//   val v1 = p.getString(1).split(",")
//    (v0, v1)
//})

   // val parsedRDD = sc.textFile("hdfs://192.168.0.211:9000/user/hadoop/emotion/20170725.txt").map(line=>(line.split(" ")(3),line.split(" ")(2).split(",")))
//            val parsedRDD = sc.textFile("hdfs://192.168.0.211:9000/user/hadoop/emotion/20170726.txt").map(_.split("\t")).map(eachRow => {
//              (eachRow(0),eachRow(1).split(" "))
//            })

   // http://doc.okbase.net/u013719780/archive/239004.html
    val msgDF = sqlCtx.createDataFrame(parsedRDD).toDF("label", "message")
    // 主成分分析


    //

    val labelIndexer = new StringIndexer().setInputCol("label").setOutputCol("indexedLabel").fit(msgDF)
    val word2Vec = new Word2Vec().setInputCol("message").setOutputCol("features").setVectorSize(VECTOR_SIZE).setMinCount(1)
    val layers = Array[Int](VECTOR_SIZE, 6,5,3)
    val multilayerPerceptronClassifier = new MultilayerPerceptronClassifier().setLayers(layers).setBlockSize(1024).setSeed(1234L).setMaxIter(456).setFeaturesCol("features").setLabelCol("indexedLabel").setPredictionCol("prediction")
    val labelConverter = new IndexToString().setInputCol("prediction").setOutputCol("predictedLabel").setLabels(labelIndexer.labels)
    val Array(trainingData, testData) = msgDF.randomSplit(Array(0.8, 0.2))
    val pipeline = new Pipeline().setStages(Array(labelIndexer, word2Vec, multilayerPerceptronClassifier, labelConverter))
    val model = pipeline.fit(trainingData)
    val predictionResultDF = model.transform(testData)
     predictionResultDF.printSchema
    //predictionResultDF.select("message", "label","features", "predictedLabel").show(30)
    predictionResultDF.select("message","features","label","predictedLabel").show(30)
  //  predictionResultDF.select("message","features","label","predictedLabel").write.save("file:///logs")
    predictionResultDF.select("predictedLabel").distinct().take(5)
    val evaluator = new MulticlassClassificationEvaluator().setLabelCol("indexedLabel").setPredictionCol("prediction").setMetricName("precision")
    val predictionAccuracy = evaluator.evaluate(predictionResultDF)
    println("Testing Accuracy is %2.4f".format(predictionAccuracy * 100) + "%")
    sc.stop

  }

}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191278.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 向量和矩阵的各种范数比较(1范数、2范数、无穷范数等等)

    向量的1范数,2范数,无穷范数,矩阵的1范数,2范数,无穷范数,L0范数,L1范数,L2范数(F范数),L21范数,核范数。。。。、。

    2022年4月6日
  • eclipse的svn使用教程_eclipse svn插件安装

    eclipse的svn使用教程_eclipse svn插件安装  SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信…

    2022年9月25日
  • SVN下载安装及使用教程「建议收藏」

    SVN下载安装及使用教程「建议收藏」SVN简介:为什么要使用SVN?程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本。Subversion是什么?

    2022年7月1日
  • ajax请求状态码是0_常见错误状态码

    ajax请求状态码是0_常见错误状态码会出现这个HTTP请求状态码400,说明这个请求是无效的,并没有进入后台服务器(控制器)里。通常的原因:前端提交的字段名称或者字段类型和后台的实体类不一样,或者前端提交的参数跟后台需要的参数个数不一致,导致无法封装。比如在SprimgMVC的控制器方法中使用了@RequestParam修饰了一个yanggb参数,但是前端在请求的时候并没有带上yanggb参数或yanggb参数为空值,就会出现这种情况;再比如前端提交到后台的数据应该是JSON字符串类型,而前端没有将对象转化为字符串类型,也会返回HTTP请

    2022年10月28日
  • Java优化_解决if嵌套过多

    Java优化_解决if嵌套过多文章目录 一、使用策略模式 二、其他方案 1.分解条件表达式 2.合并重复的条件判断 3.提前判断返回 4.引入断言工具类 5.善用 Optional 6.使用枚举 7.枚举多态 8.类多态 9

    2022年9月15日
  • J2ME开发的一般步骤

    J2ME开发的一般步骤最近一段时间发现身边有一本买了一年多的J2ME的书没看,于是抱起来大概看了一下,我的E72是Symbian系统,支持J2ME,所以做了几个简单的小玩意。在学习J2ME开发的过程中有一些简单的心得和体会,现在写下来备忘,如果有朋友也正在学习J2ME开发,觉得有帮助的话,那是最好不过的事情了。 1.开发环境安装配置 目前开发J2ME应用的环境有多种,有基于NetBean的,不过仍以Eclipse为

    2022年7月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号