Pyspark:在机器学习算法中使用数据框

Posted

技术标签:

【中文标题】Pyspark:在机器学习算法中使用数据框【英文标题】:Pyspark: Using dataframe in ml algorithms 【发布时间】:2016-11-28 07:11:55 【问题描述】:

我了解,为了将 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" does not exist.'

谢谢,

【问题讨论】:

【参考方案1】:

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

请咨询:

KMeans docs VectorAssembler docs

【讨论】:

以上是关于Pyspark:在机器学习算法中使用数据框的主要内容,如果未能解决你的问题,请参考以下文章

机器学习-算法学习随记

用 PySpark ML 构建机器学习模型

Qubole 中宽数据的 PySpark 机器学习

PySpark数据分析基础:pyspark.mllib.regression机器学习回归核心类详解+代码详解

PySpark数据分析基础:pyspark.mllib.regression机器学习回归核心类详解+代码详解

机器学习 - 开发环境安装pycharm + pyspark + spark集成篇