Scala编写分析代码的逻辑实现

方法一:

package ScalaStudy_day02

object WordCount {

  def main(args: Array[String]): Unit = {

    val lines = List("hello python", "hello java", "hello scala", "hello c++ and scala")
    // 统计每个单词的个数
    // 每一行数据进行切分,得到一个一的单词 List(Array(word1,word2))
    val words:List[String] = lines.flatMap(_.split(" "))
    // 切分得到数组 放到list中  flatMap功能压平’
    println(words)
    // list((word,1)) 变换

    val tupleList:List[(String,Int)] = words.map((x:String)=>(x,1))
    println(tupleList)
    // 根据tuple的第一个元素进行分组  groupBy  对相同的第一个元素进行分组
    val grouped:Map[String,List[(String,Int)]] = tupleList.groupBy(_._1)

    /**
      * 第一个单词元祖一样的放到一起
      */
    for (elem <- grouped)
      println(elem)
    // 聚合,相同key的元素进行聚合
    // mapValues拿到键值对里的值 针对键值对类型元素进行操作,仅仅值进行操作  遍历元素
    // 每次遍历拿到的是键值对里的值
    val maped:Map[String,Int] = grouped.mapValues(_.size)
    println(maped)
    // 对结果进行排序

    val list = maped.toList
    println(list)
    // 对list进行排序  通过单词出现次数

//    list.sortWith(_._2>_._2)

    val sorted = list.sortWith((x:(String,Int),y:(String,Int))=>x._2>y._2)

    println(sorted)


  }

}

"D:\Program Files\Java\jdk1.8.0_171\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.1\lib\idea_rt.jar=56852:D:\Program Files\JetBrains\IntelliJ IDEA 2018.2.1\bin" -Dfile.encoding=UTF-8 -classpath "D:\Program Files\Java\jdk1.8.0_171\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\plugin.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_171\jre\lib\rt.jar;F:\IDEAworkpace\ScalaTest\target\classes;C:\Users\LEQ\.ivy2\cache\org.scala-lang\scala-actors\jars\scala-actors-2.11.12.jar;C:\Users\LEQ\.ivy2\cache\org.scala-lang\scala-library\jars\scala-library-2.11.12.jar;C:\Users\LEQ\.ivy2\cache\org.scala-lang\scala-reflect\jars\scala-reflect-2.11.12.jar;C:\Users\LEQ\.ivy2\cache\org.scala-lang\scala-actors\srcs\scala-actors-2.11.12-sources.jar;C:\Users\LEQ\.ivy2\cache\org.scala-lang\scala-library\srcs\scala-library-2.11.12-sources.jar;C:\Users\LEQ\.ivy2\cache\org.scala-lang\scala-reflect\srcs\scala-reflect-2.11.12-sources.jar" ScalaStudy_day02.WordCount
List(hello, python, hello, java, hello, scala, hello, c++, and, scala)
List((hello,1), (python,1), (hello,1), (java,1), (hello,1), (scala,1), (hello,1), (c++,1), (and,1), (scala,1))
(java,List((java,1)))
(c++,List((c++,1)))
(scala,List((scala,1), (scala,1)))
(python,List((python,1)))
(hello,List((hello,1), (hello,1), (hello,1), (hello,1)))
(and,List((and,1)))
Map(java -> 1, c++ -> 1, scala -> 2, python -> 1, hello -> 4, and -> 1)
List((java,1), (c++,1), (scala,2), (python,1), (hello,4), (and,1))
List((hello,4), (scala,2), (java,1), (c++,1), (python,1), (and,1))

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是使用 Scala 实现逻辑回归算法示例代码,用于预测淘宝购物者是否会成为回头客: ```scala import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.mllib.classification.LogisticRegressionWithLBFGS import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics import org.apache.spark.mllib.util.MLUtils object LogisticRegressionDemo { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("LogisticRegressionDemo").setMaster("local") val sc = new SparkContext(conf) // 加载数据 val data = MLUtils.loadLibSVMFile(sc, "data/sample_libsvm_data.txt") // 将数据划分为训练集和测试集 val splits = data.randomSplit(Array(0.7, 0.3)) val (trainingData, testData) = (splits(0), splits(1)) // 训练模型 val model = new LogisticRegressionWithLBFGS().setNumClasses(2).run(trainingData) // 测试模型 val labelAndPreds = testData.map { point => val prediction = model.predict(point.features) (point.label, prediction) } val testErr = labelAndPreds.filter(r => r._1 != r._2).count.toDouble / testData.count() println("Test Error = " + testErr) // 评估模型 val metrics = new BinaryClassificationMetrics(labelAndPreds) val auROC = metrics.areaUnderROC() println("Area under ROC = " + auROC) // 保存模型 model.save(sc, "myModelPath") // 加载模型 val sameModel = LogisticRegressionModel.load(sc, "myModelPath") } } ``` 在这个示例中,我们使用了 Spark MLlib 库中的逻辑回归算法,通过加载样本数据、划分训练集和测试集、训练模型、测试模型以及保存和加载模型等步骤,实现了对淘宝购物者是否会成为回头客进行预测的功能。逻辑回归算法能够通过对样本数据进行学习,建立一个逻辑回归模型,来对未知数据进行预测,从而实现分类的目的。 ### 回答2: Scala 淘宝回头客逻辑回归是一种应用在淘宝电商平台上的机器学习算法。在电商平台中,吸引老顾客再次购买是非常重要的,因为老顾客在购买过程中已经建立了信任和忠诚度,他们的消费贡献较高且成单率较高。 逻辑回归是一种分类模型,可以用于预测一个离散型目标变量。在淘宝回头客预测中,目标变量可以是"回头客"和"非回头客"两类。逻辑回归通过学习历史数据中的特征与目标变量之间的关系,并利用这种关系来进行未来顾客的回头客预测。 Scala 是一种在 JVM 上运行的编程语言,具有强大的函数式编程能力,与Java天然互操作,因此广泛应用于大数据领域的数据处理和机器学习任务。Scala 提供了丰富的函数库来支持大规模数据的处理和分析,使得开发者能够便捷地实现逻辑回归模型。 在实际应用中,通过Scala编写逻辑回归算法可以根据多个特征值(例如,顾客的浏览次数、购买次数、购物篮中商品的种类等)来预测顾客是否为回头客。逻辑回归算法通过最大化似然函数来进行参数估计,并将新顾客的特征输入到模型中,以预测他们成为回头客的概率。 通过Scala淘宝回头客逻辑回归模型的应用,淘宝平台可以更好地了解顾客的行为模式,并根据预测的回头客概率采取相应的营销策略,例如通过个性化推荐、优惠券等方式来提高顾客的忠诚度和购买意愿,从而进一步提升淘宝的用户体验和销售额。该模型的持续改进和优化可以为淘宝平台带来长期的商业价值。 ### 回答3: 在淘宝回头客的预测中,逻辑回归是一种常用的算法。Scala语言提供了强大的函数式编程和面向对象编程的特性,适合用于实现逻辑回归算法。 逻辑回归是一种二分类算法,目的是根据特征变量的线性组合来预测不同类别的概率。在淘宝回头客的应用中,我们可以将各种用户特征作为输入变量,例如用户年龄、性别、购买历史等,以及目标变量,即用户是否成为回头客。逻辑回归模型可以根据这些特征来预测用户成为回头客的概率。 在Scala中,我们可以使用Spark的MLlib库来实现逻辑回归。MLlib提供了一个LogisticRegression类,它可以自动处理特征值的规范化、数据划分等预处理步骤。我们可以使用Spark的DataFrame API来读取和处理数据,然后使用LogisticRegression类创建一个逻辑回归模型。 逻辑回归模型的训练可以使用Spark的分布式计算能力,在大规模数据集上高效运行。训练完成后,我们可以使用模型来预测新样本的回头客概率。通过对用户进行分组,我们可以根据预测概率来识别潜在的回头客。 除了逻辑回归,Scala还提供了其他的机器学习算法和工具,例如决策树、随机森林和梯度提升树等。这些算法可以结合使用,提高模型的准确性和鲁棒性。 总而言之,Scala语言和逻辑回归算法在淘宝回头客预测中的应用是非常合适的。Scala的函数式编程和面向对象编程特性提供了强大的工具,而逻辑回归算法可以帮助我们预测用户成为回头客的概率。通过使用Scala逻辑回归,我们可以构建一个高效、准确的淘宝回头客预测模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值