摘要:在模型原型開發階段,可能和比較適合在模型上線階段,可能和比較合適。線性回歸是最基礎的數據挖掘算法。本文對其不同語言的實現進行簡單介紹。源碼可采用庫進行線性回歸。一元線性回歸多元線性回歸關于作者丹追兵數據分析師一枚,編程語言和,使用。
前言
由于場景不同,數據挖掘適合的編程語言不同。在模型原型開發階段,可能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...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65145.html
小編寫這篇文章的主要目的,主要是給大家去做一個解答,解答的內容主要是關于Python pyecharts的一些案例,包括如何使用它去進行繪制一個相關的散點圖,怎么能夠快速的去進行繪制。就具體的內容,下面就給大家詳細解答下。 什么是散點圖? 散點圖是指在數理統計回歸分析中,數據點在直角坐標系平面上的分布圖,散點圖表示因變量隨自變量而變化的大致趨勢,由此趨勢可以選擇合適的函數進行經驗分布的擬合...
摘要:以用于檢測垃圾郵件的邏輯回歸模型為例。邏輯回歸的損失函數線性回歸的損失函數是平方損失。正則化在邏輯回歸建模中極其重要。 正則化:簡單性 查看以下泛化曲線,該曲線顯示的是訓練集和驗證集相對于訓練迭代次數的損失。 showImg(https://segmentfault.com/img/bVbahiL?w=750&h=322);上圖顯示的是某個模型的訓練損失逐漸減少,但驗證損失最終增加。換...
閱讀 2574·2021-11-18 10:02
閱讀 1713·2021-09-30 10:00
閱讀 5310·2021-09-22 15:27
閱讀 1204·2019-08-30 15:54
閱讀 3671·2019-08-29 11:13
閱讀 2945·2019-08-29 11:05
閱讀 3319·2019-08-29 11:01
閱讀 569·2019-08-26 13:52