簡體   English   中英

多類分類,使用 Spark 在 Scala 中更好地顯示原始預測

[英]Multiclass classification, show raw predictions better in Scala with Spark

使用 Iris 數據集(LogisticRegressionWithLBFGS(),多類分類)。 我將數據提取到 rdd 中,轉換為 Dataframe,對其進行了一些整理。 在鳶尾植物類/標簽字段上創建了一個標簽索引。 創建了其他字段的特征向量。 獲取 dataframe 的這兩個字段並轉換為 labelpoint rdd 實例,我可以將數據輸入 LogisticRegressionWithLBFGS()。

這是一些預測器代碼:

val model = new LogisticRegressionWithLBFGS()
  .setNumClasses(10)
  .setIntercept(true)
  .setValidateData(true)
  .run(training)

分數和標簽:

val scoreAndLabels_ofTrain = training.map {
  point =>
    val score = model.predict(point.features)
    (score, point.label)
}

我想看看預測

scoreAndLabels_ofTrain.take(200).foreach(println)

唯一的問題是,我幾乎從書中得到了這個例子。 我很希望看到一個數據集,它顯示了特征列、預測的數字是什么、它給出的概率分數等我想如果我想看的話,我需要對 labelindex 進行轉換它們代表的字符串數據。

如何獲得更好看的表格數據,盡可能接近原始數據集,並針對它們進行預測? 我想我在這里的某個地方錯過了一個技巧。

上面的 output 看起來像:

(2.0,2.0)
(2.0,2.0)
(2.0,2.0)
(2.0,2.0)
(2.0,2.0)
...

這甚至意味着什么? 不知道如何讀取/解釋數據 對於第一行,是不是說它預測“2.0”,而實際的 label 是“2.0”? 我理解對了嗎?

是的,當您將 map 應用於輸入數據集並對每個元素進行預測時,您所擁有的是RDD[(Double, Double)]形式的 (Label,Prediction)。 但是,您使用的是 mlib LR 實現。 您可以直接使用 Dataframe 實現。 看看這個例子 擬合 function 優化 model 並返回LogisticRagressionModel 將轉換方法應用於您的輸入 Dataframe 並且將添加一個帶有預測的新列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM