[ 
https://issues.apache.org/jira/browse/FLINK-2157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14618476#comment-14618476
 ] 

ASF GitHub Bot commented on FLINK-2157:
---------------------------------------

Github user thvasilo commented on a diff in the pull request:

    https://github.com/apache/flink/pull/871#discussion_r34139297
  
    --- Diff: 
flink-staging/flink-ml/src/main/scala/org/apache/flink/ml/pipeline/Predictor.scala
 ---
    @@ -172,9 +198,42 @@ object Predictor {
           }
         }
       }
    +
    +  /** [[EvaluateDataSetOperation]] which takes a [[PredictOperation]] to 
calculate a tuple
    +    * of true label value and predicted label value, when provided with a 
DataSet of
    +    * [[LabeledVector]].
    +    *
    +    * @param predictOperation An implicit PredictOperation that takes a 
Flink Vector and returns
    +    *                         a Double
    +    * @tparam Instance The [[Predictor]] instance that calls the function
    +    * @tparam Model The model that the calling [[Predictor]] uses for 
predictions
    +    * @return An EvaluateDataSetOperation for LabeledVector
    +    */
    +  implicit def LabeledVectorEvaluateDataSetOperation[
    +  Instance <: Predictor[Instance],
    +  Model](
    +      implicit predictOperation: PredictOperation[Instance, Model, 
FlinkVector, Double])
    +    : EvaluateDataSetOperation[Instance, LabeledVector, Double] = {
    +    new EvaluateDataSetOperation[Instance, LabeledVector, Double] {
    +      override def evaluateDataSet(
    +          instance: Instance,
    +          evaluateParameters: ParameterMap,
    +          testing: DataSet[LabeledVector])
    +      : DataSet[(Double,  Double)] = {
    --- End diff --
    
    I think I fixed this and the above, does it look right like this?
    
    ```scala
    implicit def LabeledVectorEvaluateDataSetOperation[Instance <: 
Predictor[Instance],Model]
        (implicit predictOperation: PredictOperation[Instance, Model, 
FlinkVector, Double])
      : EvaluateDataSetOperation[Instance, LabeledVector, Double] = {
      new EvaluateDataSetOperation[Instance, LabeledVector, Double] {
        override def evaluateDataSet(
            instance: Instance,
            evaluateParameters: ParameterMap,
            testing: DataSet[LabeledVector])
          : DataSet[(Double,  Double)] = {
          val resultingParameters = instance.parameters ++ evaluateParameters
          val model = predictOperation.getModel(instance, resultingParameters)
    
          testing.mapWithBcVariable(model){
            (element, model) => {
              (element.label, predictOperation.predict(element.vector, model))
            }
          }
        }
      }
    }
    ```


> Create evaluation framework for ML library
> ------------------------------------------
>
>                 Key: FLINK-2157
>                 URL: https://issues.apache.org/jira/browse/FLINK-2157
>             Project: Flink
>          Issue Type: New Feature
>          Components: Machine Learning Library
>            Reporter: Till Rohrmann
>            Assignee: Theodore Vasiloudis
>              Labels: ML
>             Fix For: 0.10
>
>
> Currently, FlinkML lacks means to evaluate the performance of trained models. 
> It would be great to add some {{Evaluators}} which can calculate some score 
> based on the information about true and predicted labels. This could also be 
> used for the cross validation to choose the right hyper parameters.
> Possible scores could be F score [1], zero-one-loss score, etc.
> Resources
> [1] [http://en.wikipedia.org/wiki/F1_score]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to