Pyspark:使用ml算法中的数据帧

时间:2016-11-28 07:11:55

标签: python pyspark spark-dataframe apache-spark-mllib

据我所知,为了使用带有数据帧的ml.clustering Kmeans算法(实际上任何ml算法?),我需要将我的数据帧设置为某种形状:(id,vector [])或类似的东西。如何应用正确的转换将常规表(存储在df中)转换为所需的结构? 这是我的df:

from pyspark import SparkConf
from pyspark import SparkContext


conf = SparkConf()
sc = SparkContext(conf=conf)
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
#-----------------------------
#creating DF:
l = [('user1', 2,1,4),('user2',3,5,6)]
temp_df = spark.createDataFrame(l)
temp_df.show()

+-----+---+---+---+
|   _1| _2| _3| _4|
+-----+---+---+---+
|user1|  2|  1|  4|
|user2|  3|  5|  6|
+-----+---+---+---+

我想用:

from pyspark.ml.clustering import KMeans
kmean = KMeans().setK(2).setSeed(1)
model = kmean.fit(temp_df)

我得到:IllegalArgumentException:u'Field“features”不存在。'

谢谢,

1 个答案:

答案 0 :(得分:5)

KMeans需要vector类型的输入列,如果没有另外配置,则应该命名为features。您应该使用VectorAssembler来组合这些功能。

请咨询: