摘要:在模型原型開(kāi)發(fā)階段,可能和比較適合在模型上線階段,可能和比較合適。線性回歸是最基礎(chǔ)的數(shù)據(jù)挖掘算法。本文對(duì)其不同語(yǔ)言的實(shí)現(xiàn)進(jìn)行簡(jiǎn)單介紹。源碼可采用庫(kù)進(jìn)行線性回歸。一元線性回歸多元線性回歸關(guān)于作者丹追兵數(shù)據(jù)分析師一枚,編程語(yǔ)言和,使用。
前言
由于場(chǎng)景不同,數(shù)據(jù)挖掘適合的編程語(yǔ)言不同。在模型原型開(kāi)發(fā)階段,可能R和python比較適合;在模型上線階段,可能Java和python比較合適。而不同的線上框架又支持不同的語(yǔ)言,比如JStorm只能用Java搞,而Spark則比較友好,同時(shí)支持Java和python兩種語(yǔ)言。同樣的情況也發(fā)生下原型開(kāi)發(fā)階段:如果是單機(jī)環(huán)境,R和python都很不錯(cuò);但假如數(shù)據(jù)較大要放到諸如阿里云ODPS分布式平臺(tái),則沒(méi)法用R,只能用python,而且python只能用numpy庫(kù),沒(méi)法用sklearn。因此,算法工程師需要具備使用不同編程語(yǔ)言實(shí)現(xiàn)同一算法的能力。
線性回歸是最基礎(chǔ)的數(shù)據(jù)挖掘算法。本文對(duì)其不同語(yǔ)言的實(shí)現(xiàn)進(jìn)行簡(jiǎn)單介紹。
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方法,底層是調(diào)用了numpy的linalg.lstsq方法,相當(dāng)于將一個(gè)函數(shù)封裝為對(duì)象的一個(gè)方法,將面向過(guò)程轉(zhuǎn)化為面向?qū)ο蟮木幊棠J?。源碼
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庫(kù)進(jìn)行線性回歸。
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();
關(guān)于作者:丹追兵:數(shù)據(jù)分析師一枚,編程語(yǔ)言python和R,使用Spark、Hadoop、Storm、ODPS。本文出自丹追兵的pytrafficR專(zhuān)欄,轉(zhuǎn)載請(qǐng)注明作者與出處:https://segmentfault.com/blog...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65145.html
小編寫(xiě)這篇文章的主要目的,主要是給大家去做一個(gè)解答,解答的內(nèi)容主要是關(guān)于Python pyecharts的一些案例,包括如何使用它去進(jìn)行繪制一個(gè)相關(guān)的散點(diǎn)圖,怎么能夠快速的去進(jìn)行繪制。就具體的內(nèi)容,下面就給大家詳細(xì)解答下?! ∈裁词巧Ⅻc(diǎn)圖? 散點(diǎn)圖是指在數(shù)理統(tǒng)計(jì)回歸分析中,數(shù)據(jù)點(diǎn)在直角坐標(biāo)系平面上的分布圖,散點(diǎn)圖表示因變量隨自變量而變化的大致趨勢(shì),由此趨勢(shì)可以選擇合適的函數(shù)進(jìn)行經(jīng)驗(yàn)分布的擬合...
摘要:以用于檢測(cè)垃圾郵件的邏輯回歸模型為例。邏輯回歸的損失函數(shù)線性回歸的損失函數(shù)是平方損失。正則化在邏輯回歸建模中極其重要。 正則化:簡(jiǎn)單性 查看以下泛化曲線,該曲線顯示的是訓(xùn)練集和驗(yàn)證集相對(duì)于訓(xùn)練迭代次數(shù)的損失。 showImg(https://segmentfault.com/img/bVbahiL?w=750&h=322);上圖顯示的是某個(gè)模型的訓(xùn)練損失逐漸減少,但驗(yàn)證損失最終增加。換...
閱讀 2589·2021-11-18 10:02
閱讀 1720·2021-09-30 10:00
閱讀 5351·2021-09-22 15:27
閱讀 1223·2019-08-30 15:54
閱讀 3684·2019-08-29 11:13
閱讀 2959·2019-08-29 11:05
閱讀 3336·2019-08-29 11:01
閱讀 581·2019-08-26 13:52