【基于IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建逻辑回归鸢尾花分类预测模型】

这篇具有很好参考价值的文章主要介绍了【基于IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建逻辑回归鸢尾花分类预测模型】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

逻辑回归进行鸢尾花分类的案例

背景说明:

基于IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建逻辑回归鸢尾花分类预测模型,这是一个分类模型案例,通过该案例,可以快速了解Spark MLlib分类预测模型的使用方法。

依赖

ThisBuild / version := "0.1.0-SNAPSHOT"  
  
ThisBuild / scalaVersion := "2.13.11"  
  
lazy val root = (project in file("."))  
  .settings(  
    name := "SparkLearning",  
    idePackagePrefix := Some("cn.lh.spark"),  
    libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.4.1",  
    libraryDependencies += "org.apache.spark" %% "spark-core" % "3.4.1",  
    libraryDependencies += "org.apache.hadoop" % "hadoop-auth" % "3.3.6",     libraryDependencies += "org.apache.spark" %% "spark-streaming" % "3.4.1",  
    libraryDependencies += "org.apache.spark" %% "spark-streaming-kafka-0-10" % "3.4.1",  
    libraryDependencies += "org.apache.spark" %% "spark-mllib" % "3.4.1",  
    libraryDependencies += "mysql" % "mysql-connector-java" % "8.0.30"  
)

代码如下:

package cn.lh.spark  
  
import org.apache.spark.ml.{Pipeline, PipelineModel}  
import org.apache.spark.ml.classification.{LogisticRegression, LogisticRegressionModel}  
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator  
import org.apache.spark.ml.feature.{IndexToString, StringIndexer, StringIndexerModel, VectorIndexer, VectorIndexerModel}  
import org.apache.spark.ml.linalg.{Vectors,Vector}  
import org.apache.spark.rdd.RDD  
import org.apache.spark.sql.{DataFrame, Row, SparkSession}  
  
case class Iris(features: org.apache.spark.ml.linalg.Vector, label: String)  
  
/**  
 * 二项逻辑斯蒂回归来解决二分类问题  
 */  
object MLlibLogisticRegression {  
  
  def main(args: Array[String]): Unit = {  
  
    val spark: SparkSession = SparkSession.builder().master("local[2]")  
      .appName("Spark MLlib Demo List").getOrCreate()  
  
    val irisRDD: RDD[Iris] = spark.sparkContext.textFile("F:\\niit\\2023\\2023_2\\Spark\\codes\\data\\iris.txt")  
      .map(_.split(",")).map(p =>  
      Iris(Vectors.dense(p(0).toDouble, p(1).toDouble, p(2).toDouble, p(3).toDouble), p(4).toString()))  
  
    import spark.implicits._  
    val data: DataFrame = irisRDD.toDF()  
    data.show()  
  
    data.createOrReplaceTempView("iris")  
  
    val df: DataFrame = spark.sql("select * from iris where label != 'Iris-setosa'")  
    df.map(t => t(1)+":"+t(0)).collect().foreach(println)  
  
    //    构建ML的pipeline  
    val labelIndex: StringIndexerModel = new StringIndexer().setInputCol("label")  
      .setOutputCol("indexedLabel").fit(df)  
    val featureIndexer: VectorIndexerModel = new VectorIndexer().setInputCol("features")  
      .setOutputCol("indexedFeatures").fit(df)  
  
//    划分数据集  
    val Array(trainingData, testData) = df.randomSplit(Array(0.7, 0.3))  
  
    //    设置逻辑回归模型参数  
    val lr: LogisticRegression = new LogisticRegression().setLabelCol("indexedLabel")  
      .setFeaturesCol("indexedFeatures").setMaxIter(10).setRegParam(0.3).setElasticNetParam(0.8)  
  
    //    设置一个labelConverter,目的是把预测的类别重新转化成字符型的  
    val labelConverter: IndexToString = new IndexToString().setInputCol("prediction")  
      .setOutputCol("predictedLabel").setLabels(labelIndex.labels)  
  
    //    构建pipeline,设置stage,然后调用fit()来训练模型  
    val lrPipeline: Pipeline = new Pipeline().setStages(Array(labelIndex, featureIndexer, lr, labelConverter))  
    val lrmodle: PipelineModel = lrPipeline.fit(trainingData)  
    val lrPredictions: DataFrame = lrmodle.transform(testData)  
  
    lrPredictions.select("predictedLabel", "label", "features", "probability")  
        .collect().foreach { case Row(predictedLabel: String, label: String, features: Vector, prob: Vector) =>  
      println(s"($label, $features) --> prob=$prob, predicted Label=$predictedLabel")}  
  
    //    模型评估  
    val evaluator: MulticlassClassificationEvaluator = new MulticlassClassificationEvaluator()  
          .setLabelCol("indexedLabel").setPredictionCol("prediction")  
    val lrAccuracy: Double = evaluator.evaluate(lrPredictions)  
    println("Test Error = " + (1.0 - lrAccuracy))  
  
    val lrmodel2: LogisticRegressionModel = lrmodle.stages(2).asInstanceOf[LogisticRegressionModel]  
    println("Coefficients: " + lrmodel2.coefficients+"Intercept: " +  
      lrmodel2.intercept+"numClasses: "+lrmodel2.numClasses+"numFeatures: "+lrmodel2.numFeatures)  
  
  
    spark.stop()  
  }  
  
}

运行结果如下:
【基于IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建逻辑回归鸢尾花分类预测模型】,intellij-idea,spark,spark-ml文章来源地址https://www.toymoban.com/news/detail-633054.html

到了这里,关于【基于IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建逻辑回归鸢尾花分类预测模型】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习之线性回归与逻辑回归【完整房价预测和鸢尾花分类代码解释】

    目录 前言 一、什么是线性回归 二、什么是逻辑回归 三、基于Python 和 Scikit-learn 库实现线性回归 示例代码:  使用线性回归来预测房价: 四、基于Python 和 Scikit-learn 库实现逻辑回归 五、总结  线性回归的优缺点总结: 逻辑回归(Logistic Regression)是一种常用的分类算法,具有

    2024年04月13日
    浏览(44)
  • 机器学习(六):回归分析——鸢尾花多变量回归、逻辑回归三分类只用numpy,sigmoid、实现RANSAC 线性拟合

    [ 实验1 回归分析] 一、 预备知识 使用梯度下降法求解多变量回归问题 数据集 Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、

    2023年04月13日
    浏览(82)
  • 基于逻辑回归构建肿瘤预测模型

    乳腺癌数据集包括569个样本,每个样本有30个特征值(病灶特征数据),每个样本都属于恶性(0)或良性(1)两个类别之一,要求使用逻辑回归(LR)算法建立预测模型,实现准确预测新的病灶数据的类型(恶性或良性)。 样本特征数据为病灶影像的测量数据,部分特征如下

    2023年04月14日
    浏览(39)
  • Spark MLlib与深度学习:构建新型计算机视觉应用

    作者:禅与计算机程序设计艺术 随着大数据、云计算和移动互联网的普及,人工智能(AI)正在成为继“机器学习”之后又一个重要方向。作为一个专门研究人类智能的科学领域,人工智能主要包括机器学习、深度学习、模式识别等多个分支领域。而近年来随着数据处理和存

    2024年02月12日
    浏览(34)
  • PyTorch深度学习实战 | 基于线性回归、决策树和SVM进行鸢尾花分类

    鸢尾花数据集是机器学习领域非常经典的一个分类任务数据集。它的英文名称为Iris Data Set,使用sklearn库可以直接下载并导入该数据集。数据集总共包含150行数据,每一行数据由4个特征值及一个标签组成。标签为三种不同类别的鸢尾花,分别为:Iris Setosa,Iris Versicolour,Iri

    2023年04月10日
    浏览(43)
  • Spark-机器学习(4)回归学习之逻辑回归

    在之前的文章中,我们来学习我们回归中的线性回归,了解了它的算法,知道了它的用法,并带来了简单案例。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark-机器学习(3)回归学习之线性

    2024年04月25日
    浏览(72)
  • 模型构建——使用逻辑回归构建模型,lightGBM进行特征筛选

    新的模型要跟原有方案对比,而且是通过实验证明,特别注意模型和策略不能同时调整。一般实验设计包含以下流程: 问题:业务稳定后,可以去掉人工审核吗? 答 :不可以,一般模型上线后,高分段和低分段的表现较好,但中间段还是需要人工审核;而且即使模型完善后

    2024年02月15日
    浏览(46)
  • spark入门案例以及sbt安装与打包(Linux环境)

    创作初衷:由于在这上面翻过太多的烂文章(博主自己都没搞懂就“写作抄袭”),才写下此文(已从重装系统做过3次测试,没有问题才下笔),文章属于保姆级别。 ~~~~~~~~~~~~~~~~~~~~~~~~~创作不易,转载请说明~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本文相关的版本信息(没部署Hadoop,本文环境

    2024年02月01日
    浏览(40)
  • [机器学习、Spark]Spark MLlib分类

    👨‍🎓👨‍🎓博主:发量不足 📑📑本期更新内容: Spark MLlib分类 🔥🔥 📑📑下篇文章预告:Hadoop全分布部署🔥🔥🔥 简介:耐心,自信来源于你强大的思想和知识基础!!   目录 一、线性支持向量机 二、逻辑回归     MLB支持多种分类分新方法。如 一元分类、多元分

    2024年02月02日
    浏览(42)
  • [机器学习、Spark]Spark MLlib机器学习

    👨‍🎓👨‍🎓博主:发量不足 📑📑本期更新内容: Spark MLlib 机器学习 算法库 📑📑下篇文章预告: Spark机器学习库 MLlib 的概述 💨💨简介:分享的是一个当代疫情在校封校的大学生学习笔记 目录 初始机器学习 一. 什么是机器学习 二.机器学习的应用   一. 什么是

    2024年02月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包