【大数据技术】Spark MLlib机器学习线性回归、逻辑回归预测胃癌是否转移实战(附源码和数据集)

简介: 【大数据技术】Spark MLlib机器学习线性回归、逻辑回归预测胃癌是否转移实战(附源码和数据集)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~

线性回归

过工具类MLUtils加载LIBSVM格式样本文件,每一行的第一个是真实值y,有10个特征值x,用1:double,2:double分别标注,即建立需求函数:

y=a_1x_1+a_2x_2+a_3x_3+a_4x_4+…+a_10x_10

通过样本数据和梯度下降训练模型,找到10个产生比较合理的参数值(a_1到a_10)

回归结果如下

部分代码如下 需要全部代码和数据集请点赞关注收藏后评论区留言私信

 

package com.etc
import org.apache.spark.mllib.regression.{LabeledPoint,  LinearRegressionWithSGD}
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object  LinearRegressionDemo {
  def main(args: Array[String]): Unit = {
    //创建SparkContext
    val conf = new SparkConf().setMaster("local[4]").setAppName("LinearRegression")
    val sc = new SparkContext(conf)
    sc.setLogLevel("error")
    //加载数据样本
    val path = "data1.txt"
    //通过提供的工具类加载样本文件,每一行的第一个是y值,有10个特征值x,用1:double,2:double分别标注
    //即y=a1x1+a2x2+a2x2+a3x3+a4x4+a5x5+a6x6+a7x7+a8x8+a9x9+a10x10
    //-9.490009878824548 1:0.4551273600657362 2:0.36644694351969087 3:-0.38256108933468047 4:-0.4458430198517267 5:0.33109790358914726 6:0.8067445293443565 7:-0.2624341731773887 8:-0.44850386111659524 9:-0.07269284838169332 10:0.5658035575800715
    val data: RDD[LabeledPoint] = MLUtils.loadLibSVMFile(sc, path).cache()
    //迭代次数
    val numIterations = 100
    //梯度下降步长
    val stepSize = 0.00000001
    //训练模型
    val model = LinearRegressionWithSGD.train(data, numIterations, stepSize)
    //模型评估
    val valuesAndPreds = data.map { point =>
      //根据模型预测Label值
      val prediction = model.predict(point.features)
      println(s"【真实值】:${point.label}      ;【预测值】:${prediction}")
      (point.label, prediction)
    }
    //打印模型参数
    println("【参数值】:"+model.weights)
        //求均方误差
    val MSE = valuesAndPreds.map{ case(v, p) => math.pow((v - p), 2) }.mean()
    println("训练模型的均方误差为 = " + MSE)
    sc.stop()
  }
}

逻辑回归预测胃癌转移

建立随机梯度下降的回归模型预测胃癌是否转移,数据特征说明如下:

y:胃癌转移情况(有转移y=1;无转移y=0)  

x1:确诊时患者的年龄(岁)  

x2:肾细胞癌血管内皮生长因子(VEGF)其阳性表述由低到高共三个等级  

x3:肾细胞癌组织内微血管数(MVC)  

x4:肾癌细胞核组织学分级,由低到高共4级  

x5:肾癌细胞分期,由低到高共4期。

预测结果如下

部分代码如下 需要全部代码和数据集请点赞关注收藏后评论区留言私信

package com.etc
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.mllib.classification.{LogisticRegressionWithLBFGS, LogisticRegressionWithSGD}
import org.apache.spark.mllib.evaluation.MulticlassMetrics
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.util.MLUtils
object LogisticRegressionDemo{
  def main(args: Array[String]): Unit = {
    //建立spark环境
    val conf = new SparkConf().setAppName("logisticRegression").setMaster("local")
    val sc  = new SparkContext(conf)
    sc.setLogLevel("error")
    //通过MLUtils工具类读取LIBSVM格式数据集
    val data  = MLUtils.loadLibSVMFile(sc , "wa.txt")
    //测试集和训练集按2:8的比例分
    val Array(traning,test) = data.randomSplit(Array(0.8,0.2),seed = 1L)
    println(traning.count ,test.count)
    traning.foreach(println)
    //建立LogisticRegressionWithLBFGS对象,设置分类数 2 ,run传入训练集开始训练,返回训练后的模型
    val model = new LogisticRegressionWithLBFGS()
      .setNumClasses(2)
      .run(traning)
    //使用训练后的模型对测试集进行测试,同时打印标签和测试结果
    val labelAndPreds = test.map{ point =>
      val prediction = model.predict(point.features)
      (point.label, prediction)
    }
    labelAndPreds.foreach(println)
    println("推荐"+model.weights)
    val trainErr = labelAndPreds.filter( r => r._1 != r._2).count.toDouble / test.count
    println("容错率为trainErr: " +trainErr)
    val predictionAndLabels = test.map{                           //计算测试值
      case LabeledPoint(label,features) =>
        val prediction = model.predict(features)
        (prediction,label)                                              //存储测试值和预测值
    }
    val metrics = new MulticlassMetrics(predictionAndLabels)           //创建验证类
    val precision = metrics.precision                                   //计算验证值
    println("Precision= "+precision)
    val patient = Vectors.dense(Array(20,1,0.0,1,1))
    val d = model.predict(patient)
    print("预测的结果为:" + d)
    //计算患者可能性
    if(d == 1){
      println("患者的胃癌有几率转移。 ")
    } else {
      println("患者的胃癌没有几率转移 。")
    }
  }
}

创作不易 觉得有帮助请点赞关注收藏~~~

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
机器学习/深度学习 数据采集 人工智能
别让“大数据”变成“大忽悠”——聊聊机器学习的真本事
别让“大数据”变成“大忽悠”——聊聊机器学习的真本事
310 9
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
Java 大视界 -- Java 大数据机器学习模型在自然语言生成中的可控性研究与应用(229)
本文深入探讨Java大数据与机器学习在自然语言生成(NLG)中的可控性研究,分析当前生成模型面临的“失控”挑战,如数据噪声、标注偏差及黑盒模型信任问题,提出Java技术在数据清洗、异构框架融合与生态工具链中的关键作用。通过条件注入、强化学习与模型融合等策略,实现文本生成的精准控制,并结合网易新闻与蚂蚁集团的实战案例,展示Java在提升生成效率与合规性方面的卓越能力,为金融、法律等强监管领域提供技术参考。
|
9月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据机器学习模型在生物信息学基因功能预测中的优化与应用(223)
本文探讨了Java大数据与机器学习模型在生物信息学中基因功能预测的优化与应用。通过高效的数据处理能力和智能算法,提升基因功能预测的准确性与效率,助力医学与农业发展。
|
9月前
|
机器学习/深度学习 搜索推荐 数据可视化
Java 大视界 -- Java 大数据机器学习模型在电商用户流失预测与留存策略制定中的应用(217)
本文探讨 Java 大数据与机器学习在电商用户流失预测与留存策略中的应用。通过构建高精度预测模型与动态分层策略,助力企业提前识别流失用户、精准触达,实现用户留存率与商业价值双提升,为电商应对用户流失提供技术新思路。
|
9月前
|
机器学习/深度学习 存储 分布式计算
Java 大视界 --Java 大数据机器学习模型在金融风险压力测试中的应用与验证(211)
本文探讨了Java大数据与机器学习模型在金融风险压力测试中的创新应用。通过多源数据采集、模型构建与优化,结合随机森林、LSTM等算法,实现信用风险动态评估、市场极端场景模拟与操作风险预警。案例分析展示了花旗银行与蚂蚁集团的智能风控实践,验证了技术在提升风险识别效率与降低金融风险损失方面的显著成效。
|
9月前
|
机器学习/深度学习 自然语言处理 算法
Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的对抗训练与鲁棒性提升(205)
本文探讨Java大数据与机器学习在自然语言处理中的对抗训练与鲁棒性提升,分析对抗攻击原理,结合Java技术构建对抗样本、优化训练策略,并通过智能客服等案例展示实际应用效果。
|
10月前
|
机器学习/深度学习 分布式计算 Java
Java 大视界 -- Java 大数据机器学习模型在遥感图像土地利用分类中的优化与应用(199)
本文探讨了Java大数据与机器学习模型在遥感图像土地利用分类中的优化与应用。面对传统方法效率低、精度差的问题,结合Hadoop、Spark与深度学习框架,实现了高效、精准的分类。通过实际案例展示了Java在数据处理、模型融合与参数调优中的强大能力,推动遥感图像分类迈向新高度。
|
10月前
|
机器学习/深度学习 存储 Java
Java 大视界 -- Java 大数据机器学习模型在游戏用户行为分析与游戏平衡优化中的应用(190)
本文探讨了Java大数据与机器学习模型在游戏用户行为分析及游戏平衡优化中的应用。通过数据采集、预处理与聚类分析,开发者可深入洞察玩家行为特征,构建个性化运营策略。同时,利用回归模型优化游戏数值与付费机制,提升游戏公平性与用户体验。
|
10月前
|
机器学习/深度学习 算法 Java
Java 大视界 -- Java 大数据机器学习模型在舆情分析中的情感倾向判断与话题追踪(185)
本篇文章深入探讨了Java大数据与机器学习在舆情分析中的应用,重点介绍了情感倾向判断与话题追踪的技术实现。通过实际案例,展示了如何利用Java生态工具如Hadoop、Hive、Weka和Deeplearning4j进行舆情数据处理、情感分类与趋势预测,揭示了其在企业品牌管理与政府决策中的重要价值。文章还展望了多模态融合、实时性提升及个性化服务等未来发展方向。
|
机器学习/深度学习 数据采集 算法
Java 大视界 -- Java 大数据机器学习模型在金融衍生品定价中的创新方法与实践(166)
本文围绕 Java 大数据机器学习模型在金融衍生品定价中的应用展开,分析定价现状与挑战,阐述技术原理与应用,结合真实案例与代码给出实操方案,助力提升金融衍生品定价的准确性与效率。
Java 大视界 -- Java 大数据机器学习模型在金融衍生品定价中的创新方法与实践(166)

热门文章

最新文章