2015-09-02 109 views
0

最近我一直試圖利用Spark做二進制分類。我在編寫Python和爲了使用星火SVM,我使用下面的包:Scala vs Python中的Apache SPARK SVM

from pyspark.mllib.classification import SVMWithSGD 

看着this link我意識到,雖然它的Python版本返回標籤SVM.predict的斯卡拉版本返回得分。由於我想使用以下公式計算AUROC:

from pyspark.mllib.evaluation import BinaryClassificationMetrics 

我確實需要分數而不是測試樣本的標籤。閱讀火花官方文檔不幸的是,前面提到的python版本只返回標籤。如果我錯了,請糾正我,或者幫我解決這個問題(如果你知道有任何其他包或什麼的話)。

感謝

+0

這是正確的,但是問題是什麼? – eliasah

+0

@eliasah python spark svm中的任何方法,它返回分數而不是標籤? – ahajib

+0

沒有。你必須自己調整它。您也可以編寫自己的評估課程。這就是我所做的,因爲即使在Scala中它們仍然不可用。 – eliasah

回答

3

由於@eliasah指出可以擴展SVMModel添加AA函數返回你在找什麼:

def predictRaw(self, x): 
    """ 
    Predict values for a single data point or an RDD of points 
    using the model trained. 
    """ 
    if isinstance(x, RDD): 
     return x.map(lambda v: self.predict(v)) 

    x = _convert_to_vector(x) 
    margin = self.weights.dot(x) + self.intercept 
    return margin 

我就去實現參數清算,所以你可以做到這一點就像Scala API一樣,它似乎已經可以爲你工作,只需在模型上調用clearThreshold,並預測將切換到如Scala API那樣返回邊距。

+0

感謝您對霍爾頓的有用評論。我也會給你一個機會,讓你知道結果。 – ahajib

相關問題