當前位置: 首頁>>機器學習>>正文


pyspark GBDT分類和回歸示例

GBDT分類

pyspark使用類GradientBoostedTrees的trainClassifier函數進行GBDT分類模型訓練:

trainClassifier(data, categoricalFeaturesInfo, loss='logLoss', numIterations=100, learningRate=0.1, maxDepth=3, maxBins=32)

trainClassifier參數說明

  • data – 訓練數據集:LabeledPoint的RDD。標簽取值{0,1}。
  • categoricalFeaturesInfo – 存儲類別特征的Map。條目(n – > k)表示特征n對應k個類別,類別由{0,1,…,k-1}索引。
  • loss – 梯度提升中用到的損失函數。支持的值:“logLoss”,“minimumSquaresError”,“minimumAbsoluteError”。 (默認值:“logLoss”)
  • numIterations – 迭代次數。 (默認值:100)
  • learningRate – 學習率。學習率應在間隔(0,1)之間(默認值:0.1)
  • maxDepth – 樹的最大深度(例如深度0表示1個葉節點,深度1表示1個內部節點+ 2個葉節點)。 (默認值:3)
  • maxBins – 用於分割特征的最大bin數量。 DecisionTree需要maxBins> = max類別。 (默認值:32)
  • 返回值:GradientBoostedTreesModel 可用於預測。

建立GBDT分類模型的示例

>>> from pyspark.mllib.regression import LabeledPoint
>>> from pyspark.mllib.tree import GradientBoostedTrees
>>>
>>> data = [
...     LabeledPoint(0.0, [0.0]),
...     LabeledPoint(0.0, [1.0]),
...     LabeledPoint(1.0, [2.0]),
...     LabeledPoint(1.0, [3.0])
... ]
>>>
>>> model = GradientBoostedTrees.trainClassifier(sc.parallelize(data), {}, numIterations=10)
>>> model.numTrees()
10
>>> model.totalNumNodes()
30
>>> print(model)  # it already has newline
TreeEnsembleModel classifier with 10 trees  ###使用10棵樹的樹集成分類模型

>>> model.predict([2.0])
1.0
>>> model.predict([0.0])
0.0
>>> rdd = sc.parallelize([[2.0], [0.0]])
>>> model.predict(rdd).collect()
[1.0, 0.0]

GBDT回歸

pyspark使用類GradientBoostedTrees的trainRegressor函數進行GDBT回歸模型訓練:

trainRegressor(data, categoricalFeaturesInfo, loss='leastSquaresError', numIterations=100, learningRate=0.1, maxDepth=3, maxBins=32)

trainRegressor參數說明

  • data – 訓練數據集:LabeledPoint的RDD。標簽取值{0,1}。
  • categoricalFeaturesInfo – 存儲類別特征的Map。條目(n – > k)表示特征n對應k個類別,類別由{0,1,…,k-1}索引。
  • loss – 損失函數。支持的值:“logLoss”,“minimumSquaresError”,“minimumAbsoluteError”。 (默認值:“leastSquaresError”)
  • numIterations – 提升次數。 (默認值:100)
  • learningRate – 學習率。學習率應在間隔(0,1)之間(默認值:0.1)
  • maxDepth – 樹的最大深度(例如深度0表示1個葉節點,深度1表示1個內部節點+ 2個葉節點)。 (默認值:3)
  • maxBins – 用於分裂特征的最大bin數量。 DecisionTree需要maxBins> = max類別。 (默認值:32)
  • 返回值:GradientBoostedTreesModel可用於預測。

建立GBDT回歸模型的示例

>>> from pyspark.mllib.regression import LabeledPoint
>>> from pyspark.mllib.tree import GradientBoostedTrees
>>> from pyspark.mllib.linalg import SparseVector
>>>
>>> sparse_data = [
...     LabeledPoint(0.0, SparseVector(2, {0: 1.0})),
...     LabeledPoint(1.0, SparseVector(2, {1: 1.0})),
...     LabeledPoint(0.0, SparseVector(2, {0: 1.0})),
...     LabeledPoint(1.0, SparseVector(2, {1: 2.0}))
... ]
>>>
>>> data = sc.parallelize(sparse_data)
>>> model = GradientBoostedTrees.trainRegressor(data, {}, numIterations=10)
>>> model.numTrees()
10
>>> model.totalNumNodes()
12
>>> model.predict(SparseVector(2, {1: 1.0}))
1.0
>>> model.predict(SparseVector(2, {0: 1.0}))
0.0
>>> rdd = sc.parallelize([[0.0, 1.0], [1.0, 0.0]])
>>> model.predict(rdd).collect()
[1.0, 0.0]

pyspark GBDT的最新介紹參考:GradientBoostedTrees

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/3386.html,未經允許,請勿轉載。