坐标矩阵 Apache Spark 上的 Ax = b 求解器
Posted
技术标签:
【中文标题】坐标矩阵 Apache Spark 上的 Ax = b 求解器【英文标题】:Ax = b solver on coordinate matrix Apache Spark 【发布时间】:2017-12-26 18:15:55 【问题描述】:如何使用 Apache spark 解决 Ax = b 问题。我的输入是一个坐标矩阵:
import numpy as np
import scipy
from scipy import sparse
row = np.array([0, 3, 1, 0])
col = np.array([0, 3, 1, 2])
data = np.array([4, 5, 7, 9])
A = sparse.coo_matrix((data, (row, col)), shape=(4, 4))
#take the first column of A
b = sparse.coo_matrix((data, (row, 1)), shape=(4, 1))
#Solve Ax = b
np.linalg.solve(A,b)
现在我想使用 Apache Spark 框架的 python 库解决 Ax=b 中的 x,因此解决方案应该是 [1,0,0,0],因为 b 是 A 的第一列
以下是 Apache Spark 线性回归。现在,我该如何设置输入为坐标矩阵(A)和坐标向量(b)的问题?
from pyspark.ml.regression import LinearRegression
# Load training data
training = spark.read.format("libsvm")\
.load("data/mllib/sample_linear_regression_data.txt")
lr = LinearRegression(maxIter=10, regParam=0.3, elasticNetParam=0.8)
# Fit the model
lrModel = lr.fit(training)
# Print the coefficients and intercept for linear regression
print("Coefficients: %s" % str(lrModel.coefficients))
print("Intercept: %s" % str(lrModel.intercept))
# Summarize the model over the training set and print out some metrics
trainingSummary = lrModel.summary
print("numIterations: %d" % trainingSummary.totalIterations)
print("objectiveHistory: %s" % str(trainingSummary.objectiveHistory))
trainingSummary.residuals.show()
print("RMSE: %f" % trainingSummary.rootMeanSquaredError)
print("r2: %f" % trainingSummary.r2)
【问题讨论】:
【参考方案1】:如何使用 Apache spark 解决 Ax = b 问题。
直接(分析)你不能。 Spark 不提供线性代数库。
间接 - 使用pyspark.ml.regression
来近似解决 OLS 问题。可以参考:
有关预期输入和所需步骤的详细信息。
【讨论】:
以上是关于坐标矩阵 Apache Spark 上的 Ax = b 求解器的主要内容,如果未能解决你的问题,请参考以下文章
Spark Distributed matrix 分布式矩阵
代数之美奇异值分解(SVD)及其在线性最小二乘解Ax=b上的应用
代数之美奇异值分解(SVD)及其在线性最小二乘解Ax=b上的应用