2024-05-15 00:12:32 发布
网友
看着http://spark.apache.org/docs/latest/mllib-dimensionality-reduction.html。这些示例似乎只包含Java和Scala。
Spark MLlib是否支持Python的PCA分析?如果是,请给我举个例子。如果没有,如何将Spark与scikit结合起来学习?
尽管PySpark 1.5引入了分布式数据结构(pyspark.mllib.linalg.distributed),但看起来API相当有限,而且没有实现computePrincipalComponents方法。
pyspark.mllib.linalg.distributed
computePrincipalComponents
但是可以使用from pyspark.ml.feature.PCA或pyspark.mllib.feature.PCA。在第一种情况下,预期的输入是具有向量列的数据帧:
from pyspark.ml.feature.PCA
pyspark.mllib.feature.PCA
from pyspark.ml.feature import PCA as PCAml from pyspark.ml.linalg import Vectors # Pre 2.0 pyspark.mllib.linalg df = sqlContext.createDataFrame([ (Vectors.dense([1, 2, 0]),), (Vectors.dense([2, 0, 1]),), (Vectors.dense([0, 1, 0]),)], ("features", )) pca = PCAml(k=2, inputCol="features", outputCol="pca") model = pca.fit(df) transformed = model.transform(df)
在Spark 2.0或更高版本中,应该使用pyspark.ml.linalg.Vector代替pyspark.mllib.linalg.Vector。
pyspark.ml.linalg.Vector
pyspark.mllib.linalg.Vector
对于mllib版本,您需要RDD的Vector:
mllib
RDD
Vector
from pyspark.mllib.feature import PCA as PCAmllib rdd = sc.parallelize([ Vectors.dense([1, 2, 0]), Vectors.dense([2, 0, 1]), Vectors.dense([0, 1, 0])]) model = PCAmllib(2).fit(rdd) transformed = model.transform(rdd)
PySpark<;=1.4.1还不支持分布式数据结构,因此没有内置的方法来计算PCA。如果输入矩阵相对较薄,则可以以分布式方式计算协方差矩阵,收集结果并在驱动程序上局部执行特征分解。
操作顺序多少有点像下面的那个。分布式步骤后面跟着一个操作名,local后面跟着“*”和可选方法。
RDD[Vector]
numpy.ndarray
prallelize
reduce
map
map outer
reduce +
numpy.linalg.eigh
关于Sklearn。您可以使用NumPy(它已经在Mllib中使用)、SciPy、Scikit在本地对驱动程序或工作者使用,方法与通常相同。
Mllib
火花=1.5.0
尽管PySpark 1.5引入了分布式数据结构(
pyspark.mllib.linalg.distributed
),但看起来API相当有限,而且没有实现computePrincipalComponents
方法。但是可以使用
from pyspark.ml.feature.PCA
或pyspark.mllib.feature.PCA
。在第一种情况下,预期的输入是具有向量列的数据帧:在Spark 2.0或更高版本中,应该使用
pyspark.ml.linalg.Vector
代替pyspark.mllib.linalg.Vector
。对于
mllib
版本,您需要RDD
的Vector
:火花<;1.5.0
PySpark<;=1.4.1还不支持分布式数据结构,因此没有内置的方法来计算PCA。如果输入矩阵相对较薄,则可以以分布式方式计算协方差矩阵,收集结果并在驱动程序上局部执行特征分解。
操作顺序多少有点像下面的那个。分布式步骤后面跟着一个操作名,local后面跟着“*”和可选方法。
RDD[Vector]
,其中每个元素是来自输入矩阵的一行。您可以对每一行使用numpy.ndarray
(prallelize
)reduce
)map
)map outer
)reduce +
)numpy.linalg.eigh
)map
)关于Sklearn。您可以使用NumPy(它已经在
Mllib
中使用)、SciPy、Scikit在本地对驱动程序或工作者使用,方法与通常相同。相关问题 更多 >
编程相关推荐