我尝试用flink-ml svm实现做一些二进制分类.当我评估分类时,我在训练数据集上得到了大约85%的错误率.我绘制了3D数据,看起来你可以用超平面很好地分离数据.
当我试图从svm中获取权重向量时,我只看到了获取权重向量而没有截取超平面的选项.所以只是超平面通过(0,0,0).
我没有任何线索,错误可能是什么,并欣赏每一个线索.
val env = ExecutionEnvironment.getExecutionEnvironment
val input: DataSet[(Int, Int, Boolean, Double, Double, Double)] = env.readCsvFile(filepathTraining, ignoreFirstLine = true, fieldDelimiter = ";")
val inputLV = input.map(
t => { LabeledVector({if(t._3) 1.0 else -1.0}, DenseVector(Array(t._4, t._5, t._6)))}
)
val trainTestDataSet = Splitter.trainTestSplit(inputLV, 0.8, precise = true, seed = 100)
val trainLV = trainTestDataSet.training
val testLV = trainTestDataSet.testing
val svm = SVM()
svm.fit(trainLV)
val testVD = testLV.map(lv => (lv.vector, lv.label))
val evalSet = svm.evaluate(testVD)
// groups the data in false …Run Code Online (Sandbox Code Playgroud) 最近很少看到关于 FlinkML 的讨论——它是死了还是死了?
最近有哪些有趣的现场使用示例?
我正在为电影做一个推荐系统,使用这里提供的MovieLens数据集:http: //grouplens.org/datasets/movielens/
为了计算这个推荐系统,我在scala中使用了Flink的ML库,特别是ALS算法(org.apache.flink.ml.recommendation.ALS).
我首先将电影的评级映射为a DataSet[(Int, Int, Double)]然后创建a trainingSet和a testSet(参见下面的代码).
我的问题是当我使用ALS.fit整个数据集的函数(所有评级)时没有错误,但是如果我只删除一个评级,则fit函数不再起作用,我不明白为什么.
你有什么想法?:)
使用的代码:
Rating.scala
case class Rating(userId: Int, movieId: Int, rating: Double)
Run Code Online (Sandbox Code Playgroud)
PreProcessing.scala
object PreProcessing {
def getRatings(env : ExecutionEnvironment, ratingsPath : String): DataSet[Rating] = {
env.readCsvFile[(Int, Int, Double)](
ratingsPath, ignoreFirstLine = true,
includedFields = Array(0,1,2)).map{r => new Rating(r._1, r._2, r._3)}
}
Run Code Online (Sandbox Code Playgroud)
Processing.scala
object Processing {
private val ratingsPath: String = "Path_to_ratings.csv"
def main(args: Array[String]) {
val env = ExecutionEnvironment.getExecutionEnvironment
val ratings: …Run Code Online (Sandbox Code Playgroud) scala recommendation-engine indexoutofboundsexception apache-flink flinkml
我正在使用Apache Flink开发推荐系统.当我在IntelliJ中测试它时,实现正在运行,但我现在想要进入集群.我还构建了一个jar文件并在本地测试它,看看是否一切正常但我遇到了问题.
java.lang.NoClassDefFoundError:org/apache/flink/ml/common/FlinkMLTools $
我们可以看到,FlinkMLTools在运行jar时没有找到我的代码中使用的类.我使用Maven 3.3.3构建了这个jar,mvn clean install我正在使用Flink的0.9.0版本.
第一道
事实是我的全球项目包含其他项目(这个推荐人是子项目之一).这样,我必须mvn clean install在正确的项目的文件夹中启动,否则Maven总是构建一个其他项目的jar(我不明白为什么).所以我想知道是否有办法明确地说maven来构建一个全球项目的特定项目.实际上,也许路径FlinkMLTools包含在pom.xml全球项目文件中的链接中.
还有其他想法吗?
我正在为Flink运行示例多元线性回归(0.10-SNAPSHOT).我无法弄清楚如何提取权重(例如斜率和截距,beta0-beta1,你想要称之为什么).我不是斯卡拉的超级经验,这可能是我的问题的一半.
感谢任何人给予的任何帮助.
object Job {
def main(args: Array[String]) {
// set up the execution environment
val env = ExecutionEnvironment.getExecutionEnvironment
val survival = env.readCsvFile[(String, String, String, String)]("/home/danger/IdeaProjects/quickstart/docs/haberman.data")
val survivalLV = survival
.map{tuple =>
val list = tuple.productIterator.toList
val numList = list.map(_.asInstanceOf[String].toDouble)
LabeledVector(numList(3), DenseVector(numList.take(3).toArray))
}
val mlr = MultipleLinearRegression()
.setStepsize(1.0)
.setIterations(100)
.setConvergenceThreshold(0.001)
mlr.fit(survivalLV)
println(mlr.toString()) // This doesn't do anything productive...
println(mlr.weightsOption) // Neither does this.
}
}
Run Code Online (Sandbox Code Playgroud) scala machine-learning linear-regression apache-flink flinkml