首页 > 其他分享 >spark实验七 SparkMLlib

spark实验七 SparkMLlib

时间:2024-02-23 13:11:25浏览次数:19  
标签:PCA val SparkMLlib 实验 setInputCol new spark pca setOutputCol

1.数据导入
从文件中导入数据,并转化为 DataFrame。

2.进行主成分分析(PCA)
对 6 个连续型的数值型变量进行主成分分析。PCA(主成分分析)是通过正交变换把一
组相关变量的观测值转化成一组线性无关的变量值,即主成分的一种方法。PCA 通过使用
主成分把特征向量投影到低维空间,实现对特征向量的降维。请通过 setK()方法将主成分数
量设置为 3,把连续型的特征向量转化成一个 3 维的主成分。

val pca = new PCA().setInputCol("features").setOutputCol("pcaFeatures").setK(3).fit(df)
val result = pca.transform(df)
val testdata = pca.transform(test)
result.show(false)
testdata.show(false)

3.训练分类模型并预测居民收入
在主成分分析的基础上,采用逻辑斯蒂回归,或者决策树模型预测居民收入是否超过
50K;对 Test 数据集进行验证。

val labelIndexer = new 
StringIndexer().setInputCol("label").setOutputCol("indexedLabel").fit(result)
 labelIndexer.labels.foreach(println)
 val featureIndexer = new 
VectorIndexer().setInputCol("pcaFeatures").setOutputCol("indexedFeatures").fit(result)
 println(featureIndexer.numFeatures)
val labelConverter = new 
IndexToString().setInputCol("prediction").setOutputCol("predictedLabel").setLabels(labelIndexer.
labels)
val lr = new 
LogisticRegression().setLabelCol("indexedLabel").setFeaturesCol("indexedFeatures").setMaxIter(
100)
val lrPipeline = new Pipeline().setStages(Array(labelIndexer, featureIndexer, lr, 
labelConverter))
val lrPipelineModel = lrPipeline.fit(result)
val lrAccuracy = evaluator.evaluate(lrPredictions)
println("Test Error = " + (1.0 - lrAccuracy))

4.超参数调优
利用 CrossValidator 确定最优的参数,包括最优主成分 PCA 的维数、分类器自身的参数
等。

 val pca = new PCA().setInputCol("features").setOutputCol("pcaFeatures")

 val featureIndexer = new 
VectorIndexer().setInputCol("pcaFeatures").setOutputCol("indexedFeatures")
 val labelConverter = new 
IndexToString().setInputCol("prediction").setOutputCol("predictedLabel").setLabels(labelIndexer.l
abels)
 val lr = new 
LogisticRegression().setLabelCol("indexedLabel").setFeaturesCol("indexedFeatures").setMaxIter(1
00)
val lrPipeline = new Pipeline().setStages(Array(pca, labelIndexer, featureIndexer, lr, 
labelConverter))
val paramGrid = new ParamGridBuilder().addGrid(pca.k, 
Array(1,2,3,4,5,6)).addGrid(lr.elasticNetParam, Array(0.2,0.8)).addGrid(lr.regParam, Array(0.01, 
0.1, 0.5)).build()

标签:PCA,val,SparkMLlib,实验,setInputCol,new,spark,pca,setOutputCol
From: https://www.cnblogs.com/lmyy/p/18029279

相关文章

  • spark实验六SparkStreaming
    1.安装FlumeFlume是Cloudera提供的一个分布式、可靠、可用的系统,它能够将不同数据源的海量日志数据进行高效收集、聚合、移动,最后存储到一个中心化数据存储系统中。Flume的核心是把数据从数据源收集过来,再送到目的地。请到Flume官网下载Flume1.7.0安装文件,下载地址如......
  • Spark实践之Spark Streaming
    首先需要安装flume,我选择的是1.9.0版本,然后对于配置文件只需要配置相关的环境和jdk即可flume-env.sh#LicensedtotheApacheSoftwareFoundation(ASF)underone#ormorecontributorlicenseagreements.SeetheNOTICEfile#distributedwiththisworkforadditi......
  • Spark中RDD阶段划分
    分析源码步骤:第一步程序入口: 第二步一直查看runjob方法,可以看出collect()是RDD行动算子,与Job运行提交相关rdd.scala sparkcontext.scala  sparkcontext.scala  sparkcontext.scala 第三步runJob()与DAG调度有关sparkcontext.scala第四步runJob()核心代码-......
  • mpsoc嵌入式vitis开发—EMIO LED实验
    前言vitis版本:Vitis2023.2由于Vitis版本更新,很多API发生变化,学习原子哥的教程时很多代码对于不上,所以自己重新写一遍,并记录下自己踩过的坑,方便以后查看。这里直接给出代码,其他的流程参考原子哥的《2_DFZU2EG_4EVMPSoC之嵌入式Vitis开发指南_V1.0.pdf》代码采用CodeGeeX-AM......
  • BOSHIDA 高精度DC电源模块在科学实验中的作用与价值
    BOSHIDA高精度DC电源模块在科学实验中的作用与价值BOSHIDA高精度DC电源模块在科学实验中具有重要的作用和价值。下面列举了几个方面: 1.稳定的电源供电:科学实验中通常需要稳定的电源供电,以确保实验结果的准确性和可重复性。高精度DC电源模块能够提供稳定的直流电压输出,有效......
  • spark实验五Spark SQL
    1.SparkSQL基本操作将下列JSON格式数据复制到Linux系统中,并保存命名为employee.json。{"id":1,"name":"Ella","age":36}{"id":2,"name":"Bob","age":29}{"id":3,"name"......
  • mpsoc嵌入式vitis开发—AXI GPIO中断实验
    前言vitis版本:Vitis2023.2由于Vitis版本更新,很多API发生变化,学习原子哥的教程时很多代码对于不上,所以自己重新写一遍,并记录下自己踩过的坑,方便以后查看。这里直接给出代码,其他的流程参考原子哥的《2_DFZU2EG_4EVMPSoC之嵌入式Vitis开发指南_V1.0.pdf》代码#include"sleep.h......
  • spark实验四RDD 编程初级实践
    1.spark-shell交互式编程请到本教程官网的“下载专区”的“数据集”中下载chapter5-data1.txt,该数据集包含了某大学计算机系的成绩,数据格式如下所示:Tom,DataBase,80Tom,Algorithm,50Tom,DataStructure,60Jim,DataBase,90Jim,Algorithm,60Jim,DataStructure,80……请根......
  • mpsoc嵌入式vitis开发—外部中断实验
    前言vitis版本:Vitis2023.2由于Vitis版本更新,很多API发生变化,学习原子哥的教程时很多代码对于不上,所以自己重新写一遍,并记录下自己踩过的坑,方便以后查看。这里直接给出代码,其他的流程参考原子哥的《2_DFZU2EG_4EVMPSoC之嵌入式Vitis开发指南_V1.0.pdf》代码#include"platfor......
  • spark编写WordCount代码(scala)
    代码demopackagecom.spark.wordcountimportorg.apache.spark.SparkContextimportorg.apache.spark.SparkContext._importorg.apache.spark.SparkConfobjectWordCount{defmain(args:Array[String]){//文件位置valinputFile="hdfs://192.168.10......