第三方算法打jar包操作

在实际运用算法建模过程中,spark自带的ml库中不一定都包含所需算法,这时就需要加载第三方算法包jar,主要有两种方式:


##方法一:首先在maven官网上找到相应算法对应的Jar包
官网地址:https://mvnrepository.com/


##方法二:若未找到,则到GitHub上搜索对应算法源码,操作步骤如下:
先使用IntelliJ IDEA打开算法工程文件
在右侧窗口依次点击Maven Projects、Lifecycle、package
若出现报错,定位错误原因之后,点击clean重新进行打包

###注:在正式打jar包之前,将原有工程中的test目录先剪切出来,如果不剪切出来则需要加入某些代码跳过test目录,后续再研究
//在spark-shell中加载打的jar包,类似如下写法
./spark-shell \
--jars /root/spark-iforest-2.2.0.jar


//已打包操作成功,启动spark-shell通过命令行运行
import org.apache.spark.ml.feature.StringIndexer
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.ml.iforest.IForest
import org.apache.spark.ml.Pipeline
import org.apache.spark.ml.evaluation.BinaryClassificationEvaluator

// 读取数据
val dataset = (spark.read.option("inferSchema", "true")
              .csv("/user/spark/data/breastw.csv"))

// 对标签值重新编码
// Index label values: 2 -> 0, 4 -> 1
val indexer = (new StringIndexer()
               .setInputCol("_c10")
               .setOutputCol("label"))

//构建特征向量
val assembler = (new VectorAssembler()
                    .setInputCols(Array("_c1", "_c2", "_c3", "_c4", "_c5", "_c6", "_c7", "_c8", "_c9"))
                    .setOutputCol("features"))

//Isolation Forest初始化
val iForest = (new IForest()
                   .setNumTrees(100)
                   .setMaxSamples(256)
                   .setContamination(0.35)
                   .setBootstrap(false)
                   .setMaxDepth(100)
                   .setSeed(123456L))

// 构建pipeline机器学习工作流
val pipeline = new Pipeline().setStages(Array(indexer, assembler, iForest))

// 训练模型
val model = pipeline.fit(dataset)

// 模型预测
val predictions = model.transform(dataset)

// 构建模型效果评估器
val evaluator = (new BinaryClassificationEvaluator()
   .setLabelCol("label")
   .setRawPredictionCol("prediction")
   .setMetricName("areaUnderROC"))

// 计算Auc值
val auc = evaluator.evaluate(predictions)
println(s"The model's auc: $auc")

转载于:https://my.oschina.net/kyo4321/blog/3064314

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值