线性回归:python & R & Java

发布时间:2019-11-19 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了线性回归:python & R & Java脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

由于场景不同,数据挖掘适合的编程语言不同。在模型原型开发阶段,可能R和python比较适合;在模型上线阶段,可能Java和python比较合适。而不同的线上框架又支持不同的语言,比如JStorm只能用Java搞,而Spark则比较友好,同时支持Java和python两种语言。同样的情况也发生下原型开发阶段:如果是单机环境,R和python都很不错;但假如数据较大要放到诸如阿里ODPS分布式平台,则没法用R,只能用python,而且python只能用numpy库,没法用sklearn。因此,算法工程师需要具备使用不同编程语言实现同一算法的能力。

线性回归是最基础的数据挖掘算法。本文对其不同语言的实现进行简单介绍。

python

numpy

import numpy as np  x = np.array([0, 1, 2, 3]) y = np.array([-1, 0.2, 0.9, 2.1])  A = np.vstack([x, np.ones(len(x))]).T m, c = np.linalg.lstsq(A, y)[0] PRint(m, c)  import matplotlib.pyplot as plt plt.plot(x, y, 'o', label='Original data', markersize=10) plt.plot(x, m*x + c, 'r', label='FITted line') plt.legend() plt.show()

sklearn

From sklearn import linear_model clf = linear_model.LinearRegression() # linear_model.LinearRegression(fit_intercept=False) clf.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2]) clf.coef_

sklearn的linear_model的fit方法,底层是调用了numpy的linalg.lstsq方法,相当于将一个函数封装为对象的一个方法,将面向过程转化为面向对象的编程模式。源码

R

x <- c(0, 1, 2, 3) y <- c(-1, 0.2, 0.9, 2.1) df <- data.frame(x,y)  lr_model <- lm(y ~ x) # lm(y ~ x - 1) # without intercept summary(lr_model)  library(ggplot2) ggplot() + geom_point(aes(x=x, y=y), data=df) + geom_abline(slope=lr_model$coefficients[2], intercept=lr_model$coefficients[1])

Java

Java可采用apache Commons Math库进行线性回归。

Simple regression

一元线性回归

regression = new SimpleRegression(); // new SimpleRegression(false); // without intercept regression.addData(1d, 2d); regression.addData(3d, 3d); regression.addData(3d, 3d); // double[][] data = { { 1, 3 }, {2, 5 }, {3, 7 }, {4, 14 }, {5, 11 }}; // regression.addData(data);  System.out.println(regression.getIntercept()); System.out.println(regression.getSlope()); 

Multiple linear regression

多元线性回归

OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression(); double[] y = new double[]{11.0, 12.0, 13.0, 14.0, 15.0, 16.0}; double[][] x = new double[6][]; x[0] = new double[]{0, 0, 0, 0, 0}; x[1] = new double[]{2.0, 0, 0, 0, 0}; x[2] = new double[]{0, 3.0, 0, 0, 0}; x[3] = new double[]{0, 0, 4.0, 0, 0}; x[4] = new double[]{0, 0, 0, 5.0, 0}; x[5] = new double[]{0, 0, 0, 0, 6.0};           regression.newSampleData(y, x); double[] beta = regression.estiMATERegressionParameters();

关于作者:丹追兵:数据分析师一枚,编程语言python和R,使用Spark、Hadoop、Storm、ODPS。本文出自丹追兵的pytrafficR专栏,转载请注明作者与出处:https://segmentfault.com/blog...

脚本宝典总结

以上是脚本宝典为你收集整理的线性回归:python & R & Java全部内容,希望文章能够帮你解决线性回归:python & R & Java所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。