国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

線性回歸:python & R & Java

iOS122 / 2094人閱讀

摘要:在模型原型開發階段,可能和比較適合在模型上線階段,可能和比較合適。線性回歸是最基礎的數據挖掘算法。本文對其不同語言的實現進行簡單介紹。源碼可采用庫進行線性回歸。一元線性回歸多元線性回歸關于作者丹追兵數據分析師一枚,編程語言和,使用。

前言

由于場景不同,數據挖掘適合的編程語言不同。在模型原型開發階段,可能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...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65145.html

相關文章

  • 如何使用Python pyecharts繪制散點圖

      小編寫這篇文章的主要目的,主要是給大家去做一個解答,解答的內容主要是關于Python pyecharts的一些案例,包括如何使用它去進行繪制一個相關的散點圖,怎么能夠快速的去進行繪制。就具體的內容,下面就給大家詳細解答下。  什么是散點圖?  散點圖是指在數理統計回歸分析中,數據點在直角坐標系平面上的分布圖,散點圖表示因變量隨自變量而變化的大致趨勢,由此趨勢可以選擇合適的函數進行經驗分布的擬合...

    89542767 評論0 收藏0
  • 正則化&amp;&amp;邏輯回歸

    摘要:以用于檢測垃圾郵件的邏輯回歸模型為例。邏輯回歸的損失函數線性回歸的損失函數是平方損失。正則化在邏輯回歸建模中極其重要。 正則化:簡單性 查看以下泛化曲線,該曲線顯示的是訓練集和驗證集相對于訓練迭代次數的損失。 showImg(https://segmentfault.com/img/bVbahiL?w=750&h=322);上圖顯示的是某個模型的訓練損失逐漸減少,但驗證損失最終增加。換...

    xushaojieaaa 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<