Spark Gradient-boosted trees (GBTs)梯度提升樹

智慧先行者發表於2017-01-04

  梯度提升樹(GBT)是決策樹的集合。 GBT迭代地訓練決策樹以便使損失函式最小化。 spark.ml實現支援GBT用於二進位制分類和迴歸,可以使用連續和分類特徵。

匯入包

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.Dataset
import org.apache.spark.sql.Row
import org.apache.spark.sql.DataFrame
import org.apache.spark.sql.Column
import org.apache.spark.sql.DataFrameReader
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
import org.apache.spark.sql.Encoder
import org.apache.spark.sql.DataFrameStatFunctions
import org.apache.spark.sql.functions._

import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.ml.feature.{ IndexToString, StringIndexer, VectorIndexer }
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.ml.Pipeline
import org.apache.spark.ml.regression.{ GBTRegressionModel, GBTRegressor }
import org.apache.spark.ml.evaluation.RegressionEvaluator
import org.apache.spark.ml.tuning.{ ParamGridBuilder, CrossValidator }

 

匯入資料來源

val spark = SparkSession.builder().appName("Spark Gradient-boosted tree regression").config("spark.some.config.option", "some-value").getOrCreate()

// For implicit conversions like converting RDDs to DataFrames
import spark.implicits._

val dataList: List[(Double, String, Double, Double, String, Double, Double, Double, Double)] = List(  
      (0, "male", 37, 10, "no", 3, 18, 7, 4),  
      (0, "female", 27, 4, "no", 4, 14, 6, 4),  
      (0, "female", 32, 15, "yes", 1, 12, 1, 4),  
      (0, "male", 57, 15, "yes", 5, 18, 6, 5),  
      (0, "male", 22, 0.75, "no", 2, 17, 6, 3),  
      (0, "female", 32, 1.5, "no", 2, 17, 5, 5),  
      (0, "female", 22, 0.75, "no", 2, 12, 1, 3),  
      (0, "male", 57, 15, "yes", 2, 14, 4, 4),  
      (0, "female", 32, 15, "yes", 4, 16, 1, 2),  
      (0, "male", 22, 1.5, "no", 4, 14, 4, 5),  
      (0, "male", 37, 15, "yes", 2, 20, 7, 2),  
      (0, "male", 27, 4, "yes", 4, 18, 6, 4),  
      (0, "male", 47, 15, "yes", 5, 17, 6, 4),  
      (0, "female", 22, 1.5, "no", 2, 17, 5, 4),  
      (0, "female", 27, 4, "no", 4, 14, 5, 4),  
      (0, "female", 37, 15, "yes", 1, 17, 5, 5),  
      (0, "female", 37, 15, "yes", 2, 18, 4, 3),  
      (0, "female", 22, 0.75, "no", 3, 16, 5, 4),  
      (0, "female", 22, 1.5, "no", 2, 16, 5, 5),  
      (0, "female", 27, 10, "yes", 2, 14, 1, 5),  
      (0, "female", 22, 1.5, "no", 2, 16, 5, 5),  
      (0, "female", 22, 1.5, "no", 2, 16, 5, 5),  
      (0, "female", 27, 10, "yes", 4, 16, 5, 4),  
      (0, "female", 32, 10, "yes", 3, 14, 1, 5),  
      (0, "male", 37, 4, "yes", 2, 20, 6, 4),  
      (0, "female", 22, 1.5, "no", 2, 18, 5, 5),  
      (0, "female", 27, 7, "no", 4, 16, 1, 5),  
      (0, "male", 42, 15, "yes", 5, 20, 6, 4),  
      (0, "male", 27, 4, "yes", 3, 16, 5, 5),  
      (0, "female", 27, 4, "yes", 3, 17, 5, 4),  
      (0, "male", 42, 15, "yes", 4, 20, 6, 3),  
      (0, "female", 22, 1.5, "no", 3, 16, 5, 5),  
      (0, "male", 27, 0.417, "no", 4, 17, 6, 4),  
      (0, "female", 42, 15, "yes", 5, 14, 5, 4),  
      (0, "male", 32, 4, "yes", 1, 18, 6, 4),  
      (0, "female", 22, 1.5, "no", 4, 16, 5, 3),  
      (0, "female", 42, 15, "yes", 3, 12, 1, 4),  
      (0, "female", 22, 4, "no", 4, 17, 5, 5),  
      (0, "male", 22, 1.5, "yes", 1, 14, 3, 5),  
      (0, "female", 22, 0.75, "no", 3, 16, 1, 5),  
      (0, "male", 32, 10, "yes", 5, 20, 6, 5),  
      (0, "male", 52, 15, "yes", 5, 18, 6, 3),  
      (0, "female", 22, 0.417, "no", 5, 14, 1, 4),  
      (0, "female", 27, 4, "yes", 2, 18, 6, 1),  
      (0, "female", 32, 7, "yes", 5, 17, 5, 3),  
      (0, "male", 22, 4, "no", 3, 16, 5, 5),  
      (0, "female", 27, 7, "yes", 4, 18, 6, 5),  
      (0, "female", 42, 15, "yes", 2, 18, 5, 4),  
      (0, "male", 27, 1.5, "yes", 4, 16, 3, 5),  
      (0, "male", 42, 15, "yes", 2, 20, 6, 4),  
      (0, "female", 22, 0.75, "no", 5, 14, 3, 5),  
      (0, "male", 32, 7, "yes", 2, 20, 6, 4),  
      (0, "male", 27, 4, "yes", 5, 20, 6, 5),  
      (0, "male", 27, 10, "yes", 4, 20, 6, 4),  
      (0, "male", 22, 4, "no", 1, 18, 5, 5),  
      (0, "female", 37, 15, "yes", 4, 14, 3, 1),  
      (0, "male", 22, 1.5, "yes", 5, 16, 4, 4),  
      (0, "female", 37, 15, "yes", 4, 17, 1, 5),  
      (0, "female", 27, 0.75, "no", 4, 17, 5, 4),  
      (0, "male", 32, 10, "yes", 4, 20, 6, 4),  
      (0, "female", 47, 15, "yes", 5, 14, 7, 2),  
      (0, "male", 37, 10, "yes", 3, 20, 6, 4),  
      (0, "female", 22, 0.75, "no", 2, 16, 5, 5),  
      (0, "male", 27, 4, "no", 2, 18, 4, 5),  
      (0, "male", 32, 7, "no", 4, 20, 6, 4),  
      (0, "male", 42, 15, "yes", 2, 17, 3, 5),  
      (0, "male", 37, 10, "yes", 4, 20, 6, 4),  
      (0, "female", 47, 15, "yes", 3, 17, 6, 5),  
      (0, "female", 22, 1.5, "no", 5, 16, 5, 5),  
      (0, "female", 27, 1.5, "no", 2, 16, 6, 4),  
      (0, "female", 27, 4, "no", 3, 17, 5, 5),  
      (0, "female", 32, 10, "yes", 5, 14, 4, 5),  
      (0, "female", 22, 0.125, "no", 2, 12, 5, 5),  
      (0, "male", 47, 15, "yes", 4, 14, 4, 3),  
      (0, "male", 32, 15, "yes", 1, 14, 5, 5),  
      (0, "male", 27, 7, "yes", 4, 16, 5, 5),  
      (0, "female", 22, 1.5, "yes", 3, 16, 5, 5),  
      (0, "male", 27, 4, "yes", 3, 17, 6, 5),  
      (0, "female", 22, 1.5, "no", 3, 16, 5, 5),  
      (0, "male", 57, 15, "yes", 2, 14, 7, 2),  
      (0, "male", 17.5, 1.5, "yes", 3, 18, 6, 5),  
      (0, "male", 57, 15, "yes", 4, 20, 6, 5),  
      (0, "female", 22, 0.75, "no", 2, 16, 3, 4),  
      (0, "male", 42, 4, "no", 4, 17, 3, 3),  
      (0, "female", 22, 1.5, "yes", 4, 12, 1, 5),  
      (0, "female", 22, 0.417, "no", 1, 17, 6, 4),  
      (0, "female", 32, 15, "yes", 4, 17, 5, 5),  
      (0, "female", 27, 1.5, "no", 3, 18, 5, 2),  
      (0, "female", 22, 1.5, "yes", 3, 14, 1, 5),  
      (0, "female", 37, 15, "yes", 3, 14, 1, 4),  
      (0, "female", 32, 15, "yes", 4, 14, 3, 4),  
      (0, "male", 37, 10, "yes", 2, 14, 5, 3),  
      (0, "male", 37, 10, "yes", 4, 16, 5, 4),  
      (0, "male", 57, 15, "yes", 5, 20, 5, 3),  
      (0, "male", 27, 0.417, "no", 1, 16, 3, 4),  
      (0, "female", 42, 15, "yes", 5, 14, 1, 5),  
      (0, "male", 57, 15, "yes", 3, 16, 6, 1),  
      (0, "male", 37, 10, "yes", 1, 16, 6, 4),  
      (0, "male", 37, 15, "yes", 3, 17, 5, 5),  
      (0, "male", 37, 15, "yes", 4, 20, 6, 5),  
      (0, "female", 27, 10, "yes", 5, 14, 1, 5),  
      (0, "male", 37, 10, "yes", 2, 18, 6, 4),  
      (0, "female", 22, 0.125, "no", 4, 12, 4, 5),  
      (0, "male", 57, 15, "yes", 5, 20, 6, 5),  
      (0, "female", 37, 15, "yes", 4, 18, 6, 4),  
      (0, "male", 22, 4, "yes", 4, 14, 6, 4),  
      (0, "male", 27, 7, "yes", 4, 18, 5, 4),  
      (0, "male", 57, 15, "yes", 4, 20, 5, 4),  
      (0, "male", 32, 15, "yes", 3, 14, 6, 3),  
      (0, "female", 22, 1.5, "no", 2, 14, 5, 4),  
      (0, "female", 32, 7, "yes", 4, 17, 1, 5),  
      (0, "female", 37, 15, "yes", 4, 17, 6, 5),  
      (0, "female", 32, 1.5, "no", 5, 18, 5, 5),  
      (0, "male", 42, 10, "yes", 5, 20, 7, 4),  
      (0, "female", 27, 7, "no", 3, 16, 5, 4),  
      (0, "male", 37, 15, "no", 4, 20, 6, 5),  
      (0, "male", 37, 15, "yes", 4, 14, 3, 2),  
      (0, "male", 32, 10, "no", 5, 18, 6, 4),  
      (0, "female", 22, 0.75, "no", 4, 16, 1, 5),  
      (0, "female", 27, 7, "yes", 4, 12, 2, 4),  
      (0, "female", 27, 7, "yes", 2, 16, 2, 5),  
      (0, "female", 42, 15, "yes", 5, 18, 5, 4),  
      (0, "male", 42, 15, "yes", 4, 17, 5, 3),  
      (0, "female", 27, 7, "yes", 2, 16, 1, 2),  
      (0, "female", 22, 1.5, "no", 3, 16, 5, 5),  
      (0, "male", 37, 15, "yes", 5, 20, 6, 5),  
      (0, "female", 22, 0.125, "no", 2, 14, 4, 5),  
      (0, "male", 27, 1.5, "no", 4, 16, 5, 5),  
      (0, "male", 32, 1.5, "no", 2, 18, 6, 5),  
      (0, "male", 27, 1.5, "no", 2, 17, 6, 5),  
      (0, "female", 27, 10, "yes", 4, 16, 1, 3),  
      (0, "male", 42, 15, "yes", 4, 18, 6, 5),  
      (0, "female", 27, 1.5, "no", 2, 16, 6, 5),  
      (0, "male", 27, 4, "no", 2, 18, 6, 3),  
      (0, "female", 32, 10, "yes", 3, 14, 5, 3),  
      (0, "female", 32, 15, "yes", 3, 18, 5, 4),  
      (0, "female", 22, 0.75, "no", 2, 18, 6, 5),  
      (0, "female", 37, 15, "yes", 2, 16, 1, 4),  
      (0, "male", 27, 4, "yes", 4, 20, 5, 5),  
      (0, "male", 27, 4, "no", 1, 20, 5, 4),  
      (0, "female", 27, 10, "yes", 2, 12, 1, 4),  
      (0, "female", 32, 15, "yes", 5, 18, 6, 4),  
      (0, "male", 27, 7, "yes", 5, 12, 5, 3),  
      (0, "male", 52, 15, "yes", 2, 18, 5, 4),  
      (0, "male", 27, 4, "no", 3, 20, 6, 3),  
      (0, "male", 37, 4, "yes", 1, 18, 5, 4),  
      (0, "male", 27, 4, "yes", 4, 14, 5, 4),  
      (0, "female", 52, 15, "yes", 5, 12, 1, 3),  
      (0, "female", 57, 15, "yes", 4, 16, 6, 4),  
      (0, "male", 27, 7, "yes", 1, 16, 5, 4),  
      (0, "male", 37, 7, "yes", 4, 20, 6, 3),  
      (0, "male", 22, 0.75, "no", 2, 14, 4, 3),  
      (0, "male", 32, 4, "yes", 2, 18, 5, 3),  
      (0, "male", 37, 15, "yes", 4, 20, 6, 3),  
      (0, "male", 22, 0.75, "yes", 2, 14, 4, 3),  
      (0, "male", 42, 15, "yes", 4, 20, 6, 3),  
      (0, "female", 52, 15, "yes", 5, 17, 1, 1),  
      (0, "female", 37, 15, "yes", 4, 14, 1, 2),  
      (0, "male", 27, 7, "yes", 4, 14, 5, 3),  
      (0, "male", 32, 4, "yes", 2, 16, 5, 5),  
      (0, "female", 27, 4, "yes", 2, 18, 6, 5),  
      (0, "female", 27, 4, "yes", 2, 18, 5, 5),  
      (0, "male", 37, 15, "yes", 5, 18, 6, 5),  
      (0, "female", 47, 15, "yes", 5, 12, 5, 4),  
      (0, "female", 32, 10, "yes", 3, 17, 1, 4),  
      (0, "female", 27, 1.5, "yes", 4, 17, 1, 2),  
      (0, "female", 57, 15, "yes", 2, 18, 5, 2),  
      (0, "female", 22, 1.5, "no", 4, 14, 5, 4),  
      (0, "male", 42, 15, "yes", 3, 14, 3, 4),  
      (0, "male", 57, 15, "yes", 4, 9, 2, 2),  
      (0, "male", 57, 15, "yes", 4, 20, 6, 5),  
      (0, "female", 22, 0.125, "no", 4, 14, 4, 5),  
      (0, "female", 32, 10, "yes", 4, 14, 1, 5),  
      (0, "female", 42, 15, "yes", 3, 18, 5, 4),  
      (0, "female", 27, 1.5, "no", 2, 18, 6, 5),  
      (0, "male", 32, 0.125, "yes", 2, 18, 5, 2),  
      (0, "female", 27, 4, "no", 3, 16, 5, 4),  
      (0, "female", 27, 10, "yes", 2, 16, 1, 4),  
      (0, "female", 32, 7, "yes", 4, 16, 1, 3),  
      (0, "female", 37, 15, "yes", 4, 14, 5, 4),  
      (0, "female", 42, 15, "yes", 5, 17, 6, 2),  
      (0, "male", 32, 1.5, "yes", 4, 14, 6, 5),  
      (0, "female", 32, 4, "yes", 3, 17, 5, 3),  
      (0, "female", 37, 7, "no", 4, 18, 5, 5),  
      (0, "female", 22, 0.417, "yes", 3, 14, 3, 5),  
      (0, "female", 27, 7, "yes", 4, 14, 1, 5),  
      (0, "male", 27, 0.75, "no", 3, 16, 5, 5),  
      (0, "male", 27, 4, "yes", 2, 20, 5, 5),  
      (0, "male", 32, 10, "yes", 4, 16, 4, 5),  
      (0, "male", 32, 15, "yes", 1, 14, 5, 5),  
      (0, "male", 22, 0.75, "no", 3, 17, 4, 5),  
      (0, "female", 27, 7, "yes", 4, 17, 1, 4),  
      (0, "male", 27, 0.417, "yes", 4, 20, 5, 4),  
      (0, "male", 37, 15, "yes", 4, 20, 5, 4),  
      (0, "female", 37, 15, "yes", 2, 14, 1, 3),  
      (0, "male", 22, 4, "yes", 1, 18, 5, 4),  
      (0, "male", 37, 15, "yes", 4, 17, 5, 3),  
      (0, "female", 22, 1.5, "no", 2, 14, 4, 5),  
      (0, "male", 52, 15, "yes", 4, 14, 6, 2),  
      (0, "female", 22, 1.5, "no", 4, 17, 5, 5),  
      (0, "male", 32, 4, "yes", 5, 14, 3, 5),  
      (0, "male", 32, 4, "yes", 2, 14, 3, 5),  
      (0, "female", 22, 1.5, "no", 3, 16, 6, 5),  
      (0, "male", 27, 0.75, "no", 2, 18, 3, 3),  
      (0, "female", 22, 7, "yes", 2, 14, 5, 2),  
      (0, "female", 27, 0.75, "no", 2, 17, 5, 3),  
      (0, "female", 37, 15, "yes", 4, 12, 1, 2),  
      (0, "female", 22, 1.5, "no", 1, 14, 1, 5),  
      (0, "female", 37, 10, "no", 2, 12, 4, 4),  
      (0, "female", 37, 15, "yes", 4, 18, 5, 3),  
      (0, "female", 42, 15, "yes", 3, 12, 3, 3),  
      (0, "male", 22, 4, "no", 2, 18, 5, 5),  
      (0, "male", 52, 7, "yes", 2, 20, 6, 2),  
      (0, "male", 27, 0.75, "no", 2, 17, 5, 5),  
      (0, "female", 27, 4, "no", 2, 17, 4, 5),  
      (0, "male", 42, 1.5, "no", 5, 20, 6, 5),  
      (0, "male", 22, 1.5, "no", 4, 17, 6, 5),  
      (0, "male", 22, 4, "no", 4, 17, 5, 3),  
      (0, "female", 22, 4, "yes", 1, 14, 5, 4),  
      (0, "male", 37, 15, "yes", 5, 20, 4, 5),  
      (0, "female", 37, 10, "yes", 3, 16, 6, 3),  
      (0, "male", 42, 15, "yes", 4, 17, 6, 5),  
      (0, "female", 47, 15, "yes", 4, 17, 5, 5),  
      (0, "male", 22, 1.5, "no", 4, 16, 5, 4),  
      (0, "female", 32, 10, "yes", 3, 12, 1, 4),  
      (0, "female", 22, 7, "yes", 1, 14, 3, 5),  
      (0, "female", 32, 10, "yes", 4, 17, 5, 4),  
      (0, "male", 27, 1.5, "yes", 2, 16, 2, 4),  
      (0, "male", 37, 15, "yes", 4, 14, 5, 5),  
      (0, "male", 42, 4, "yes", 3, 14, 4, 5),  
      (0, "female", 37, 15, "yes", 5, 14, 5, 4),  
      (0, "female", 32, 7, "yes", 4, 17, 5, 5),  
      (0, "female", 42, 15, "yes", 4, 18, 6, 5),  
      (0, "male", 27, 4, "no", 4, 18, 6, 4),  
      (0, "male", 22, 0.75, "no", 4, 18, 6, 5),  
      (0, "male", 27, 4, "yes", 4, 14, 5, 3),  
      (0, "female", 22, 0.75, "no", 5, 18, 1, 5),  
      (0, "female", 52, 15, "yes", 5, 9, 5, 5),  
      (0, "male", 32, 10, "yes", 3, 14, 5, 5),  
      (0, "female", 37, 15, "yes", 4, 16, 4, 4),  
      (0, "male", 32, 7, "yes", 2, 20, 5, 4),  
      (0, "female", 42, 15, "yes", 3, 18, 1, 4),  
      (0, "male", 32, 15, "yes", 1, 16, 5, 5),  
      (0, "male", 27, 4, "yes", 3, 18, 5, 5),  
      (0, "female", 32, 15, "yes", 4, 12, 3, 4),  
      (0, "male", 22, 0.75, "yes", 3, 14, 2, 4),  
      (0, "female", 22, 1.5, "no", 3, 16, 5, 3),  
      (0, "female", 42, 15, "yes", 4, 14, 3, 5),  
      (0, "female", 52, 15, "yes", 3, 16, 5, 4),  
      (0, "male", 37, 15, "yes", 5, 20, 6, 4),  
      (0, "female", 47, 15, "yes", 4, 12, 2, 3),  
      (0, "male", 57, 15, "yes", 2, 20, 6, 4),  
      (0, "male", 32, 7, "yes", 4, 17, 5, 5),  
      (0, "female", 27, 7, "yes", 4, 17, 1, 4),  
      (0, "male", 22, 1.5, "no", 1, 18, 6, 5),  
      (0, "female", 22, 4, "yes", 3, 9, 1, 4),  
      (0, "female", 22, 1.5, "no", 2, 14, 1, 5),  
      (0, "male", 42, 15, "yes", 2, 20, 6, 4),  
      (0, "male", 57, 15, "yes", 4, 9, 2, 4),  
      (0, "female", 27, 7, "yes", 2, 18, 1, 5),  
      (0, "female", 22, 4, "yes", 3, 14, 1, 5),  
      (0, "male", 37, 15, "yes", 4, 14, 5, 3),  
      (0, "male", 32, 7, "yes", 1, 18, 6, 4),  
      (0, "female", 22, 1.5, "no", 2, 14, 5, 5),  
      (0, "female", 22, 1.5, "yes", 3, 12, 1, 3),  
      (0, "male", 52, 15, "yes", 2, 14, 5, 5),  
      (0, "female", 37, 15, "yes", 2, 14, 1, 1),  
      (0, "female", 32, 10, "yes", 2, 14, 5, 5),  
      (0, "male", 42, 15, "yes", 4, 20, 4, 5),  
      (0, "female", 27, 4, "yes", 3, 18, 4, 5),  
      (0, "male", 37, 15, "yes", 4, 20, 6, 5),  
      (0, "male", 27, 1.5, "no", 3, 18, 5, 5),  
      (0, "female", 22, 0.125, "no", 2, 16, 6, 3),  
      (0, "male", 32, 10, "yes", 2, 20, 6, 3),  
      (0, "female", 27, 4, "no", 4, 18, 5, 4),  
      (0, "female", 27, 7, "yes", 2, 12, 5, 1),  
      (0, "male", 32, 4, "yes", 5, 18, 6, 3),  
      (0, "female", 37, 15, "yes", 2, 17, 5, 5),  
      (0, "male", 47, 15, "no", 4, 20, 6, 4),  
      (0, "male", 27, 1.5, "no", 1, 18, 5, 5),  
      (0, "male", 37, 15, "yes", 4, 20, 6, 4),  
      (0, "female", 32, 15, "yes", 4, 18, 1, 4),  
      (0, "female", 32, 7, "yes", 4, 17, 5, 4),  
      (0, "female", 42, 15, "yes", 3, 14, 1, 3),  
      (0, "female", 27, 7, "yes", 3, 16, 1, 4),  
      (0, "male", 27, 1.5, "no", 3, 16, 4, 2),  
      (0, "male", 22, 1.5, "no", 3, 16, 3, 5),  
      (0, "male", 27, 4, "yes", 3, 16, 4, 2),  
      (0, "female", 27, 7, "yes", 3, 12, 1, 2),  
      (0, "female", 37, 15, "yes", 2, 18, 5, 4),  
      (0, "female", 37, 7, "yes", 3, 14, 4, 4),  
      (0, "male", 22, 1.5, "no", 2, 16, 5, 5),  
      (0, "male", 37, 15, "yes", 5, 20, 5, 4),  
      (0, "female", 22, 1.5, "no", 4, 16, 5, 3),  
      (0, "female", 32, 10, "yes", 4, 16, 1, 5),  
      (0, "male", 27, 4, "no", 2, 17, 5, 3),  
      (0, "female", 22, 0.417, "no", 4, 14, 5, 5),  
      (0, "female", 27, 4, "no", 2, 18, 5, 5),  
      (0, "male", 37, 15, "yes", 4, 18, 5, 3),  
      (0, "male", 37, 10, "yes", 5, 20, 7, 4),  
      (0, "female", 27, 7, "yes", 2, 14, 4, 2),  
      (0, "male", 32, 4, "yes", 2, 16, 5, 5),  
      (0, "male", 32, 4, "yes", 2, 16, 6, 4),  
      (0, "male", 22, 1.5, "no", 3, 18, 4, 5),  
      (0, "female", 22, 4, "yes", 4, 14, 3, 4),  
      (0, "female", 17.5, 0.75, "no", 2, 18, 5, 4),  
      (0, "male", 32, 10, "yes", 4, 20, 4, 5),  
      (0, "female", 32, 0.75, "no", 5, 14, 3, 3),  
      (0, "male", 37, 15, "yes", 4, 17, 5, 3),  
      (0, "male", 32, 4, "no", 3, 14, 4, 5),  
      (0, "female", 27, 1.5, "no", 2, 17, 3, 2),  
      (0, "female", 22, 7, "yes", 4, 14, 1, 5),  
      (0, "male", 47, 15, "yes", 5, 14, 6, 5),  
      (0, "male", 27, 4, "yes", 1, 16, 4, 4),  
      (0, "female", 37, 15, "yes", 5, 14, 1, 3),  
      (0, "male", 42, 4, "yes", 4, 18, 5, 5),  
      (0, "female", 32, 4, "yes", 2, 14, 1, 5),  
      (0, "male", 52, 15, "yes", 2, 14, 7, 4),  
      (0, "female", 22, 1.5, "no", 2, 16, 1, 4),  
      (0, "male", 52, 15, "yes", 4, 12, 2, 4),  
      (0, "female", 22, 0.417, "no", 3, 17, 1, 5),  
      (0, "female", 22, 1.5, "no", 2, 16, 5, 5),  
      (0, "male", 27, 4, "yes", 4, 20, 6, 4),  
      (0, "female", 32, 15, "yes", 4, 14, 1, 5),  
      (0, "female", 27, 1.5, "no", 2, 16, 3, 5),  
      (0, "male", 32, 4, "no", 1, 20, 6, 5),  
      (0, "male", 37, 15, "yes", 3, 20, 6, 4),  
      (0, "female", 32, 10, "no", 2, 16, 6, 5),  
      (0, "female", 32, 10, "yes", 5, 14, 5, 5),  
      (0, "male", 37, 1.5, "yes", 4, 18, 5, 3),  
      (0, "male", 32, 1.5, "no", 2, 18, 4, 4),  
      (0, "female", 32, 10, "yes", 4, 14, 1, 4),  
      (0, "female", 47, 15, "yes", 4, 18, 5, 4),  
      (0, "female", 27, 10, "yes", 5, 12, 1, 5),  
      (0, "male", 27, 4, "yes", 3, 16, 4, 5),  
      (0, "female", 37, 15, "yes", 4, 12, 4, 2),  
      (0, "female", 27, 0.75, "no", 4, 16, 5, 5),  
      (0, "female", 37, 15, "yes", 4, 16, 1, 5),  
      (0, "female", 32, 15, "yes", 3, 16, 1, 5),  
      (0, "female", 27, 10, "yes", 2, 16, 1, 5),  
      (0, "male", 27, 7, "no", 2, 20, 6, 5),  
      (0, "female", 37, 15, "yes", 2, 14, 1, 3),  
      (0, "male", 27, 1.5, "yes", 2, 17, 4, 4),  
      (0, "female", 22, 0.75, "yes", 2, 14, 1, 5),  
      (0, "male", 22, 4, "yes", 4, 14, 2, 4),  
      (0, "male", 42, 0.125, "no", 4, 17, 6, 4),  
      (0, "male", 27, 1.5, "yes", 4, 18, 6, 5),  
      (0, "male", 27, 7, "yes", 3, 16, 6, 3),  
      (0, "female", 52, 15, "yes", 4, 14, 1, 3),  
      (0, "male", 27, 1.5, "no", 5, 20, 5, 2),  
      (0, "female", 27, 1.5, "no", 2, 16, 5, 5),  
      (0, "female", 27, 1.5, "no", 3, 17, 5, 5),  
      (0, "male", 22, 0.125, "no", 5, 16, 4, 4),  
      (0, "female", 27, 4, "yes", 4, 16, 1, 5),  
      (0, "female", 27, 4, "yes", 4, 12, 1, 5),  
      (0, "female", 47, 15, "yes", 2, 14, 5, 5),  
      (0, "female", 32, 15, "yes", 3, 14, 5, 3),  
      (0, "male", 42, 7, "yes", 2, 16, 5, 5),  
      (0, "male", 22, 0.75, "no", 4, 16, 6, 4),  
      (0, "male", 27, 0.125, "no", 3, 20, 6, 5),  
      (0, "male", 32, 10, "yes", 3, 20, 6, 5),  
      (0, "female", 22, 0.417, "no", 5, 14, 4, 5),  
      (0, "female", 47, 15, "yes", 5, 14, 1, 4),  
      (0, "female", 32, 10, "yes", 3, 14, 1, 5),  
      (0, "male", 57, 15, "yes", 4, 17, 5, 5),  
      (0, "male", 27, 4, "yes", 3, 20, 6, 5),  
      (0, "female", 32, 7, "yes", 4, 17, 1, 5),  
      (0, "female", 37, 10, "yes", 4, 16, 1, 5),  
      (0, "female", 32, 10, "yes", 1, 18, 1, 4),  
      (0, "female", 22, 4, "no", 3, 14, 1, 4),  
      (0, "female", 27, 7, "yes", 4, 14, 3, 2),  
      (0, "male", 57, 15, "yes", 5, 18, 5, 2),  
      (0, "male", 32, 7, "yes", 2, 18, 5, 5),  
      (0, "female", 27, 1.5, "no", 4, 17, 1, 3),  
      (0, "male", 22, 1.5, "no", 4, 14, 5, 5),  
      (0, "female", 22, 1.5, "yes", 4, 14, 5, 4),  
      (0, "female", 32, 7, "yes", 3, 16, 1, 5),  
      (0, "female", 47, 15, "yes", 3, 16, 5, 4),  
      (0, "female", 22, 0.75, "no", 3, 16, 1, 5),  
      (0, "female", 22, 1.5, "yes", 2, 14, 5, 5),  
      (0, "female", 27, 4, "yes", 1, 16, 5, 5),  
      (0, "male", 52, 15, "yes", 4, 16, 5, 5),  
      (0, "male", 32, 10, "yes", 4, 20, 6, 5),  
      (0, "male", 47, 15, "yes", 4, 16, 6, 4),  
      (0, "female", 27, 7, "yes", 2, 14, 1, 2),  
      (0, "female", 22, 1.5, "no", 4, 14, 4, 5),  
      (0, "female", 32, 10, "yes", 2, 16, 5, 4),  
      (0, "female", 22, 0.75, "no", 2, 16, 5, 4),  
      (0, "female", 22, 1.5, "no", 2, 16, 5, 5),  
      (0, "female", 42, 15, "yes", 3, 18, 6, 4),  
      (0, "female", 27, 7, "yes", 5, 14, 4, 5),  
      (0, "male", 42, 15, "yes", 4, 16, 4, 4),  
      (0, "female", 57, 15, "yes", 3, 18, 5, 2),  
      (0, "male", 42, 15, "yes", 3, 18, 6, 2),  
      (0, "female", 32, 7, "yes", 2, 14, 1, 2),  
      (0, "male", 22, 4, "no", 5, 12, 4, 5),  
      (0, "female", 22, 1.5, "no", 1, 16, 6, 5),  
      (0, "female", 22, 0.75, "no", 1, 14, 4, 5),  
      (0, "female", 32, 15, "yes", 4, 12, 1, 5),  
      (0, "male", 22, 1.5, "no", 2, 18, 5, 3),  
      (0, "male", 27, 4, "yes", 5, 17, 2, 5),  
      (0, "female", 27, 4, "yes", 4, 12, 1, 5),  
      (0, "male", 42, 15, "yes", 5, 18, 5, 4),  
      (0, "male", 32, 1.5, "no", 2, 20, 7, 3),  
      (0, "male", 57, 15, "no", 4, 9, 3, 1),  
      (0, "male", 37, 7, "no", 4, 18, 5, 5),  
      (0, "male", 52, 15, "yes", 2, 17, 5, 4),  
      (0, "male", 47, 15, "yes", 4, 17, 6, 5),  
      (0, "female", 27, 7, "no", 2, 17, 5, 4),  
      (0, "female", 27, 7, "yes", 4, 14, 5, 5),  
      (0, "female", 22, 4, "no", 2, 14, 3, 3),  
      (0, "male", 37, 7, "yes", 2, 20, 6, 5),  
      (0, "male", 27, 7, "no", 4, 12, 4, 3),  
      (0, "male", 42, 10, "yes", 4, 18, 6, 4),  
      (0, "female", 22, 1.5, "no", 3, 14, 1, 5),  
      (0, "female", 22, 4, "yes", 2, 14, 1, 3),  
      (0, "female", 57, 15, "no", 4, 20, 6, 5),  
      (0, "male", 37, 15, "yes", 4, 14, 4, 3),  
      (0, "female", 27, 7, "yes", 3, 18, 5, 5),  
      (0, "female", 17.5, 10, "no", 4, 14, 4, 5),  
      (0, "male", 22, 4, "yes", 4, 16, 5, 5),  
      (0, "female", 27, 4, "yes", 2, 16, 1, 4),  
      (0, "female", 37, 15, "yes", 2, 14, 5, 1),  
      (0, "female", 22, 1.5, "no", 5, 14, 1, 4),  
      (0, "male", 27, 7, "yes", 2, 20, 5, 4),  
      (0, "male", 27, 4, "yes", 4, 14, 5, 5),  
      (0, "male", 22, 0.125, "no", 1, 16, 3, 5),  
      (0, "female", 27, 7, "yes", 4, 14, 1, 4),  
      (0, "female", 32, 15, "yes", 5, 16, 5, 3),  
      (0, "male", 32, 10, "yes", 4, 18, 5, 4),  
      (0, "female", 32, 15, "yes", 2, 14, 3, 4),  
      (0, "female", 22, 1.5, "no", 3, 17, 5, 5),  
      (0, "male", 27, 4, "yes", 4, 17, 4, 4),  
      (0, "female", 52, 15, "yes", 5, 14, 1, 5),  
      (0, "female", 27, 7, "yes", 2, 12, 1, 2),  
      (0, "female", 27, 7, "yes", 3, 12, 1, 4),  
      (0, "female", 42, 15, "yes", 2, 14, 1, 4),  
      (0, "female", 42, 15, "yes", 4, 14, 5, 4),  
      (0, "male", 27, 7, "yes", 4, 14, 3, 3),  
      (0, "male", 27, 7, "yes", 2, 20, 6, 2),  
      (0, "female", 42, 15, "yes", 3, 12, 3, 3),  
      (0, "male", 27, 4, "yes", 3, 16, 3, 5),  
      (0, "female", 27, 7, "yes", 3, 14, 1, 4),  
      (0, "female", 22, 1.5, "no", 2, 14, 4, 5),  
      (0, "female", 27, 4, "yes", 4, 14, 1, 4),  
      (0, "female", 22, 4, "no", 4, 14, 5, 5),  
      (0, "female", 22, 1.5, "no", 2, 16, 4, 5),  
      (0, "male", 47, 15, "no", 4, 14, 5, 4),  
      (0, "male", 37, 10, "yes", 2, 18, 6, 2),  
      (0, "male", 37, 15, "yes", 3, 17, 5, 4),  
      (0, "female", 27, 4, "yes", 2, 16, 1, 4),  
      (3, "male", 27, 1.5, "no", 3, 18, 4, 4),  
      (3, "female", 27, 4, "yes", 3, 17, 1, 5),  
      (7, "male", 37, 15, "yes", 5, 18, 6, 2),  
      (12, "female", 32, 10, "yes", 3, 17, 5, 2),  
      (1, "male", 22, 0.125, "no", 4, 16, 5, 5),  
      (1, "female", 22, 1.5, "yes", 2, 14, 1, 5),  
      (12, "male", 37, 15, "yes", 4, 14, 5, 2),  
      (7, "female", 22, 1.5, "no", 2, 14, 3, 4),  
      (2, "male", 37, 15, "yes", 2, 18, 6, 4),  
      (3, "female", 32, 15, "yes", 4, 12, 3, 2),  
      (1, "female", 37, 15, "yes", 4, 14, 4, 2),  
      (7, "female", 42, 15, "yes", 3, 17, 1, 4),  
      (12, "female", 42, 15, "yes", 5, 9, 4, 1),  
      (12, "male", 37, 10, "yes", 2, 20, 6, 2),  
      (12, "female", 32, 15, "yes", 3, 14, 1, 2),  
      (3, "male", 27, 4, "no", 1, 18, 6, 5),  
      (7, "male", 37, 10, "yes", 2, 18, 7, 3),  
      (7, "female", 27, 4, "no", 3, 17, 5, 5),  
      (1, "male", 42, 15, "yes", 4, 16, 5, 5),  
      (1, "female", 47, 15, "yes", 5, 14, 4, 5),  
      (7, "female", 27, 4, "yes", 3, 18, 5, 4),  
      (1, "female", 27, 7, "yes", 5, 14, 1, 4),  
      (12, "male", 27, 1.5, "yes", 3, 17, 5, 4),  
      (12, "female", 27, 7, "yes", 4, 14, 6, 2),  
      (3, "female", 42, 15, "yes", 4, 16, 5, 4),  
      (7, "female", 27, 10, "yes", 4, 12, 7, 3),  
      (1, "male", 27, 1.5, "no", 2, 18, 5, 2),  
      (1, "male", 32, 4, "no", 4, 20, 6, 4),  
      (1, "female", 27, 7, "yes", 3, 14, 1, 3),  
      (3, "female", 32, 10, "yes", 4, 14, 1, 4),  
      (3, "male", 27, 4, "yes", 2, 18, 7, 2),  
      (1, "female", 17.5, 0.75, "no", 5, 14, 4, 5),  
      (1, "female", 32, 10, "yes", 4, 18, 1, 5),  
      (7, "female", 32, 7, "yes", 2, 17, 6, 4),  
      (7, "male", 37, 15, "yes", 2, 20, 6, 4),  
      (7, "female", 37, 10, "no", 1, 20, 5, 3),  
      (12, "female", 32, 10, "yes", 2, 16, 5, 5),  
      (7, "male", 52, 15, "yes", 2, 20, 6, 4),  
      (7, "female", 42, 15, "yes", 1, 12, 1, 3),  
      (1, "male", 52, 15, "yes", 2, 20, 6, 3),  
      (2, "male", 37, 15, "yes", 3, 18, 6, 5),  
      (12, "female", 22, 4, "no", 3, 12, 3, 4),  
      (12, "male", 27, 7, "yes", 1, 18, 6, 2),  
      (1, "male", 27, 4, "yes", 3, 18, 5, 5),  
      (12, "male", 47, 15, "yes", 4, 17, 6, 5),  
      (12, "female", 42, 15, "yes", 4, 12, 1, 1),  
      (7, "male", 27, 4, "no", 3, 14, 3, 4),  
      (7, "female", 32, 7, "yes", 4, 18, 4, 5),  
      (1, "male", 32, 0.417, "yes", 3, 12, 3, 4),  
      (3, "male", 47, 15, "yes", 5, 16, 5, 4),  
      (12, "male", 37, 15, "yes", 2, 20, 5, 4),  
      (7, "male", 22, 4, "yes", 2, 17, 6, 4),  
      (1, "male", 27, 4, "no", 2, 14, 4, 5),  
      (7, "female", 52, 15, "yes", 5, 16, 1, 3),  
      (1, "male", 27, 4, "no", 3, 14, 3, 3),  
      (1, "female", 27, 10, "yes", 4, 16, 1, 4),  
      (1, "male", 32, 7, "yes", 3, 14, 7, 4),  
      (7, "male", 32, 7, "yes", 2, 18, 4, 1),  
      (3, "male", 22, 1.5, "no", 1, 14, 3, 2),  
      (7, "male", 22, 4, "yes", 3, 18, 6, 4),  
      (7, "male", 42, 15, "yes", 4, 20, 6, 4),  
      (2, "female", 57, 15, "yes", 1, 18, 5, 4),  
      (7, "female", 32, 4, "yes", 3, 18, 5, 2),  
      (1, "male", 27, 4, "yes", 1, 16, 4, 4),  
      (7, "male", 32, 7, "yes", 4, 16, 1, 4),  
      (2, "male", 57, 15, "yes", 1, 17, 4, 4),  
      (7, "female", 42, 15, "yes", 4, 14, 5, 2),  
      (7, "male", 37, 10, "yes", 1, 18, 5, 3),  
      (3, "male", 42, 15, "yes", 3, 17, 6, 1),  
      (1, "female", 52, 15, "yes", 3, 14, 4, 4),  
      (2, "female", 27, 7, "yes", 3, 17, 5, 3),  
      (12, "male", 32, 7, "yes", 2, 12, 4, 2),  
      (1, "male", 22, 4, "no", 4, 14, 2, 5),  
      (3, "male", 27, 7, "yes", 3, 18, 6, 4),  
      (12, "female", 37, 15, "yes", 1, 18, 5, 5),  
      (7, "female", 32, 15, "yes", 3, 17, 1, 3),  
      (7, "female", 27, 7, "no", 2, 17, 5, 5),  
      (1, "female", 32, 7, "yes", 3, 17, 5, 3),  
      (1, "male", 32, 1.5, "yes", 2, 14, 2, 4),  
      (12, "female", 42, 15, "yes", 4, 14, 1, 2),  
      (7, "male", 32, 10, "yes", 3, 14, 5, 4),  
      (7, "male", 37, 4, "yes", 1, 20, 6, 3),  
      (1, "female", 27, 4, "yes", 2, 16, 5, 3),  
      (12, "female", 42, 15, "yes", 3, 14, 4, 3),  
      (1, "male", 27, 10, "yes", 5, 20, 6, 5),  
      (12, "male", 37, 10, "yes", 2, 20, 6, 2),  
      (12, "female", 27, 7, "yes", 1, 14, 3, 3),  
      (3, "female", 27, 7, "yes", 4, 12, 1, 2),  
      (3, "male", 32, 10, "yes", 2, 14, 4, 4),  
      (12, "female", 17.5, 0.75, "yes", 2, 12, 1, 3),  
      (12, "female", 32, 15, "yes", 3, 18, 5, 4),  
      (2, "female", 22, 7, "no", 4, 14, 4, 3),  
      (1, "male", 32, 7, "yes", 4, 20, 6, 5),  
      (7, "male", 27, 4, "yes", 2, 18, 6, 2),  
      (1, "female", 22, 1.5, "yes", 5, 14, 5, 3),  
      (12, "female", 32, 15, "no", 3, 17, 5, 1),  
      (12, "female", 42, 15, "yes", 2, 12, 1, 2),  
      (7, "male", 42, 15, "yes", 3, 20, 5, 4),  
      (12, "male", 32, 10, "no", 2, 18, 4, 2),  
      (12, "female", 32, 15, "yes", 3, 9, 1, 1),  
      (7, "male", 57, 15, "yes", 5, 20, 4, 5),  
      (12, "male", 47, 15, "yes", 4, 20, 6, 4),  
      (2, "female", 42, 15, "yes", 2, 17, 6, 3),  
      (12, "male", 37, 15, "yes", 3, 17, 6, 3),  
      (12, "male", 37, 15, "yes", 5, 17, 5, 2),  
      (7, "male", 27, 10, "yes", 2, 20, 6, 4),  
      (2, "male", 37, 15, "yes", 2, 16, 5, 4),  
      (12, "female", 32, 15, "yes", 1, 14, 5, 2),  
      (7, "male", 32, 10, "yes", 3, 17, 6, 3),  
      (2, "male", 37, 15, "yes", 4, 18, 5, 1),  
      (7, "female", 27, 1.5, "no", 2, 17, 5, 5),  
      (3, "female", 47, 15, "yes", 2, 17, 5, 2),  
      (12, "male", 37, 15, "yes", 2, 17, 5, 4),  
      (12, "female", 27, 4, "no", 2, 14, 5, 5),  
      (2, "female", 27, 10, "yes", 4, 14, 1, 5),  
      (1, "female", 22, 4, "yes", 3, 16, 1, 3),  
      (12, "male", 52, 7, "no", 4, 16, 5, 5),  
      (2, "female", 27, 4, "yes", 1, 16, 3, 5),  
      (7, "female", 37, 15, "yes", 2, 17, 6, 4),  
      (2, "female", 27, 4, "no", 1, 17, 3, 1),  
      (12, "female", 17.5, 0.75, "yes", 2, 12, 3, 5),  
      (7, "female", 32, 15, "yes", 5, 18, 5, 4),  
      (7, "female", 22, 4, "no", 1, 16, 3, 5),  
      (2, "male", 32, 4, "yes", 4, 18, 6, 4),  
      (1, "female", 22, 1.5, "yes", 3, 18, 5, 2),  
      (3, "female", 42, 15, "yes", 2, 17, 5, 4),  
      (1, "male", 32, 7, "yes", 4, 16, 4, 4),  
      (12, "male", 37, 15, "no", 3, 14, 6, 2),  
      (1, "male", 42, 15, "yes", 3, 16, 6, 3),  
      (1, "male", 27, 4, "yes", 1, 18, 5, 4),  
      (2, "male", 37, 15, "yes", 4, 20, 7, 3),  
      (7, "male", 37, 15, "yes", 3, 20, 6, 4),  
      (3, "male", 22, 1.5, "no", 2, 12, 3, 3),  
      (3, "male", 32, 4, "yes", 3, 20, 6, 2),  
      (2, "male", 32, 15, "yes", 5, 20, 6, 5),  
      (12, "female", 52, 15, "yes", 1, 18, 5, 5),  
      (12, "male", 47, 15, "no", 1, 18, 6, 5),  
      (3, "female", 32, 15, "yes", 4, 16, 4, 4),  
      (7, "female", 32, 15, "yes", 3, 14, 3, 2),  
      (7, "female", 27, 7, "yes", 4, 16, 1, 2),  
      (12, "male", 42, 15, "yes", 3, 18, 6, 2),  
      (7, "female", 42, 15, "yes", 2, 14, 3, 2),  
      (12, "male", 27, 7, "yes", 2, 17, 5, 4),  
      (3, "male", 32, 10, "yes", 4, 14, 4, 3),  
      (7, "male", 47, 15, "yes", 3, 16, 4, 2),  
      (1, "male", 22, 1.5, "yes", 1, 12, 2, 5),  
      (7, "female", 32, 10, "yes", 2, 18, 5, 4),  
      (2, "male", 32, 10, "yes", 2, 17, 6, 5),  
      (2, "male", 22, 7, "yes", 3, 18, 6, 2),  
      (1, "female", 32, 15, "yes", 3, 14, 1, 5))
	  
val data = dataList.toDF("affairs", "gender", "age", "yearsmarried", "children", "religiousness", "education", "occupation", "rating")

 

GBT建模

data.createOrReplaceTempView("data")

// 字元型別轉換成數值   
val labelWhere = "affairs as label"
val genderWhere = "case when gender='female' then 0 else cast(1 as double) end as gender"
val childrenWhere = "case when children='no' then 0 else cast(1 as double) end as children"

val dataLabelDF = spark.sql(s"select $labelWhere, $genderWhere,age,yearsmarried,$childrenWhere,religiousness,education,occupation,rating from data")

val featuresArray = Array("gender", "age", "yearsmarried", "children", "religiousness", "education", "occupation", "rating")

// 欄位轉換成特徵向量   
val assembler = new VectorAssembler().setInputCols(featuresArray).setOutputCol("features")
val vecDF: DataFrame = assembler.transform(dataLabelDF)
vecDF.show(10, truncate = false)

// 將資料分為訓練和測試集(30%進行測試)  
val Array(trainingDF, testDF) = vecDF.randomSplit(Array(0.7, 0.3))

// 自動識別分類的特徵,並對它們進行索引   
// 具有大於5個不同的值的特徵被視為連續。   
val featureIndexer = new VectorIndexer().setInputCol("features").setOutputCol("indexedFeatures").setMaxCategories(5)



// 訓練GBT模型
val gbt = new GBTRegressor().setLabelCol("label").setFeaturesCol("indexedFeatures").setImpurity("variance").setLossType("squared").setMaxIter(100).setMinInstancesPerNode(100)



// Chain indexer and GBT in a Pipeline.
val pipeline = new Pipeline().setStages(Array(featureIndexer, gbt))

// Train model. This also runs the indexer.
val model = pipeline.fit(trainingDF)

// 做出預測
val predictions = model.transform(testDF)

// 預測樣本展示
predictions.select("prediction", "label", "features").show(20,false)

// 選擇(預測標籤,實際標籤),並計算測試誤差。
val evaluator = new RegressionEvaluator().setLabelCol("label").setPredictionCol("prediction").setMetricName("rmse")
val rmse = evaluator.evaluate(predictions)
println("Root Mean Squared Error (RMSE) on test data = " + rmse)

val gbtModel = model.stages(1).asInstanceOf[GBTRegressionModel]
println("Learned regression GBT model:\n" + gbtModel.toDebugString)

 

程式碼執行結果

// 預測樣本展示
predictions.select("prediction", "label", "features").show(20,false)
+--------------------+-----+-------------------------------------+
|prediction          |label|features                             |
+--------------------+-----+-------------------------------------+
|0.4101891901517728  |0.0  |[0.0,22.0,0.125,0.0,2.0,14.0,4.0,5.0]|
|-0.1761972212866274 |0.0  |[0.0,22.0,0.125,0.0,4.0,12.0,4.0,5.0]|
|-0.1761972212866274 |0.0  |[0.0,22.0,0.125,0.0,4.0,14.0,4.0,5.0]|
|0.27341988209156776 |0.0  |[0.0,22.0,0.417,1.0,3.0,14.0,3.0,5.0]|
|1.3762204060172503  |0.0  |[0.0,22.0,0.75,0.0,2.0,12.0,1.0,3.0] |
|0.7076853285807452  |0.0  |[0.0,22.0,0.75,0.0,3.0,16.0,5.0,4.0] |
|-0.03713901460785563|0.0  |[0.0,22.0,0.75,0.0,4.0,16.0,1.0,5.0] |
|-0.06232021237014856|0.0  |[0.0,22.0,0.75,0.0,5.0,14.0,3.0,5.0] |
|1.3658576179015465  |0.0  |[0.0,22.0,1.5,0.0,2.0,17.0,5.0,4.0]  |
|0.5855203584610474  |0.0  |[0.0,22.0,1.5,0.0,2.0,18.0,5.0,5.0]  |
|1.3423069921702913  |0.0  |[0.0,22.0,1.5,0.0,3.0,16.0,5.0,3.0]  |
|-0.04277366447290868|0.0  |[0.0,22.0,1.5,0.0,5.0,16.0,5.0,5.0]  |
|0.15390822331003562 |0.0  |[0.0,22.0,1.5,1.0,3.0,16.0,5.0,5.0]  |
|-0.05759270231176094|0.0  |[0.0,22.0,1.5,1.0,4.0,12.0,1.0,5.0]  |
|0.9937700279999649  |0.0  |[0.0,27.0,4.0,0.0,3.0,17.0,5.0,5.0]  |
|0.07881499915541987 |0.0  |[0.0,27.0,4.0,0.0,4.0,14.0,5.0,4.0]  |
|0.8853324368229462  |0.0  |[0.0,27.0,4.0,1.0,2.0,18.0,5.0,5.0]  |
|2.470441722865642   |0.0  |[0.0,27.0,4.0,1.0,2.0,18.0,6.0,1.0]  |
|1.8994848597314158  |0.0  |[0.0,27.0,4.0,1.0,3.0,17.0,5.0,4.0]  |
|1.2016151328027989  |0.0  |[0.0,27.0,7.0,0.0,3.0,16.0,5.0,4.0]  |
+--------------------+-----+-------------------------------------+
only showing top 20 rows

// 選擇(預測標籤,實際標籤),並計算測試誤差。
val evaluator = new RegressionEvaluator().setLabelCol("label").setPredictionCol("prediction").setMetricName("rmse")
evaluator: org.apache.spark.ml.evaluation.RegressionEvaluator = regEval_ac9cce181927

val rmse = evaluator.evaluate(predictions)
rmse: Double = 3.398154308642416

println("Root Mean Squared Error (RMSE) on test data = " + rmse)
Root Mean Squared Error (RMSE) on test data = 3.398154308642416

val gbtModel = model.stages(1).asInstanceOf[GBTRegressionModel]
gbtModel: org.apache.spark.ml.regression.GBTRegressionModel = GBTRegressionModel (uid=gbtr_fef8e464e0a9) with 100 trees

println("Learned regression GBT model:\n" + gbtModel.toDebugString)
Learned regression GBT model:
GBTRegressionModel (uid=gbtr_fef8e464e0a9) with 100 trees
  Tree 0 (weight 1.0):
    If (feature 7 in {3.0,4.0})
     If (feature 5 <= 16.0)
      Predict: 0.5493827160493827
     Else (feature 5 > 16.0)
      Predict: 1.4025974025974026
    Else (feature 7 not in {3.0,4.0})
     Predict: 2.3275862068965516
  Tree 1 (weight 0.1):
    If (feature 4 in {3.0,4.0})
     Predict: -1.2041803848556716
    Else (feature 4 not in {3.0,4.0})
     If (feature 2 <= 4.0)
      Predict: -0.23528687185418157
     Else (feature 2 > 4.0)
      Predict: 2.122676104681004
  Tree 2 (weight 0.1):
    If (feature 7 in {2.0,4.0})
     If (feature 4 in {3.0,4.0})
      Predict: -1.656323757972103
     Else (feature 4 not in {3.0,4.0})
      Predict: -0.15543767468869207
    Else (feature 7 not in {2.0,4.0})
     Predict: 1.0278733947646754
  Tree 3 (weight 0.1):
    If (feature 4 in {3.0,4.0})
     Predict: -0.8641507684538178
    Else (feature 4 not in {3.0,4.0})
     If (feature 2 <= 4.0)
      Predict: -0.2273383819199587
     Else (feature 2 > 4.0)
      Predict: 1.5798596443417063
  Tree 4 (weight 0.1):
    If (feature 7 in {2.0,4.0})
     If (feature 4 in {2.0,3.0})
      Predict: -1.236525064691553
     Else (feature 4 not in {2.0,3.0})
      Predict: 0.012163057801348584
    Else (feature 7 not in {2.0,4.0})
     Predict: 0.7792547820010268
  Tree 5 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 7 in {2.0,4.0})
      Predict: -0.9113096501035378
     Else (feature 7 not in {2.0,4.0})
      Predict: 0.29094960891340704
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.9943737179675912
  Tree 6 (weight 0.1):
    If (feature 4 in {3.0,4.0})
     Predict: -0.5816029069016012
    Else (feature 4 not in {3.0,4.0})
     If (feature 2 <= 4.0)
      Predict: -0.20084493904163633
     Else (feature 2 > 4.0)
      Predict: 1.109569351901809
  Tree 7 (weight 0.1):
    If (feature 7 in {2.0,3.0})
     If (feature 4 in {3.0,4.0})
      Predict: -1.206216468680912
     Else (feature 4 not in {3.0,4.0})
      Predict: 0.08655545395654013
    Else (feature 7 not in {2.0,3.0})
     If (feature 1 <= 27.0)
      Predict: -0.20724446825839268
     Else (feature 1 > 27.0)
      Predict: 1.2660056558164223
  Tree 8 (weight 0.1):
    If (feature 7 in {2.0,4.0})
     If (feature 0 in {1.0})
      Predict: -1.0182659703495558
     Else (feature 0 not in {1.0})
      Predict: 0.024231870307628158
    Else (feature 7 not in {2.0,4.0})
     Predict: 0.5318939487492129
  Tree 9 (weight 0.1):
    If (feature 7 in {2.0,3.0})
     If (feature 4 in {3.0,4.0})
      Predict: -0.9976742554437054
     Else (feature 4 not in {3.0,4.0})
      Predict: 0.0200794486795141
    Else (feature 7 not in {2.0,3.0})
     If (feature 1 <= 27.0)
      Predict: -0.12395645984936833
     Else (feature 1 > 27.0)
      Predict: 1.0545881786994915
  Tree 10 (weight 0.1):
    If (feature 7 in {2.0,4.0})
     If (feature 0 in {1.0})
      Predict: -0.8521104101261413
     Else (feature 0 not in {1.0})
      Predict: 4.984317868844511E-4
    Else (feature 7 not in {2.0,4.0})
     Predict: 0.45849128239680126
  Tree 11 (weight 0.1):
    If (feature 7 in {2.0,3.0})
     If (feature 4 in {3.0,4.0})
      Predict: -0.8266429201133548
     Else (feature 4 not in {3.0,4.0})
      Predict: -0.02631141136282202
    Else (feature 7 not in {2.0,3.0})
     If (feature 1 <= 27.0)
      Predict: -0.062192679809529076
     Else (feature 1 > 27.0)
      Predict: 0.8790672857730457
  Tree 12 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 7 in {2.0,4.0})
      Predict: -0.5817255532116069
     Else (feature 7 not in {2.0,4.0})
      Predict: 0.22193937162964048
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.5907959823435813
  Tree 13 (weight 0.1):
    If (feature 7 in {2.0,3.0})
     If (feature 0 in {0.0})
      Predict: -0.7172113654395978
     Else (feature 0 not in {0.0})
      Predict: 0.006042105742806256
    Else (feature 7 not in {2.0,3.0})
     If (feature 4 in {2.0,3.0})
      Predict: -0.10106364169472773
     Else (feature 4 not in {2.0,3.0})
      Predict: 0.7978475987081632
  Tree 14 (weight 0.1):
    If (feature 2 <= 4.0)
     Predict: -0.43106846024675494
    Else (feature 2 > 4.0)
     If (feature 0 in {0.0})
      Predict: -0.24358569405700833
     Else (feature 0 not in {0.0})
      Predict: 0.8430302370437416
  Tree 15 (weight 0.1):
    If (feature 7 in {2.0,4.0})
     If (feature 0 in {1.0})
      Predict: -0.7548596599426589
     Else (feature 0 not in {1.0})
      Predict: 0.08592188188354978
    Else (feature 7 not in {2.0,4.0})
     Predict: 0.3483003891556437
  Tree 16 (weight 0.1):
    If (feature 7 in {2.0,3.0})
     If (feature 4 in {3.0,4.0})
      Predict: -0.6305692411738641
     Else (feature 4 not in {3.0,4.0})
      Predict: -0.03294875487717117
    Else (feature 7 not in {2.0,3.0})
     If (feature 5 <= 16.0)
      Predict: 0.6769789481885423
     Else (feature 5 > 16.0)
      Predict: -0.09745409631073557
  Tree 17 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 5 <= 17.0)
      If (feature 5 <= 14.0)
       Predict: -0.08997529948919183
      Else (feature 5 > 14.0)
       Predict: 0.329830215921939
     Else (feature 5 > 17.0)
      Predict: -0.7669351353559263
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.4823947721214674
  Tree 18 (weight 0.1):
    If (feature 2 <= 1.5)
     Predict: -0.5555885187209292
    Else (feature 2 > 1.5)
     If (feature 7 in {2.0,3.0})
      Predict: -0.22796338045378814
     Else (feature 7 not in {2.0,3.0})
      Predict: 0.6263893424099629
  Tree 19 (weight 0.1):
    If (feature 7 in {2.0,4.0})
     If (feature 4 in {1.0,2.0})
      Predict: -0.8774721304893098
     Else (feature 4 not in {1.0,2.0})
      Predict: 0.2508177659024886
    Else (feature 7 not in {2.0,4.0})
     Predict: 0.3374172716953837
  Tree 20 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 7 in {2.0,4.0})
      Predict: -0.6771642657012377
     Else (feature 7 not in {2.0,4.0})
      Predict: 0.42281474905416766
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.35053210010281294
  Tree 21 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 5 <= 17.0)
      If (feature 5 <= 14.0)
       Predict: -0.08877452416140048
      Else (feature 5 > 14.0)
       Predict: 0.2745756432464146
     Else (feature 5 > 17.0)
      Predict: -0.6587419697090034
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.43241117032884024
  Tree 22 (weight 0.1):
    If (feature 6 <= 5.0)
     If (feature 7 in {1.0,2.0,3.0})
      Predict: -0.6185527002758889
     Else (feature 7 not in {1.0,2.0,3.0})
      Predict: 0.45411581627673897
    Else (feature 6 > 5.0)
     Predict: 0.4365068498808643
  Tree 23 (weight 0.1):
    If (feature 2 <= 4.0)
     Predict: -0.30885690781314273
    Else (feature 2 > 4.0)
     If (feature 0 in {0.0})
      Predict: -0.3023921469776914
     Else (feature 0 not in {0.0})
      Predict: 0.7430519171140063
  Tree 24 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 7 in {2.0,4.0})
      Predict: -0.5879792368509512
     Else (feature 7 not in {2.0,4.0})
      Predict: 0.37672042118327953
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.29665456956343084
  Tree 25 (weight 0.1):
    If (feature 7 in {2.0,3.0})
     If (feature 5 <= 16.0)
      Predict: -0.4358101720832422
     Else (feature 5 > 16.0)
      Predict: 0.004291841246162318
    Else (feature 7 not in {2.0,3.0})
     If (feature 4 in {2.0,3.0})
      Predict: -0.09212211469331538
     Else (feature 4 not in {2.0,3.0})
      Predict: 0.5390477982838969
  Tree 26 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 5 <= 17.0)
      If (feature 5 <= 14.0)
       Predict: -0.002870097057736064
      Else (feature 5 > 14.0)
       Predict: 0.24176485735488987
     Else (feature 5 > 17.0)
      Predict: -0.6526018743363831
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.3789197752633368
  Tree 27 (weight 0.1):
    If (feature 2 <= 1.5)
     Predict: -0.40670356052123396
    Else (feature 2 > 1.5)
     If (feature 5 <= 14.0)
      Predict: -0.3423186434168276
     Else (feature 5 > 14.0)
      If (feature 1 <= 32.0)
       Predict: 0.07310002678020948
      Else (feature 1 > 32.0)
       Predict: 0.6220211186229235
  Tree 28 (weight 0.1):
    If (feature 7 in {2.0,3.0})
     If (feature 2 <= 7.0)
      Predict: -0.37077050934682493
     Else (feature 2 > 7.0)
      Predict: -0.013168403089436417
    Else (feature 7 not in {2.0,3.0})
     If (feature 4 in {1.0,2.0})
      Predict: -0.13649988018105869
     Else (feature 4 not in {1.0,2.0})
      Predict: 0.5307658578968613
  Tree 29 (weight 0.1):
    If (feature 5 <= 17.0)
     If (feature 2 <= 7.0)
      Predict: 0.3743438409942865
     Else (feature 2 > 7.0)
      Predict: -0.19784197849605942
    Else (feature 5 > 17.0)
     Predict: -0.26391914047591847
  Tree 30 (weight 0.1):
    If (feature 2 <= 1.5)
     Predict: -0.3542028568716046
    Else (feature 2 > 1.5)
     If (feature 0 in {0.0})
      Predict: -0.20390871143361886
     Else (feature 0 not in {0.0})
      Predict: 0.41078338397447534
  Tree 31 (weight 0.1):
    If (feature 7 in {2.0,4.0})
     If (feature 4 in {1.0,2.0})
      Predict: -0.6976532686788715
     Else (feature 4 not in {1.0,2.0})
      Predict: 0.305128042791237
    Else (feature 7 not in {2.0,4.0})
     Predict: 0.19996604836748177
  Tree 32 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 7 in {2.0,4.0})
      Predict: -0.5026109921920161
     Else (feature 7 not in {2.0,4.0})
      Predict: 0.2987696061070014
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.2722787792862316
  Tree 33 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 5 <= 16.0)
      Predict: 0.210843945397363
     Else (feature 5 > 16.0)
      Predict: -0.5101274394699526
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.3566655122216068
  Tree 34 (weight 0.1):
    If (feature 7 in {2.0,3.0})
     If (feature 5 <= 16.0)
      Predict: -0.38259410181020964
     Else (feature 5 > 16.0)
      Predict: 0.014040427378239158
    Else (feature 7 not in {2.0,3.0})
     If (feature 4 in {2.0,3.0})
      Predict: -0.0849154281925315
     Else (feature 4 not in {2.0,3.0})
      Predict: 0.46724301245027106
  Tree 35 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 5 <= 16.0)
      Predict: 0.18214237271776318
     Else (feature 5 > 16.0)
      Predict: -0.4336716289604328
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.299121819193453
  Tree 36 (weight 0.1):
    If (feature 6 <= 5.0)
     If (feature 7 in {1.0,2.0,3.0})
      Predict: -0.46344255624122804
     Else (feature 7 not in {1.0,2.0,3.0})
      Predict: 0.3640577311836569
    Else (feature 6 > 5.0)
     Predict: 0.29888044555378185
  Tree 37 (weight 0.1):
    If (feature 2 <= 4.0)
     Predict: -0.21827462552678883
    Else (feature 2 > 4.0)
     If (feature 4 in {1.0,2.0,4.0})
      Predict: -0.27188720417988843
     Else (feature 4 not in {1.0,2.0,4.0})
      Predict: 0.6789439047090412
  Tree 38 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 7 in {2.0,4.0})
      Predict: -0.44714482741915457
     Else (feature 7 not in {2.0,4.0})
      Predict: 0.2834580745796812
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.22803431309861022
  Tree 39 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 5 <= 17.0)
      If (feature 5 <= 14.0)
       Predict: -0.007567675735672283
      Else (feature 5 > 14.0)
       Predict: 0.19528462943330932
     Else (feature 5 > 17.0)
      Predict: -0.4793181468190617
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.2674592141367692
  Tree 40 (weight 0.1):
    If (feature 6 <= 5.0)
     If (feature 7 in {1.0,2.0,3.0})
      Predict: -0.4058905159858142
     Else (feature 7 not in {1.0,2.0,3.0})
      Predict: 0.3146287783924926
    Else (feature 6 > 5.0)
     Predict: 0.26675364810481134
  Tree 41 (weight 0.1):
    If (feature 2 <= 4.0)
     Predict: -0.1962735566727834
    Else (feature 2 > 4.0)
     If (feature 4 in {1.0,2.0,4.0})
      Predict: -0.2198867197911281
     Else (feature 4 not in {1.0,2.0,4.0})
      Predict: 0.5783627397068297
  Tree 42 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 7 in {2.0,4.0})
      Predict: -0.40458335821187674
     Else (feature 7 not in {2.0,4.0})
      Predict: 0.2500008588513438
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.21153528262965707
  Tree 43 (weight 0.1):
    If (feature 0 in {0.0})
     If (feature 4 in {1.0,2.0})
      Predict: -0.5272784668998509
     Else (feature 4 not in {1.0,2.0})
      Predict: 0.27964029342808727
    Else (feature 0 not in {0.0})
     Predict: 0.1521276760243921
  Tree 44 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 5 <= 16.0)
      Predict: 0.15476481680084098
     Else (feature 5 > 16.0)
      Predict: -0.404648885656257
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.20041323422811966
  Tree 45 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 2 <= 10.0)
      Predict: 0.08760703216804985
     Else (feature 2 > 10.0)
      Predict: -0.4363843462222189
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.26125493904601726
  Tree 46 (weight 0.1):
    If (feature 3 in {0.0})
     Predict: -0.24273871330852773
    Else (feature 3 not in {0.0})
     If (feature 1 <= 32.0)
      Predict: 0.4194956858219603
     Else (feature 1 > 32.0)
      Predict: -0.2641351223987055
  Tree 47 (weight 0.1):
    If (feature 2 <= 4.0)
     Predict: -0.1842536884228515
    Else (feature 2 > 4.0)
     If (feature 0 in {0.0})
      Predict: -0.2556437505158
     Else (feature 0 not in {0.0})
      Predict: 0.5250957711438612
  Tree 48 (weight 0.1):
    If (feature 5 <= 17.0)
     If (feature 2 <= 7.0)
      Predict: 0.3097249980758783
     Else (feature 2 > 7.0)
      Predict: -0.20927194758789183
    Else (feature 5 > 17.0)
     Predict: -0.17974425051995072
  Tree 49 (weight 0.1):
    If (feature 2 <= 7.0)
     If (feature 4 in {0.0,1.0,4.0})
      Predict: -0.4391662932031461
     Else (feature 4 not in {0.0,1.0,4.0})
      Predict: 0.14899682915441242
    Else (feature 2 > 7.0)
     Predict: 0.17135087498922727
  Tree 50 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 7 in {2.0,4.0})
      Predict: -0.34595892539052775
     Else (feature 7 not in {2.0,4.0})
      Predict: 0.18864305733321962
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.2010882111695174
  Tree 51 (weight 0.1):
    If (feature 2 <= 7.0)
     If (feature 4 in {0.0,1.0,4.0})
      Predict: -0.37928770492554514
     Else (feature 4 not in {0.0,1.0,4.0})
      Predict: 0.14598978080630404
    Else (feature 2 > 7.0)
     Predict: 0.13789872815456017
  Tree 52 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 0 in {0.0})
      Predict: -0.3561599449500433
     Else (feature 0 not in {0.0})
      Predict: 0.13480317862464578
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.20022083229153956
  Tree 53 (weight 0.1):
    If (feature 7 in {0.0,2.0,3.0})
     If (feature 2 <= 7.0)
      Predict: -0.3034759538679022
     Else (feature 2 > 7.0)
      Predict: 0.030832254829924348
    Else (feature 7 not in {0.0,2.0,3.0})
     If (feature 4 in {2.0,3.0})
      Predict: -0.09791161435829351
     Else (feature 4 not in {2.0,3.0})
      Predict: 0.37430560009039743
  Tree 54 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 5 <= 17.0)
      If (feature 5 <= 14.0)
       Predict: 0.0032991310676856803
      Else (feature 5 > 14.0)
       Predict: 0.16323825545485057
     Else (feature 5 > 17.0)
      Predict: -0.3944469633207582
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.20930077591956386
  Tree 55 (weight 0.1):
    If (feature 6 <= 5.0)
     If (feature 7 in {1.0,2.0,3.0})
      Predict: -0.3423717432439813
     Else (feature 7 not in {1.0,2.0,3.0})
      Predict: 0.2845950114476868
    Else (feature 6 > 5.0)
     Predict: 0.20229881713282846
  Tree 56 (weight 0.1):
    If (feature 7 in {0.0,3.0,4.0})
     If (feature 4 in {0.0,2.0,4.0})
      Predict: -0.34473853796161436
     Else (feature 4 not in {0.0,2.0,4.0})
      Predict: 0.06509817623441427
    Else (feature 7 not in {0.0,3.0,4.0})
     Predict: 0.29637410144956194
  Tree 57 (weight 0.1):
    If (feature 4 in {1.0,3.0})
     If (feature 7 in {0.0,2.0,4.0})
      Predict: -0.4106960501148285
     Else (feature 7 not in {0.0,2.0,4.0})
      Predict: 0.3067013100269527
    Else (feature 4 not in {1.0,3.0})
     Predict: 0.14212125967385864
  Tree 58 (weight 0.1):
    If (feature 7 in {0.0,3.0,4.0})
     If (feature 2 <= 4.0)
      Predict: 0.14321927963357617
     Else (feature 2 > 4.0)
      Predict: -0.24134920569281398
    Else (feature 7 not in {0.0,3.0,4.0})
     Predict: 0.24427269014743427
  Tree 59 (weight 0.1):
    If (feature 2 <= 4.0)
     Predict: -0.1614525889780999
    Else (feature 2 > 4.0)
     If (feature 4 in {1.0,2.0})
      Predict: -0.3282296392038987
     Else (feature 4 not in {1.0,2.0})
      Predict: 0.4000388393084363
  Tree 60 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 5 <= 16.0)
      Predict: 0.11970240371799991
     Else (feature 5 > 16.0)
      Predict: -0.32629555023475065
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.16650169466955037
  Tree 61 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 2 <= 10.0)
      Predict: 0.0785346253080802
     Else (feature 2 > 10.0)
      Predict: -0.3597426698174828
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.2043621605717289
  Tree 62 (weight 0.1):
    If (feature 2 <= 4.0)
     Predict: -0.16092189760093678
    Else (feature 2 > 4.0)
     If (feature 4 in {1.0,2.0})
      Predict: -0.2777794408515309
     Else (feature 4 not in {1.0,2.0})
      Predict: 0.3648602619594364
  Tree 63 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 7 in {2.0,4.0})
      Predict: -0.28929221043435893
     Else (feature 7 not in {2.0,4.0})
      Predict: 0.16866103762864476
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.159374360780632
  Tree 64 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 2 <= 10.0)
      Predict: 0.06551610731177633
     Else (feature 2 > 10.0)
      Predict: -0.3256517139452475
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.1947184133018806
  Tree 65 (weight 0.1):
    If (feature 2 <= 7.0)
     If (feature 4 in {0.0,1.0,4.0})
      Predict: -0.3907242793892747
     Else (feature 4 not in {0.0,1.0,4.0})
      Predict: 0.14983189044748124
    Else (feature 2 > 7.0)
     Predict: 0.14238312259616695
  Tree 66 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 0 in {0.0})
      Predict: -0.3052694134166843
     Else (feature 0 not in {0.0})
      Predict: 0.1242437441599561
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.16364917831715908
  Tree 67 (weight 0.1):
    If (feature 2 <= 7.0)
     If (feature 4 in {0.0,1.0,4.0})
      Predict: -0.3374888895457584
     Else (feature 4 not in {0.0,1.0,4.0})
      Predict: 0.13796807928365779
    Else (feature 2 > 7.0)
     Predict: 0.11799951195954451
  Tree 68 (weight 0.1):
    If (feature 4 in {2.0,3.0})
     If (feature 2 <= 7.0)
      Predict: 0.11037446342692632
     Else (feature 2 > 7.0)
      Predict: -0.3691154257571632
    Else (feature 4 not in {2.0,3.0})
     If (feature 1 <= 27.0)
      Predict: -0.1067359768344909
     Else (feature 1 > 27.0)
      Predict: 0.3469652449886723
  Tree 69 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 5 <= 16.0)
      Predict: 0.09765499691255237
     Else (feature 5 > 16.0)
      Predict: -0.2815290474503235
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.14906241645292465
  Tree 70 (weight 0.1):
    If (feature 7 in {0.0,2.0,3.0})
     If (feature 5 <= 16.0)
      Predict: -0.29299461722232156
     Else (feature 5 > 16.0)
      Predict: 0.09747540373437305
    Else (feature 7 not in {0.0,2.0,3.0})
     If (feature 4 in {1.0,2.0})
      Predict: -0.10994079878853985
     Else (feature 4 not in {1.0,2.0})
      Predict: 0.3523743079378049
  Tree 71 (weight 0.1):
    If (feature 2 <= 7.0)
     If (feature 0 in {1.0})
      Predict: -0.3422083471951224
     Else (feature 0 not in {1.0})
      Predict: 0.13300441855841866
    Else (feature 2 > 7.0)
     Predict: 0.10695163170240178
  Tree 72 (weight 0.1):
    If (feature 6 <= 5.0)
     If (feature 7 in {1.0,2.0,3.0})
      Predict: -0.31582473516501897
     Else (feature 7 not in {1.0,2.0,3.0})
      Predict: 0.2796042594325624
    Else (feature 6 > 5.0)
     Predict: 0.16641824158295654
  Tree 73 (weight 0.1):
    If (feature 7 in {0.0,3.0,4.0})
     If (feature 2 <= 4.0)
      Predict: 0.15145985374076318
     Else (feature 2 > 4.0)
      Predict: -0.25337987124956984
    Else (feature 7 not in {0.0,3.0,4.0})
     Predict: 0.2550491173591116
  Tree 74 (weight 0.1):
    If (feature 3 in {0.0})
     Predict: -0.17047319029247388
    Else (feature 3 not in {0.0})
     If (feature 1 <= 32.0)
      Predict: 0.35333760032570316
     Else (feature 1 > 32.0)
      Predict: -0.2519783337953501
  Tree 75 (weight 0.1):
    If (feature 2 <= 7.0)
     If (feature 0 in {1.0})
      Predict: -0.31803815956744486
     Else (feature 0 not in {1.0})
      Predict: 0.07062037654003865
    Else (feature 2 > 7.0)
     Predict: 0.13215020722610155
  Tree 76 (weight 0.1):
    If (feature 2 <= 7.0)
     If (feature 4 in {0.0,1.0,4.0})
      Predict: -0.2849060057188383
     Else (feature 4 not in {0.0,1.0,4.0})
      Predict: 0.10599732481645478
    Else (feature 2 > 7.0)
     Predict: 0.10572016578088146
  Tree 77 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 7 in {2.0,4.0})
      Predict: -0.29204411697391675
     Else (feature 7 not in {2.0,4.0})
      Predict: 0.17154183331704606
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.1598642924832302
  Tree 78 (weight 0.1):
    If (feature 7 in {0.0,3.0,4.0})
     If (feature 2 <= 4.0)
      Predict: 0.15620197855107712
     Else (feature 2 > 4.0)
      Predict: -0.2358472594212062
    Else (feature 7 not in {0.0,3.0,4.0})
     Predict: 0.21805292474450014
  Tree 79 (weight 0.1):
    If (feature 2 <= 4.0)
     Predict: -0.1310122593821202
    Else (feature 2 > 4.0)
     If (feature 0 in {0.0})
      Predict: -0.20525206330385296
     Else (feature 0 not in {0.0})
      Predict: 0.3988936865730646
  Tree 80 (weight 0.1):
    If (feature 6 <= 4.0)
     Predict: 0.118723210443705
    Else (feature 6 > 4.0)
     If (feature 2 <= 7.0)
      Predict: -0.5009441711869456
     Else (feature 2 > 7.0)
      Predict: 0.37560154066955664
  Tree 81 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 5 <= 16.0)
      Predict: 0.1011898275621567
     Else (feature 5 > 16.0)
      Predict: -0.27541549529142817
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.1403917694564152
  Tree 82 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 2 <= 10.0)
      Predict: 0.10485592624097106
     Else (feature 2 > 10.0)
      Predict: -0.3561693608362045
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.1550785478603467
  Tree 83 (weight 0.1):
    If (feature 6 <= 5.0)
     If (feature 7 in {1.0,2.0,3.0})
      Predict: -0.29578292364809544
     Else (feature 7 not in {1.0,2.0,3.0})
      Predict: 0.27307326206821303
    Else (feature 6 > 5.0)
     Predict: 0.14259778729589817
  Tree 84 (weight 0.1):
    If (feature 7 in {0.0,3.0,4.0})
     If (feature 2 <= 10.0)
      If (feature 0 in {1.0})
       Predict: -0.4968444641407045
      Else (feature 0 not in {1.0})
       Predict: 0.039833192482040626
     Else (feature 2 > 10.0)
      Predict: 0.23547722042459557
    Else (feature 7 not in {0.0,3.0,4.0})
     Predict: 0.20092157887884146
  Tree 85 (weight 0.1):
    If (feature 0 in {0.0})
     If (feature 4 in {1.0,2.0})
      Predict: -0.41927295132296866
     Else (feature 4 not in {1.0,2.0})
      Predict: 0.27264426276668075
    Else (feature 0 not in {0.0})
     Predict: 0.09473118321732256
  Tree 86 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 7 in {2.0,4.0})
      Predict: -0.2627520575537636
     Else (feature 7 not in {2.0,4.0})
      Predict: 0.16852637689996566
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.13242206940974757
  Tree 87 (weight 0.1):
    If (feature 4 in {1.0,3.0,4.0})
     If (feature 2 <= 10.0)
      Predict: 0.0968195867364572
     Else (feature 2 > 10.0)
      Predict: -0.33632764976664026
    Else (feature 4 not in {1.0,3.0,4.0})
     Predict: 0.15026643957145142
  Tree 88 (weight 0.1):
    If (feature 5 <= 16.0)
     If (feature 4 in {1.0,2.0})
      Predict: -0.5956659813535735
     Else (feature 4 not in {1.0,2.0})
      Predict: 0.4529037429667299
    Else (feature 5 > 16.0)
     Predict: 0.08159901911739971
  Tree 89 (weight 0.1):
    If (feature 4 in {3.0,4.0})
     Predict: -0.12934611014945963
    Else (feature 4 not in {3.0,4.0})
     If (feature 5 <= 16.0)
      Predict: -0.40930103952472296
     Else (feature 5 > 16.0)
      Predict: 0.6895088054273292
  Tree 90 (weight 0.1):
    If (feature 5 <= 17.0)
     If (feature 2 <= 7.0)
      Predict: 0.34370866252824434
     Else (feature 2 > 7.0)
      Predict: -0.2630177858922842
    Else (feature 5 > 17.0)
     Predict: -0.17338519514465173
  Tree 91 (weight 0.1):
    If (feature 5 <= 17.0)
     If (feature 4 in {0.0,3.0})
      Predict: -0.25104546806534994
     Else (feature 4 not in {0.0,3.0})
      Predict: 0.2702826069825862
    Else (feature 5 > 17.0)
     Predict: -0.13870815611572082
  Tree 92 (weight 0.1):
    If (feature 2 <= 7.0)
     If (feature 4 in {0.0,1.0,4.0})
      Predict: -0.3031434977322535
     Else (feature 4 not in {0.0,1.0,4.0})
      Predict: 0.13250771045104892
    Else (feature 2 > 7.0)
     Predict: 0.10098942121784923
  Tree 93 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 0 in {0.0})
      Predict: -0.2757474131110731
     Else (feature 0 not in {0.0})
      Predict: 0.13947524024110314
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.12289122084107594
  Tree 94 (weight 0.1):
    If (feature 6 <= 4.0)
     Predict: 0.11785650049644145
    Else (feature 6 > 4.0)
     If (feature 2 <= 7.0)
      Predict: -0.45759270568822835
     Else (feature 2 > 7.0)
      Predict: 0.33032979113507405
  Tree 95 (weight 0.1):
    If (feature 5 <= 17.0)
     If (feature 2 <= 7.0)
      Predict: 0.305333529673242
     Else (feature 2 > 7.0)
      Predict: -0.2699559779520363
    Else (feature 5 > 17.0)
     Predict: -0.12326900427506793
  Tree 96 (weight 0.1):
    If (feature 4 in {2.0,3.0,4.0})
     If (feature 7 in {2.0,4.0})
      Predict: -0.2082822352931695
     Else (feature 7 not in {2.0,4.0})
      Predict: 0.1344687038228447
    Else (feature 4 not in {2.0,3.0,4.0})
     Predict: 0.10426390938251325
  Tree 97 (weight 0.1):
    If (feature 7 in {0.0,2.0,3.0})
     If (feature 4 in {0.0,3.0,4.0})
      Predict: -0.24041237137909066
     Else (feature 4 not in {0.0,3.0,4.0})
      Predict: 0.10786460999909507
    Else (feature 7 not in {0.0,2.0,3.0})
     If (feature 4 in {1.0,2.0})
      Predict: -0.12345549505611093
     Else (feature 4 not in {1.0,2.0})
      Predict: 0.3042271274045207
  Tree 98 (weight 0.1):
    If (feature 7 in {0.0,3.0,4.0})
     If (feature 4 in {0.0,2.0,4.0})
      Predict: -0.3300305557432017
     Else (feature 4 not in {0.0,2.0,4.0})
      Predict: 0.11539664128561841
    Else (feature 7 not in {0.0,3.0,4.0})
     Predict: 0.18650654204571715
  Tree 99 (weight 0.1):
    If (feature 4 in {1.0,3.0})
     If (feature 1 <= 27.0)
      Predict: -0.17881873531148437
     Else (feature 1 > 27.0)
      Predict: 0.021947906677333283
    Else (feature 4 not in {1.0,3.0})
     Predict: 0.11104367501262459

 

相關文章