【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.{DecisionTreeClassificationModel, DecisionTreeClassifier}  
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  
import org.apache.spark.rdd.RDD  
import org.apache.spark.sql.{DataFrame, SparkSession}  
  
  
/**  
 * 决策树分类器,实现鸢尾花分类  
 */  
  
//case class Iris(features: org.apache.spark.ml.linalg.Vector, label: String)  // MLlibLogisticRegression 中存在该样例类,这里不用写,一个包里不存在这个样例类时需要写
  
object MLlibDecisionTreeClassifier {  
  
  def main(args: Array[String]): Unit = {  
  
    val spark: SparkSession = SparkSession.builder().master("local[2]")  
      .appName("Spark MLlib DecisionTreeClassifier").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")  
  
    println("鸢尾花原始数据如下:")  
    df.map(t => t(1)+":"+t(0)).collect().foreach(println)  
  
    //    处理特征和标签,以及数据分组  
    val labelIndexer: StringIndexerModel = new StringIndexer().setInputCol("label").setOutputCol(  
      "indexedLabel").fit(df)  
  
    val featureIndexer: VectorIndexerModel = new VectorIndexer().setInputCol("features")  
      .setOutputCol("indexedFeatures").setMaxCategories(4).fit(df)  
    //这里我们设置一个labelConverter,目的是把预测的类别重新转化成字符型的  
    val labelConverter: IndexToString = new IndexToString().setInputCol("prediction")  
      .setOutputCol("predictedLabel").setLabels(labelIndexer.labels)  
  
    //接下来,我们把数据集随机分成训练集和测试集,其中训练集占70%。  
    val Array(trainingData, testData) = data.randomSplit(Array(0.7, 0.3))  
  
    val dtClassifier: DecisionTreeClassifier = new DecisionTreeClassifier()  
      .setLabelCol("indexedLabel").setFeaturesCol("indexedFeatures")  
  
    //在pipeline中进行设置  
    val pipelinedClassifier: Pipeline = new Pipeline()  
      .setStages(Array(labelIndexer, featureIndexer, dtClassifier, labelConverter))  
    //训练决策树模型  
    val modelClassifier: PipelineModel = pipelinedClassifier.fit(trainingData)  
    //进行预测  
    val predictionsClassifier: DataFrame = modelClassifier.transform(testData)  
    predictionsClassifier.select("predictedLabel", "label", "features").show(5)  
  
    //    评估决策树分类模型  
    val evaluatorClassifier: MulticlassClassificationEvaluator = new MulticlassClassificationEvaluator()  
      .setLabelCol("indexedLabel")  
      .setPredictionCol("prediction").setMetricName("accuracy")  
    val accuracy: Double = evaluatorClassifier.evaluate(predictionsClassifier)  
    println("Test Error = " + (1.0 - accuracy))  
  
    val treeModelClassifier: DecisionTreeClassificationModel = modelClassifier.stages(2)  
      .asInstanceOf[DecisionTreeClassificationModel]  
  
    println("Learned classification tree model:\n" + treeModelClassifier.toDebugString)  
  
  
    spark.stop()  
  }  
  
}

【IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建鸢尾花决策树分类预测模型】,intellij-idea,spark,spark-ml文章来源地址https://www.toymoban.com/news/detail-634385.html

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

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

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

相关文章

  • 【机器学习】决策树案例二:利用决策树进行鸢尾花数据集分类预测

    手动反爬虫,禁止转载: 原博地址 https://blog.csdn.net/lys_828/article/details/122045161(CSDN博主:Be_melting) 在进行逻辑回归分类的过程中已经有使用过iris数据集,这里直接加载数据,并进行字段名称的修改。 输出结果如下。 通过info()方法查看各个字段的基本详情,输出结果如下。

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

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

    2023年04月10日
    浏览(43)
  • 机器学习---使用 TensorFlow 构建神经网络模型预测波士顿房价和鸢尾花数据集分类

    1. 预测波士顿房价 1.1 导包 最后一行设置了TensorFlow日志的详细程度: tf.logging.DEBUG :最详细的日志级别,用于记录调试信息。 tf.logging.INFO :用于记录一般的信息性消息,比如训练过程中的指标和进度。 tf.logging.WARN :用于记录警告消息,表示可能存在潜在问题,但不会导致

    2024年02月08日
    浏览(47)
  • 机器学习——鸢尾花数据集

    鸢尾花数据集即iris iris数据集文件: https://pan.baidu.com/s/1saL_4Q9PbFJluU4htAgFdQ .提取码:1234 数据集包含150个样本(数据集的行) 数据集包含4个属性(数据集的列):Sepal Length,Sepal Width,Petal Length,Petal Width:‘feature_names’ 利用numpy.ndarray存储这150x4的数据:‘data’ 分类标签取

    2023年04月08日
    浏览(37)
  • 【主成分分析(PCA)- 鸢尾花】

    在现代数据科学中,维度灾难常常是数据处理与分析的一大难题。主成分分析(PCA)是一种广泛使用的数据降维技术,它通过将原始数据转换为新的低维空间,保留最重要的信息,从而使得数据分析更加高效。本博客将详细介绍PCA的原理、应用场景以及如何使用Python中的skl

    2024年02月15日
    浏览(77)
  • 【机器学习】鸢尾花分类-逻辑回归示例

    功能: 这段代码演示了如何使用逻辑回归对鸢尾花数据集进行训练,并将训练好的模型保存到文件中。然后,它允许用户输入新的鸢尾花特征数据,使用保存的模型进行预测,并输出预测结果。 步骤概述: 加载数据和预处理: 使用 Scikit-Learn 中的 datasets 模块加载鸢尾花数据

    2024年02月10日
    浏览(42)
  • 【机器学习】KNN算法-鸢尾花种类预测

    K最近邻(K-Nearest Neighbors,KNN)算法是一种用于模式识别和分类的简单但强大的机器学习算法。它的工作原理非常直观:给定一个新数据点,KNN算法会查找离这个数据点最近的K个已知数据点,然后基于这K个最近邻数据点的类别来决定新数据点的类别。简而言之,KNN算法通过周

    2024年02月07日
    浏览(41)
  • 机器学习-KNN算法(鸢尾花分类实战)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 K近邻(K Nearest Neighbors,KNN)算法是最简单的分类算法之一,也就是根据现有训练数据判断输入样本是属于哪一个类别。 “近朱者赤近墨者黑\\\",所谓的K近邻,也就

    2023年04月08日
    浏览(71)
  • 机器学习之鸢尾花的的预测

    2024年02月13日
    浏览(52)
  • Python鸢尾花SVM分类模型代码

           机器学习的经典实验,对于数据集进行分类,网上看了一点其他的和GPT写的,好像只展示了4个特征中两个特征与3种类别的分类图,在我做这个实验交报告时,老师就问这个特征之间有很多交叉的点,在线性模型不应该得到分类准确度接近1的效果,后面改进加上另外

    2024年01月21日
    浏览(61)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包