摘要:在模型原型开发阶段,可能和比较适合在模型上线阶段,可能和比较合适。线性回归是最基础的数据挖掘算法。本文对其不同语言的实现进行简单介绍。源码可采用库进行线性回归。一元线性回归多元线性回归关于作者丹追兵数据分析师一枚,编程语言和,使用。
前言
由于场景不同,数据挖掘适合的编程语言不同。在模型原型开发阶段,可能R和python比较适合;在模型上线阶段,可能Java和python比较合适。而不同的线上框架又支持不同的语言,比如JStorm只能用Java搞,而Spark则比较友好,同时支持Java和python两种语言。同样的情况也发生下原型开发阶段:如果是单机环境,R和python都很不错;但假如数据较大要放到诸如阿里云ODPS分布式平台,则没法用R,只能用python,而且python只能用numpy库,没法用sklearn。因此,算法工程师需要具备使用不同编程语言实现同一算法的能力。
线性回归是最基础的数据挖掘算法。本文对其不同语言的实现进行简单介绍。
python numpyimport 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方法,相当于将一个函数封装为对象的一个方法,将面向过程转化为面向对象的编程模式。源码
Rx <- 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...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/65145.html
小编写这篇文章的主要目的,主要是给大家去做一个解答,解答的内容主要是关于Python pyecharts的一些案例,包括如何使用它去进行绘制一个相关的散点图,怎么能够快速的去进行绘制。就具体的内容,下面就给大家详细解答下。 什么是散点图? 散点图是指在数理统计回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,由此趋势可以选择合适的函数进行经验分布的拟合...
摘要:以用于检测垃圾邮件的逻辑回归模型为例。逻辑回归的损失函数线性回归的损失函数是平方损失。正则化在逻辑回归建模中极其重要。 正则化:简单性 查看以下泛化曲线,该曲线显示的是训练集和验证集相对于训练迭代次数的损失。 showImg(https://segmentfault.com/img/bVbahiL?w=750&h=322);上图显示的是某个模型的训练损失逐渐减少,但验证损失最终增加。换...
阅读 2531·2021-11-18 10:02
阅读 1685·2021-09-30 10:00
阅读 5206·2021-09-22 15:27
阅读 1162·2019-08-30 15:54
阅读 3642·2019-08-29 11:13
阅读 2911·2019-08-29 11:05
阅读 3272·2019-08-29 11:01
阅读 521·2019-08-26 13:52