我明白,要使用ml.cluster.clustering kmeans算法(实际上是任何ML算法?),我需要使用数据框架,我需要将我的dataframe具有一定的形状:(id,vector [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"功能"不存在。'
谢谢,
KMeans
需要vector
类型的输入列,该列应该(如果未另有配置)命名为features
。您应该使用VectorAssembler
结合功能。
请咨询:
- kmeans docs
- vectorAssembler文档