当前位置: 首页 > article >正文

spark初步探索

今天我阅读了《基于spark下一代机器学习》这本书,里面spark与sql进行了结合,关于传统领域cv,nlp我认为使用大数据处理并不如python处理方便快捷。学习了里面的基础操作,之前学习的spl也可以进行相对的结合。

在书中我会使用了XGBoost,LightGBM,等模型,并且学习了大数据经i行数据预处理的方法

import org.apache.spark.sql.SparkSession
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.sql.functions._
import ml.dmlc.xgboost4j.scala.{XGBoost, DMatrix}

object XGBoostExample {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder
      .appName("XGBoostExample")
      .getOrCreate()

    // 加载数据集
    val data = spark.read.option("header", "true").csv("path/to/your/data.csv")

    // 选择特征和标签
    val featureCols = data.columns.dropRight(1) // 假设最后一列是标签
    val assembler = new VectorAssembler().setInputCols(featureCols).setOutputCol("features")
    val transformedData = assembler.transform(data).select(col("features"), col("label").cast("float"))

    // 划分训练集和测试集
    val Array(trainData, testData) = transformedData.randomSplit(Array(0.8, 0.2), seed = 42)

    // 将数据转换为 DMatrix
    val dtrain = new DMatrix(trainData.rdd.map(row => (row.getAs[org.apache.spark.ml.linalg.Vector]("features").toArray, row.getAs[Float]("label"))).collect())
    val dtest = new DMatrix(testData.rdd.map(row => (row.getAs[org.apache.spark.ml.linalg.Vector]("features").toArray, row.getAs[Float]("label"))).collect())

    // 设置 XGBoost 参数
    val params = Map(
      "eta" -> 0.1,
      "max_depth" -> 3,
      "objective" -> "binary:logistic",
      "silent" -> 1,
      "nthread" -> 4
    )

    // 训练模型
    val bst = XGBoost.train(dtrain, params, 100)

    // 进行预测
    val preds = bst.predict(dtest)

    // 评估模型
    val labels = dtest.getLabel
    val accuracy = preds.zip(labels).count { case (pred, label) => Math.round(pred) == label } / labels.length.toDouble
    println(s"Accuracy: $accuracy")

    // 停止 Spark 会话
    spark.stop()
  }
}


http://www.kler.cn/a/318626.html

相关文章:

  • 985研一学习日记 - 2024.11.14
  • Bugku CTF_Web——点login咋没反应
  • Linux源码阅读笔记-V4L2框架基础介绍
  • 响应式网页设计--html
  • Linux如何更优质调节系统性能
  • 免费,WPS Office教育考试专用版
  • LD3320语音识别模块的简单应用
  • 从 HDFS 迁移到 MinIO 企业对象存储
  • thinkphp6.0 伪静态失效404(win下)
  • 洛汗2保姆级辅助教程攻略:VMOS云手机辅助升级打怪!
  • 【C++取经之路】红黑树封装set
  • Qt 每日面试题 -1
  • TDengine 学习与使用经验分享:业务落地实践与架构升级探索
  • arkts基础知识
  • 获得ASPICE认证需要满足哪些条件?
  • GIS OGC之WMTS地图服务,通过Capabilities XML描述文档,获取matrixIds,origin,计算resolutions
  • 力扣 简单 206.反转链表
  • 跨平台数据库工具DataGrip v2024.2全新发布——增加智能刷新功能
  • 物理学基础精解【16】
  • 人机之间的边界
  • 最近的生活
  • 动态住宅IP的多元化应用
  • [Patriot CTF 2024]
  • 【解决】chrome 谷歌浏览器,鼠标点击任何区域都是 Input 输入框的状态,能看到输入的光标
  • WPF-基础-02 DispatcherObject类
  • R语言 基础 笔记 3