代码参考如下:scala实现
https://github.com/dmlc/xgboost/blob/master/jvm-packages/xgboost4j-example/src/main/scala/ml/dmlc/xgboost4j/scala/example/spark/SparkTraining.scala
经过transform转换之后,会出现如下几列,其中rawPrediction的值,文档解释是的边距,有点抽象:
举个例子来说,我用鸢尾花训练数据transform之后的结果如下
[[5.0,2.0,3.5,1.0],
2.0,
# 下面这一行表示的是rowprediction
[-0.18701201677322388,-0.18626302480697632,1.2945261001586914],
# 下面这一行表示的是概率
[0.156238853931427,0.15635588765144348,0.6874052286148071],
2.0]
rawPrediction经过softmax计算之后,就能得出结论,其实对应的概率0.156就是通过下面的方式计算出来的。
e^-0.187 / (e^-0.187 + e^-0.186 + e^1.29)
如果本地有测试数据,想在本地运行可以参考如下submit.sh脚本:
本地的spark版本最好在2.3及其以上
spark-submit \
--conf spark.speculation=false \
--conf spark.driver.allowMultipleContexts=true \
--conf spark.dynamicAllocation.enabled=false \
--class com.test.XGB \
--master local[*] \
/Users/spark/target/recommender-data-spark-1.0-SNAPSHOT-jar-with-dependencies.jar \
100