pyspark 回归

9 篇文章 0 订阅
1 篇文章 0 订阅
%livy.pyspark

from pyspark.mllib.regression import LabeledPoint

from pyspark.mllib.regression import LinearRegressionWithSGD

data = [LabeledPoint(float(i[0]), [float(i[1])]) for i in vddf.collect()]

lrm =LinearRegressionWithSGD.train(sc.parallelize(data),step=0.00001,iterations=10000,convergenceTol=0.00001,intercept=True)

print(lrm.weights)

print(lrm.intercept)


vddf: dataframe数据


LabeledPoint: 格式标准化

sc.parallelize(data): 转RDD数据格式

step: 步长

iterations:迭代次数

convergenceTol: 停止条件

intercept: 偏移量


LinearRegressionWithSGD很蛋疼,看源码用的是随机梯度下降,精度特别差,如果是数据源带偏移量,该偏移量大小对拟合结果影响很大,不应该出现的情况。


如果对精度要求比较高的话,可以自己写段最小二乘的代码:

import numpy as np  
import  pandas  as  pd  
test=pd.read_csv("C:\\Users\\Administrator\\Desktop\\iris.csv")  
ols_matrix_x=np.matrix(test.iloc[:,2:4],dtype=np.float64)  
ols_matrix_y=np.matrix(test.iloc[:,1],dtype=np.float64).T  
b=(ols_matrix_x.T*ols_matrix_x).I*ols_matrix_x.T*ols_matrix_y  
print u"参数项矩阵为{0}".format(b)  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值