2017-05-31 6 views
0

私はFlinkで複数線形回帰アルゴリズムを訓練し始めています。 私は素晴らしいですofficial documentationと次のとおりです。私はこのコードを開発するためにZeppelinを使用しています。Flink linearRegression:データを読み込む方法(Scala)

私はCSVファイルからデータをロードする場合:私はLIBSVMファイルからデータをロードする場合

//Read the file: 
val data = benv.readCsvFile[(Int, Double, Double, Double)]("/.../quake.csv") 
val mapped = data.map {x => new org.apache.flink.ml.common.LabeledVector (x._4, org.apache.flink.ml.math.DenseVector(x._1,x._2,x._3)) } 

//Data created: 
mapped: org.apache.flink.api.scala.DataSet[org.apache.flink.ml.common.LabeledVector] = [email protected] 
    LabeledVector(6.7, DenseVector(33.0, -52.26, 28.3)) 
    LabeledVector(5.8, DenseVector(36.0, 45.53, 150.93)) 
    LabeledVector(5.8, DenseVector(57.0, 41.85, 142.78)) 

//Predict with the model created: 
Predict with the model createdval predictions:DataSet[org.apache.flink.ml.common.LabeledVector] = mlr.predict(mapped) 

val testingDS: DataSet[(Vector, Double)] = MLUtils.readLibSVM(benv, "/home/borja/Desktop/bbb/quake.libsvm").map(x => (x.vector, x.label)) 

しかし、私はこのERRORました:

- >CSV:

res13: org.apache.flink.api.scala.DataSet[org.apache.flink.ml.common.LabeledVector] = [email protected] 
    <console>:89: error: type mismatch; 
    found : org.apache.flink.api.scala.DataSet[Any] 
    required: org.apache.flink.api.scala.DataSet[org.apache.flink.ml.common.LabeledVector] 
    Note: Any >: org.apache.flink.ml.common.LabeledVector, but class DataSet is invariant in type T. 
    You may wish to define T as -T instead. (SLS 4.5) 
    Error occurred in an application involving default arguments. 
      val predictions:DataSet[org.apache.flink.ml.common.LabeledVector] = mlr.predict(mapped) 

- >LIBSVM:

<console>:111: error: type Vector takes type parameters 
     val testingDS: DataSet[(Vector, Double)] = MLUtils.readLibSVM(benv, "/home/borja/Desktop/bbb/quake.libsvm").map(x => (x.vector, x.label)) 

[OK]を、ので、私は書いた:

新しいコード:

val testingDS: DataSet[(Vector[org.apache.flink.ml.math.Vector], Double)] = MLUtils.readLibSVM(benv, "/home/borja/Desktop/bbb/quake.libsvm").map(x => (x.vector, x.label)) 

新しいエラー:

<console>:111: error: type mismatch; 
found : org.apache.flink.ml.math.Vector 
required: scala.collection.immutable.Vector[org.apache.flink.ml.math.Vector] 
     val testingDS: DataSet[(Vector[org.apache.flink.ml.math.Vector], Double)] = MLUtils.readLibSVM(benv, "/home/borja/Desktop/bbb/quake.libsvm").map(x => (x.vector, x.label)) 

私は本当にあなたの助けに感謝します! :)

答えて

1

Scala Vectorクラスをインポートして使用しないでください。 Flink MLはそれ自身のVectorと一緒に出荷されます。これはうまくいくはずです:

val testingDS: DataSet[(org.apache.flink.ml.math.Vector, Double)] = MLUtils.readLibSVM(benv, "/home/borja/Desktop/bbb/quake.libsvm").map(x => (x.vector, x.label)) 
+0

ええ私はクラスをミックスしていましたが、私は自分の問題を解決できたので、**ありがとう! :)** – Borja

関連する問題