[英]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.