003-基于Sklearn的機器學習入門:回歸分析(上)

本節及后續章節將介紹機器學習中的幾種經典回歸算法,所選方法都在Sklearn庫中聚類模塊有具體實現。本節為上篇,將介紹基礎的線性回歸方法,包括線性回歸、邏輯回歸、多項式回歸和嶺回歸等。

2.1 回歸分析概述

回歸Regression)分析是機器學習領域中最古老、最基礎,同時也是最廣泛應用的問題之一,應用十分廣泛。

簡而言之,回歸分析旨在建立一個模型,使用這個模型可以用一組特征(自變量)來預測一個連續的結果(因變量)。舉一個容易理解的例子,我們可以使用房間的面積、樓層、位置、周邊配套等特征來預測該商品房的房價高低,在這個例子中,房價是因變量,且是連續變化的,可以在一定非負區間內取任何實數值,而影響房價的各個因素,成為自變量,自變量可以是各種類型的值,但為了回歸分析方便,通常將自變量也轉換為數值類型。

2.1.1 回歸與分類

回歸問題是預測一個連續值的輸出(因變量)基于一個或多個輸入(自變量或特征)的機器學習任務。換句話說,回歸模型嘗試找到自變量和因變量之間的內在關系。

回歸和分類是兩類典型的監督學習問題,兩者的主要區別在于輸出類型和評價指標不同,如下:

  • 輸出類型:回歸模型通常用來預測連續值(如價格、溫度等),分類模型用來預測離散標簽(如0/1)。
  • 評估指標:回歸通常使用均方誤差(MSE)、R2分數等作為評估指標,而分類則使用準確率、F1分數等。

2.1.2 常見的回歸方法

在此主要介紹Sklearn中實現的幾類典型的回歸方法,

  • 線性回歸:線性回歸是回歸問題中最簡單也最常用的一種算法。它的基本思想是通過找到最佳擬合直線來模擬因變量和自變量之間的關系。
  • 多項式回歸:與線性回歸嘗試使用直線擬合數據不同,多項式回歸使用多項式方程進行擬合。
  • 支持向量回歸:它是支持向量機(SVM)的回歸版本,用于解決回歸問題。它試圖找到一個超平面,以便在給定容忍度內最大程度地減小預測和實際值之間的誤差。
  • 決策樹回歸:它是一種非參數的、基于樹結構的回歸方法。它通過將特征空間劃分為一組簡單的區域,并在每個區域內進行預測。

回歸算法全解析!一文讀懂機器學習中的回歸模型-騰訊云開發者社區-騰訊云 (tencent.com)

2.2 線性回歸

線性回歸,顧名思義,其目標值(對應因變量)可以看作是各個特征值(對應自變量)的線性組合。

線性回歸模型的有效性建立在以下關鍵假設之上:

  • 線性關系:因變量與自變量間存在線性關系。
  • 獨立性:觀測值之間應相互獨立。
  • 無多重共線性:模型中的任何一個自變量都不應該是其他自變量的精確線性組合。
  • 同方差性:對于所有的觀測值,誤差項的方差應相等。
  • 誤差項的正態分布:誤差項應呈正態分布。

上述假設確保了線性回歸模型能夠提供可靠的預測和推斷。

下圖列出的是與線性回歸相關的思維導圖。

?
線性回歸知識圖???

2.2.1 經典線性回歸模型

(1)數學模型

經典的線性回歸數學模型可用下式描述:

\hat{\mathbf{y}}(\mathbf{w}, \mathbf{x}) = w_0 + w_1 x_1 + ... + w_p x_p

這顯然是一條直線方程,其中,\hat{\mathbf{y}}表示預測值,\mathbf{w} = (w_1, ..., w_p)為系數,而w_0為斜率。

這個模型的關鍵在于找到最適合數據的\mathbf{w}值,使得模型能夠準確預測因變量的值。

Sklearn使用LinearRegression函數完成線性模型的擬合。所使用的準則是“最小均方誤差”準則,即是使觀測數據與預測數據之間的均方誤差取得最小值,用數學表達式表示就是:

\min_{\mathbf{w}} ||\mathbf{w} \mathbf{x} - \mathbf{y}||_2^2

(2)數學模型

?在SKlearn中,使用LinearRegression函數實現線性回歸問題。

以下是該函數的聲明:

看一下LinearRegression函數的聲明:

sklearn.linear_model.LinearRegression(*, fit_intercept=True, copy_X=True, n_jobs=None, positive=False)

部分參數說明

  • fit_intercept:是否計算該模型的截距,默認為True。如果使用中心化的數據,可以考慮設置為False,即不計算截距。
  • copy_X:是否對X進行復制,默認為True。如果設為False,在運行過程中新數據會覆蓋原數據。
  • n_jobs:處理時設置任務個數,默認值為None。該參數對于目標個數大于1,且足夠大規模的問題有加速作用,如果設置為-1,則代表使用所有的CPU。
  • positive:默認為False,如果設為Ture,則將各個系數強制設為正數。

屬性值

  • coef_:擬合得到的系數值。如果是單目標問題,返回一個以為數組;如果是多目標問題,返回一個二維數組。
  • rank_:矩陣X的秩,僅X為稠密矩陣時有效。
  • singular_:矩陣X的奇異值,僅X為稠密矩陣時有效。
  • intercept_:截距,線性模型中的獨立項,如果fit_intercept設為False,則intercept_值為0。

該函數在使用時,調用了以下函數:

  • fit:用于模型訓練
  • get_params:獲取估計器的參數值
  • set_params:設置估計器的參數
  • predict:模型預測
  • score:模型評估

(3)實例

本節將介紹如何使用LinearRegression函數實現對線性擬合的一個實例,該實例來自Sklearn官網,詳細介紹見代碼的注釋。

# Code source: Jaques Grobler
# License: BSD 3 clauseimport matplotlib.pyplot as plt
import numpy as npfrom sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score# Load the diabetes dataset
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)# Use only one feature
diabetes_X = diabetes_X[:, np.newaxis, 2]# Split the data into training/testing sets
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]# Split the targets into training/testing sets
diabetes_y_train = diabetes_y[:-20]
diabetes_y_test = diabetes_y[-20:]# Create linear regression object
regr = linear_model.LinearRegression()# Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)# Make predictions using the testing set
diabetes_y_pred = regr.predict(diabetes_X_test)# The coefficients
print("Coefficients: \n", regr.coef_)
# The mean squared error
print("Mean squared error: %.2f" % mean_squared_error(diabetes_y_test, diabetes_y_pred))
# The coefficient of determination: 1 is perfect prediction
print("Coefficient of determination: %.2f" % r2_score(diabetes_y_test, diabetes_y_pred))# Plot outputs
plt.scatter(diabetes_X_test, diabetes_y_test, color="black")
plt.plot(diabetes_X_test, diabetes_y_pred, color="blue", linewidth=3)plt.xticks(())
plt.yticks(())plt.show()

輸出結果為:

Coefficients: [938.23786125]
Mean squared error: 2548.07
Coefficient of determination: 0.47

下圖展示了擬合結果,其中黑色點代表測試數據點,藍線表示擬合出的直線。

官網給出的實例,有些復雜。下面給出一個簡單直觀的例子。

sklearn——線性回歸與邏輯回歸_sklearn線性回歸-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39897.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39897.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39897.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

11 - matlab m_map地學繪圖工具基礎函數 - 繪制航跡、橢圓、風向玫瑰圖和特定的圓形區域的有關函數及其用法

11 - matlab m_map地學繪圖工具基礎函數 - 繪制航跡、橢圓、風向玫瑰圖和特定的圓形區域的有關函數及其用法 0. 引言1. 關于m_track2. 關于m_range_ring3. 關于m_ellipse4. 關于m_windrose5. 結語 0. 引言 本篇介紹下m_map中繪制航跡圖函數(m_track)、繪…

python 發布應用程序包

文章目錄 發布python包toml配置文件構建發布python包 官方文檔參考 將自己的python項目發布成源碼包或者wheel二進制包,供其他開發者使用。 方式: 使用py工具; distutils,該工具的使用已過時;setuptools,常用方式;wheel,在setuptools的基礎上添加了 bdist_wheel, …

【BUUCTF-PWN】4-ciscn_2019_n_1

參考:BUUCTF-ciscn_2019_n_1 - 紙鳶asahi - 博客園 (cnblogs.com) buuctf 刷題記錄_PWN ciscn_2019_n_1 - MuRKuo - 博客園 (cnblogs.com) 從題海中入門(四)ciscn_2019_n_1 - FreeBuf網絡安全行業門戶 ciscn_2019_n_1 ——兩種解法_0x4134800…

Generative Modeling by Estimating Gradients of the Data Distribution

Generative Modeling by Estimating Gradients of the Data Distribution 本文介紹宋飏提出的帶噪聲擾動的基于得分的生成模型。首先介紹基本的基于得分的生成模型的訓練方法(得分匹配)和采樣方法(朗之萬動力學)。然后基于流形假…

快速了解-注解Annotation

描述 Annotation定義:注解是Java語言從JDK 5.0版本開始引入的一種技術。 Annotation作用: 注解不是程序本身,但可以對程序作出解釋。這與注釋(comment)類似,但注解可以被其他程序(如編譯器&…

react apollo hooks

1、創建ApolloProvider來包裝整個程序 <ApolloProvider client{client}><App /> <ApolloProvider> 2、useQuery查詢 工作方式usequery將返回一個數組 const {要返回的對象} useQuery(傳入參數) 實例 const query gqlquery name {whatever {field}} e…

信號量——Linux并發之魂

歡迎來到 破曉的歷程的 博客 引言 今天&#xff0c;我們繼續學習Linux線程本分&#xff0c;在Linux條件變量中&#xff0c;我們對條件變量的做了詳細的說明&#xff0c;今天我們要利用條件變量來引出我們的另一個話題——信號量內容的學習。 1.復習條件變量 在上一期博客中&…

天潤融通分析AI技術助力客戶服務,實現滿意度三倍增長

如今&#xff0c;客戶體驗越來越成為影響客戶決策的核心要素。 對于企業來講&#xff0c;客戶在不同觸點的每一次互動體驗&#xff0c;都成為塑造品牌聲譽的“Aha時刻”。但同時&#xff0c;隨著社會的發展的加速&#xff0c;客戶的需求也在日新月異&#xff0c;給企業帶來挑戰…

刷代碼隨想錄有感(125):動態規劃——最長公共子序列

題干&#xff1a; 代碼&#xff1a; class Solution { public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>>dp(text1.size() 1, vector<int>(text2.size() 1, 0));for(int i 1; i < text1.size(); i){for(int j …

【SQL】已解決:SQL錯誤(15048): 數據兼容級別有效值為100、110或120

文章目錄 一、分析問題背景二、可能出錯的原因三、錯誤代碼示例四、正確代碼示例五、注意事項 已解決SQL錯誤(15048): 數據兼容級別有效值為100、110或120 在數據庫開發和管理過程中&#xff0c;我們經常會遇到各種各樣的錯誤。本文將詳細分析SQL錯誤(15048)的背景、可能原因、…

langchain框架輕松實現本地RAG

一 什么是RAG? RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一種結合了檢索和生成模型的方法&#xff0c;主要用于解決序列到序列的任務&#xff0c;如問答、對話系統、文本摘要等。它的核心思想是通過從大量文檔中檢索相關信息&#xff0c;然后利用這些信息…

vue3-openlayers 圖標閃爍、icon閃爍、marker閃爍

本篇介紹一下使用vue3-openlayers 圖標閃爍、icon閃爍、marker閃爍 1 需求 圖標閃爍、icon閃爍、marker閃爍 2 分析 圖標閃爍、icon閃爍、marker閃爍使用ol-animation-fade組件 3 實現 <template><ol-map:loadTilesWhileAnimating"true":loadTilesWh…

讀人工智能全傳03分治策略

1. 黃金年代 1.1. 圖靈在他發表的論文《計算機器與智能》中介紹了圖靈測試&#xff0c;為人工智能學科邁出第一步做出了重大貢獻 1.2. 美國在第二次世界大戰后幾十年里計算機技術發展的特色&#xff0c;也是美國在未來60年內確立人工智能領域國際領先地位的核心 1.3. 1955年…

lodash中flush的使用(debounce、throttle)

在項目的配置中&#xff0c;看到了一個請求&#xff0c;類似是這樣的 import { throttle } from lodash-es// 請求函數 async function someFetch(){const {data} await xxx.post()return data }// 節流函數 async function throttleFn(someFetch,1000)// 執行拿到數據函數 a…

leetcode--二叉樹中的最長交錯路徑

leetcode地址&#xff1a;二叉樹中的最長交錯路徑 給你一棵以 root 為根的二叉樹&#xff0c;二叉樹中的交錯路徑定義如下&#xff1a; 選擇二叉樹中 任意 節點和一個方向&#xff08;左或者右&#xff09;。 如果前進方向為右&#xff0c;那么移動到當前節點的的右子節點&…

大數據開發中的數據生命周期管理

上班越久&#xff0c;發現有些數據一直放在那里&#xff0c;根本沒有流動&#xff0c;完全沒有發揮價值&#xff0c;數據是有生命周期的&#xff0c;而且生命周期管理得好&#xff0c;工作就會更輕松。 目錄 引言數據創建示例代碼 數據存儲示例代碼 數據使用示例代碼 數據維護示…

JavaScript中閉包的理解

閉包&#xff08;Closure&#xff09;概念&#xff1a;一個函數對周圍狀態的引用捆綁在一起&#xff0c;內層函數中訪問到其外層函數的作用域。簡單來說;閉包內層函數引用外層函數的變量&#xff0c;如下圖&#xff1a; 外層在使用一個函數包裹住閉包是對變量的保護&#xff0c…

學習python常用的英語單詞,有音標,有音節劃分,適合英語基礎差的人來入門

if [?f] 如果 else [els] 否則 while [wa?l] 當...的時候 for [f?:r] “對于”或“遍歷”&#xff0c;適合于 break [brek] 中斷 continue [k?nt?nju:] 繼續 con ti nue [k?n t? nju:] pass [pɑ:s] 通過 height [ha?t] 高度 weight [we?t] 重量 keyword [ki:w…

sping-10

什么是 bean 裝配 在Java中&#xff0c;bean裝配是一種將對象&#xff08;也稱為bean&#xff09;與其他對象之間建立關聯關系的方法。這種裝配可以通過手動編寫代碼來實現&#xff0c;也可以使用依賴注入框架&#xff08;如Spring&#xff09;來自動完成。 在bean裝配中&…

【計算機視覺系列實戰教程 (實戰02)】:基于特征點匹配的圖像配準

這里寫目錄標題 1、特征點提取(1)GFTT算法提取特征點A.What&#xff08;什么是GFTT&#xff09;B.GFTT的優勢C.How&#xff08;如何使用GFTT算法提取圖像特征點&#xff09; (2)FAST算法提取特征點A.What&#xff08;什么是FAST角點&#xff09;B.FAST角點的強度值C.How&#x…