【问题标题】:How to use K-means with parquet file如何在镶木地板文件中使用 K-means
【发布时间】:2020-01-17 10:05:58
【问题描述】:

我想学习如何在 Spark 上使用 K-Means 算法。 我有一个镶木地板文件,我想用 k-means 分析它。如何告诉 spark 仅分析特定列?如何从行中删除空值?有人可以编写一个简单的代码来说明如何做到这一点吗? 谢谢

【问题讨论】:

  • 这是4题合1! :) 阅读镶木地板,运行 k-means,仅选择某些列,并删除空值...如果您遇到任何问题,您至少应该先尝试,然后再提出更具体的问题

标签: scala apache-spark k-means parquet


【解决方案1】:

如果您想要特定的列,只需在数据框上进行选择,然后使用 VectorAssembler。 KMeans 需要向量列作为输入特征。 您可以使用 DataFrameNaFunctions 删除、填充或替换空值。

请看下面的例子:

val dataset= spark.range(10)
  .select('id.cast("double").as("c1"),lit('id/2).as("c2").cast("double"))

val assembler = new VectorAssembler()
  .setInputCols(dataset.columns)
  .setOutputCol("myFeatures")
val output = assembler.transform(dataset)

// Trains a k-means model.
val kmeans = new KMeans().setK(2).setSeed(1L).setFeaturesCol("myFeatures")
val model = kmeans.fit(output)

// Make predictions
val predictions = model.transform(output)

predictions.show()

+---+---+----------+----------+
| c1| c2|myFeatures|prediction|
+---+---+----------+----------+
|0.0|0.0| (2,[],[])|         1|
|1.0|0.5| [1.0,0.5]|         1|
|2.0|1.0| [2.0,1.0]|         1|
|3.0|1.5| [3.0,1.5]|         1|
|4.0|2.0| [4.0,2.0]|         1|
|5.0|2.5| [5.0,2.5]|         0|
|6.0|3.0| [6.0,3.0]|         0|
|7.0|3.5| [7.0,3.5]|         0|
|8.0|4.0| [8.0,4.0]|         0|
|9.0|4.5| [9.0,4.5]|         0|
+---+---+----------+----------+

【讨论】:

  • 我阅读了镶木地板,但是当我尝试使用 VectorAssembler 时,它给了我一个错误。 val dataset = file.select("_country", "latitude", "longitude", "name").drop() val assembler = new VectorAssembler() .setInputCols(Array("latitude", "longitude")) .setOutputCol("location")Caused by: org.apache.spark.SparkException: Failed to execute user defined function($anonfun$3: (struct<latitude:double,longitude:double>) => vector)
  • idk 空 .drop() 在做什么?试试这个:dataset = file.select("latitude", "longitude") val assembler = new VectorAssembler() .setInputCols(dataset.columns) .setOutputCol("location")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 2017-06-25
  • 2019-09-23
  • 2021-09-14
  • 2018-08-13
  • 2017-06-20
相关资源
最近更新 更多