import fregata.spark.data.LibSvmReaderimport fregata.spark.metrics.classification.{AreaUnderRoc, Accuracy}import fregata.spark.model.classification.LogisticRegressionimport org.apache.spark.{SparkConf, SparkContext}/** * Created by ALL on 2016/12/8. */object FregataFirstTest { def main(args: Array[String]): Unit = { val conf=new SparkConf().setAppName("test").setMaster("local") val sc=new SparkContext(conf) //通過Fregata的API讀取資料 val (_,trainData)=LibSvmReader.read(sc,"/fregataData/a9a",123) val (_,testData)=LibSvmReader.read(sc,"/fregataData/a9a.t",123) //使用訓練資料構建羅吉斯迴歸模型 val model=LogisticRegression.run(trainData) //使用測試資料預測類別 val pd=model.classPredict(testData) //通過AUC或者其他指標來評估模型 val acc=Accuracy.of( pd.map{ case ((x,l),(p,c))=> c -> l }) val auc=AreaUnderRoc.of( pd.map{ case ((x,l),(p,c))=> p -> l }) val loss = fregata.spark.loss.log(pd.map{ case ((x,l),(p,c)) => if( l == 1d ) { (l,c,p) }else{ ( l , c , 1-p ) } }) println( s"AreaUnderRoc = $auc ") println( s"Accuracy = $acc ") println( s"LogLoss = $loss ") }}Fregata訓練資料的API需要資料類型為RDD[(fregata.Vector,fregata.Num)],對於預測的API需要和訓練資料類型相同或者是RDD[fregata.Vector]
的資料格式