在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

8種用Python實現線性回歸的方法對比分析_哪個方法更好?

Hx ? 作者:工程師陳翠 ? 2018-06-28 09:53 ? 次閱讀

說到如何用Python執行線性回歸,大部分人會立刻想到用sklearn的linear_model,但事實是,Python至少有8種執行線性回歸的方法,sklearn并不是最高效的。

今天,讓我們來談談線性回歸。沒錯,作為數據科學界元老級的模型,線性回歸幾乎是所有數據科學家的入門必修課。拋開涉及大量數統的模型分析和檢驗不說,你真的就能熟練應用線性回歸了么?未必!

在這篇文章中,文摘菌將介紹8種用Python實現線性回歸的方法。了解了這8種方法,就能夠根據不同需求,靈活選取最為高效的方法實現線性回歸。

“寶刀不老”的線性回歸

時至今日,深度學習早已成為數據科學的新寵。即便往前推10年,SVM、boosting等算法也能在準確率上完爆線性回歸。

為什么我們還需要線性回歸呢?

一方面,線性回歸所能夠模擬的關系其實遠不止線性關系。線性回歸中的“線性”指的是系數的線性,而通過對特征的非線性變換,以及廣義線性模型的推廣,輸出和特征之間的函數關系可以是高度非線性的。另一方面,也是更為重要的一點,線性模型的易解釋性使得它在物理學、經濟學、商學等領域中占據了難以取代的地位。

那么,如何用Python來實現線性回歸呢?

由于機器學習庫scikit-learn的廣泛流行,常用的方法是從該庫中調用linear_model來擬合數據。雖然這可以提供機器學習的其他流水線特征(例如:數據歸一化,模型系數正則化,將線性模型傳遞到另一個下游模型)的其他優點,但是當一個數據分析師需要快速而簡便地確定回歸系數(和一些基本相關統計量)時,這通常不是最快速簡便的方法。

下面,我將介紹一些更快更簡潔的方法,但是它們所提供信息量和建模的靈活性不盡相同。

各種線性回歸方法的完整源碼都可以在文末的GitHub鏈接中找到。他們大多數都依賴于SciPy包。

SciPy是基于Python的Numpy擴展構建的數學算法和函數的集合。通過為用戶提供便于操作和可視化數據的高級命令和類,為交互式Python會話增加了強大的功能。

8種方法實現線性回歸

方法一:Scipy.polyfit( ) or numpy.polyfit( )

8種用Python實現線性回歸的方法對比分析_哪個方法更好?

這是一個最基本的最小二乘多項式擬合函數(least squares polynomial fit function),接受數據集和任何維度的多項式函數(由用戶指定),并返回一組使平方誤差最小的系數。這里給出函數的詳細描述。對于簡單的線性回歸來說,可以選擇1維函數。但是如果你想擬合更高維的模型,則可以從線性特征數據中構建多項式特征并擬合模型。

方法二:Stats.linregress( )

8種用Python實現線性回歸的方法對比分析_哪個方法更好?

這是一個高度專業化的線性回歸函數,可以在SciPy的統計模塊中找到。然而因為它僅被用來優化計算兩組測量數據的最小二乘回歸,所以其靈活性相當受限。因此,不能使用它進行廣義線性模型和多元回歸擬合。但是,由于其特殊性,它是簡單線性回歸中最快速的方法之一。除了擬合的系數和截距項之外,它還返回基本統計量,如R2系數和標準差。

方法三:Optimize.curve_fit( )

8種用Python實現線性回歸的方法對比分析_哪個方法更好?

這與Polyfit方法是一致的,但本質上更具一般性。這個強大的函數來自scipy.optimize模塊,可以通過最小二乘最小化將任意的用戶自定義函數擬合到數據集上。

對于簡單的線性回歸來說,可以只寫一個線性的mx + c函數并調用這個估計函數。不言而喻,它也適用于多元回歸,并返回最小二乘度量最小的函數參數數組以及協方差矩陣。

方法四:numpy.linalg.lstsq

8種用Python實現線性回歸的方法對比分析_哪個方法更好?

這是通過矩陣分解計算線性方程組的最小二乘解的基本方法。來自numpy包的簡便線性代數模塊。在該方法中,通過計算歐幾里德2-范數||b-ax||2最小化的向量x來求解等式ax = b。

該方程可能有無數解、唯一解或無解。如果a是方陣且滿秩,則x(四舍五入)是方程的“精確”解。

你可以使用這個方法做一元或多元線性回歸來得到計算的系數和殘差。一個小訣竅是,在調用函數之前必須在x數據后加一列1來計算截距項。這被證明是更快速地解決線性回歸問題的方法之一。

方法五:Statsmodels.OLS ( )

Statsmodels是一個小型的Python包,它為許多不同的統計模型估計提供了類和函數,還提供了用于統計測試和統計數據探索的類和函數。每個估計對應一個泛結果列表。可根據現有的統計包進行測試,從而確保統計結果的正確性。

對于線性回歸,可以使用該包中的OLS或一般最小二乘函數來獲得估計過程中的完整的統計信息。

一個需要牢記的小技巧是,必須手動給數據x添加一個常數來計算截距,否則默認情況下只會得到系數。以下是OLS模型的完整匯總結果的截圖。結果中與R或Julia等統計語言一樣具有豐富的內容。

8種用Python實現線性回歸的方法對比分析_哪個方法更好?

方法六和七:使用矩陣的逆求解析解

對于條件良好的線性回歸問題(其中,至少滿足數據點個數>特征數量),系數求解等價于存在一個簡單的閉式矩陣解,使得最小二乘最小化。由下式給出:

這里有兩個選擇:

(a)使用簡單的乘法求矩陣的逆

(b)首先計算x的Moore-Penrose廣義偽逆矩陣,然后與y取點積。由于第二個過程涉及奇異值分解(SVD),所以它比較慢,但是它可以很好地適用于沒有良好條件的數據集。

方法八:sklearn.linear_model.LinearRegression( )

這是大多數機器學習工程師和數據科學家使用的典型方法。當然,對于現實世界中的問題,它可能被交叉驗證和正則化的算法如Lasso回歸和Ridge回歸所取代,而不被過多使用,但是這些高級函數的核心正是這個模型本身。

八種方法效率比拼

作為一名數據科學家,應該一直尋找準確且快速的方法或函數來完成數據建模工作。如果模型本來就很慢,那么會對大數據集造成執行瓶頸。

一個可以用來確定可擴展性的好辦法是不斷增加數據集的大小,執行模型并取所有的運行時間繪制成趨勢圖。

下面是源代碼及其運行結果( https://github.com/tirthajyoti/PythonMachineLearning/blob/master/Linear_... )。

由于其簡單,即使多達1000萬個數據點,stats.linregress和簡單的矩陣求逆還是最快速的方法。

8種用Python實現線性回歸的方法對比分析_哪個方法更好?

簡單矩陣逆求解的方案更快

作為數據科學家,我們必須一直探索多種解決方案來對相同的任務進行分析和建模,并為特定問題選擇最佳方案。

在本文中,我們討論了8種簡單線性回歸的方法。大多數都可以擴展到更一般化的多元和多項式回歸建模中。

本文的目標主要是討論這些方法的相對運行速度和計算復雜度。我們在一個數據量持續增加的合成數據集(最多達1000萬個樣本)上進行測試,并給出每種方法的運算時間。

令人驚訝的是,與廣泛被使用的scikit-learnlinear_model相比,簡單矩陣的逆求解的方案反而更加快速。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4811

    瀏覽量

    85075
  • 線性回歸
    +關注

    關注

    0

    文章

    41

    瀏覽量

    4317
收藏 人收藏

    評論

    相關推薦

    幀同步通常采用的方法有逐位調整法和置位調整法,對比分析哪個好?

    幀同步通常采用的方法有逐位調整法和置位調整法,對比分析哪個好?采用置位調整法設計幀同步系統
    發表于 04-14 06:34

    單片線性電路和PWM放大器對比分析哪個好?

    單片線性電路和PWM放大器對比分析哪個好?D類放大器重新定義數字電視和便攜式產品設計
    發表于 04-22 06:42

    基于PON的FTTX接入對比分析哪個比較好?

    基于PON的FTTX接入對比分析哪個比較好?
    發表于 05-27 06:39

    LTE與WiMAX對比分析哪個好?

    LTE與WiMAX對比分析哪個好?
    發表于 05-31 06:22

    鍵盤掃描方法對比分析哪個好?

    鍵盤掃描方法對比分析哪個好?
    發表于 06-01 06:50

    CPLD與FPGA對比分析哪個好?

    CPLD與FPGA對比分析哪個好?
    發表于 06-21 06:10

    幾款主流的Python開發板對比分析哪個好?

    Python在國內逐漸崛起和被追捧的原因?Python可以做什么?幾款主流的Python開發板對比分析
    發表于 10-26 07:06

    STM32和Arduino對比分析哪個好?

    Arduino和STM32各自的特點是什么?STM32和Arduino對比分析哪個好?
    發表于 11-04 06:34

    STC89C51與STM8對比分析哪個好?

    STC89C51與STM8對比分析哪個好?
    發表于 11-05 06:46

    CPLD與FPGA的對比分析哪個好?

    CPLD與FPGA的對比分析哪個好?
    發表于 11-05 08:20

    DRAM和SRAM對比分析哪個好?

    RAM有哪些分類?特點是什么?DRAM和SRAM對比分析哪個好?
    發表于 01-20 07:16

    無功電流檢測方法對比分析

    無功電流檢測方法對比分析 摘要:基于瞬時無功功率理論,建立了諧波及無功電流檢測系統閉環、開環的統一模型,揭
    發表于 11-23 11:22 ?1778次閱讀

    SPWM調制方法對比分析

    SPWM調制方法對比分析 摘要:對比分析了三正弦波脈寬調制(SPWM)控制方法,指出各自的優缺點及應用,給出了一些數學
    發表于 07-06 13:33 ?1.3w次閱讀
    SPWM調制<b class='flag-5'>方法</b><b class='flag-5'>對比分析</b>

    8 進行簡單線性回歸方法分析與討論

    本文中,作者討論了 8 Python 環境下進行簡單線性回歸計算的算法,不過沒有討論其性能的好壞,而是
    發表于 01-05 08:18 ?1w次閱讀
    <b class='flag-5'>8</b> <b class='flag-5'>種</b>進行簡單<b class='flag-5'>線性</b><b class='flag-5'>回歸</b>的<b class='flag-5'>方法</b><b class='flag-5'>分析</b>與討論

    實例深入闡述雙端口分析回歸比分析

    負反饋電路分析最常用的方法是雙端口分析 (TPA) 和回歸比分析 (RRA),兩者之間的不同之處及相似之處常令人困惑。本設計實例
    的頭像 發表于 01-26 16:01 ?6238次閱讀
    主站蜘蛛池模板: 成年人黄色大片大全 | 中文字幕一区二区三区视频在线 | 最近最新中文字幕6页 | 视频在线一区 | 免费人成在线观看视频色 | 美女视频很黄很暴黄是免费的 | 欧美午夜性 | 国产偷窥女洗浴在线观看亚洲 | 久久精品午夜视频 | 天天干天| 天堂网色 | 国产又黄又爽又猛的免费视频播放 | 久久男女| 加勒比黑人喝羽月希奶水 | 人人精品久久 | 亚洲免费在线观看 | 国产激情三级 | 日本黄色的视频 | 国产婷婷综合丁香亚洲欧洲 | 萌白酱一线天粉嫩喷水在线观看 | 我想看一级黄色片 | 成人看片免费无限观看视频 | 浓厚な接吻と肉体の交在线观看 | 四虎影院www | 久久九九色 | 噜噜影院无毒不卡 | 伊人久久亚洲综合 | 欧美色图在线观看 | 求毛片网站 | 78摸在线 | 女人牲交一级毛片 | 精品成人 | aaaaa级毛片免费视频 | 又色又爽视频 | 女人张开腿 让男人桶个爽 免费观看 | 奇米小说| 在线种子搜索 | 91av在线视频观看 | 涩涩涩综合在线亚洲第一 | 天堂网视频 | 欧美一级特黄aaaaaaa在线观看 |