多項式回歸(Linear Regression)原理詳解及Python代碼示例

多項式回歸原理詳解

????????多項式回歸(Polynomial Regression)是線性回歸(Linear Regression)的一種擴展形式。它通過在輸入變量上添加高次項來擬合非線性關系。雖然多項式回歸本質上還是線性模型,但它允許模型在輸入特征的多項式基礎上進行線性擬合,從而捕捉復雜的非線性關系。

1. 多項式回歸的數學表達式

????????假設我們有一個輸入特征 x?和輸出變量 y,多項式回歸模型可以表示為:

????????????????????????y=β0+β1x+β2x2+β3x3+?+βnxn+?

????????其中,β0,β1,β2,…,βn是模型的參數,n?是多項式的階數,?是誤差項。

2. 多項式回歸的步驟

  1. 選擇多項式的階數:選擇合適的多項式階數 n?是模型擬合的關鍵。階數過低可能會導致欠擬合,階數過高則可能導致過擬合。

  2. 構建多項式特征:將輸入特征擴展為多項式特征。例如,對于一個一維特征 x,構建的特征矩陣為be67977ae85c4ae989d99a463c30af51.png

  3. 擬合模型:使用線性回歸方法在多項式特征上進行擬合。

  4. 評估模型:通過均方誤差(MSE)等指標評估模型的性能。

Python代碼示例

????????以下是一個完整的Python代碼示例,用于實現多項式回歸。我們將使用scikit-learn庫來構建和評估模型。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 生成一些示例數據
np.random.seed(0)
x = 2 - 3 * np.random.normal(0, 1, 100)
y = x - 2 * (x ** 2) + np.random.normal(-3, 3, 100)# 將數據轉化為二維數組
x = x[:, np.newaxis]
y = y[:, np.newaxis]# 可視化原始數據
plt.scatter(x, y, s=10)
plt.title("Original Data")
plt.show()# 創建多項式特征(例如,二次多項式)
poly = PolynomialFeatures(degree=2)
x_poly = poly.fit_transform(x)# 創建線性回歸模型并在多項式特征上進行擬合
model = LinearRegression()
model.fit(x_poly, y)# 預測結果
y_pred = model.predict(x_poly)# 可視化擬合結果
plt.scatter(x, y, s=10, label='Original data')
plt.plot(x, y_pred, color='r', label='Fitted polynomial')
plt.title("Polynomial Regression (degree=2)")
plt.legend()
plt.show()# 打印模型參數和均方誤差
print("Coefficients:", model.coef_)
print("Intercept:", model.intercept_)
print("Mean Squared Error:", mean_squared_error(y, y_pred))# 嘗試不同的多項式階數
degrees = [1, 2, 3, 4, 5]
for degree in degrees:poly = PolynomialFeatures(degree=degree)x_poly = poly.fit_transform(x)model = LinearRegression()model.fit(x_poly, y)y_pred = model.predict(x_poly)plt.scatter(x, y, s=10, label='Original data')plt.plot(x, y_pred, label=f'Degree {degree}')plt.title(f"Polynomial Regression (degree={degree})")plt.legend()plt.show()print(f"Degree {degree} - Coefficients:", model.coef_)print(f"Degree {degree} - Intercept:", model.intercept_)print(f"Degree {degree} - Mean Squared Error:", mean_squared_error(y, y_pred))

?

代碼解釋

  1. 數據生成:我們生成了一些具有二次關系的示例數據,其中加入了隨機噪聲。
  2. 數據預處理:將數據轉化為二維數組,以便后續處理。
  3. 多項式特征構建:使用PolynomialFeatures類構建多項式特征,這里示例為二次多項式。
  4. 模型擬合:使用LinearRegression類在多項式特征上進行擬合。
  5. 結果預測和可視化:預測結果并繪制原始數據和擬合曲線,便于觀察擬合效果。
  6. 模型評估:打印模型參數(系數和截距)和均方誤差(MSE)以評估模型性能。
  7. 不同階數的多項式回歸:嘗試不同的多項式階數(1到5),并分別進行擬合和評估。

?

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

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

相關文章

if action和Switch之間該怎么選擇?

1. Switch 2. If及If Action Subsystem 3.結論 元素很多,用switch 元素少,用if或switch 如果...很多,用if

職業技能大賽引領下大數據專業實訓教學的改革研究

隨著信息化時代的加速發展,大數據專業作為新興的熱門領域,正日益成為高等職業教育體系中不可或缺的一部分,其承擔著為社會培養大批具有高素質應用技能的大數據技術人才的重任。職業技能大賽作為檢驗和提升學生技能水平的有效平臺,…

web學習筆記(六十九)vue2

1. vue2創建腳手架項目 (1)在cmd窗口輸入npm install -g vue/cli命令行,快速搭建腳手架。 (2) 創建vue2項目 (3) 選擇配置項目,最下面的選項是自己重新配置,第一次創建v…

使用mmdetection遇到的一些問題總結

【問題1】 No module named ‘mmcv._ext’ 應該安裝mmcv-full 而不是mmcv 【問題2】cannot import name ‘Config‘ from ‘mmcv‘ 原因是mmcv的版本太高兩種解決方案:1)降低mmcv版本。2)將 from mmcv import Config, DictAction 修改為 fro…

android 4大組件用法

在Android開發中,應用程序的主要組件包括Activity、Service、Broadcast Receiver和Content Provider。這些組件共同組成了Android應用的基本構架。以下是每個組件的詳細用法: 1. Activity Activity是Android應用的主要組成部分,代表一個用戶…

中電金信:向“新”而行—探索AI在保險領域的創新應用

大模型的應用已經滲透到各個領域,并展現出驚人的潛力。在自然語言處理方面,大模型用于機器翻譯、文本摘要、問答系統等;在計算機視覺領域,應用于圖像識別、目標檢測、視頻分析等;此外,大模型也應用于語音識…

使用nvm管理node版本及pnpm安裝

文章目錄 GithubWindows 環境Mac/Linux 使用腳本進行安裝或更新Mac/Linux 環境變量nvm 常用命令npm 常用命令npm 安裝 pnpmNode 歷史版本 Github https://github.com/nvm-sh/nvm Windows 環境 https://nvm.uihtm.com/nvm.html Mac/Linux 使用腳本進行安裝或更新 curl -o- …

名企架構師精講:Spring框架核心速覽

目錄 1. 課程概覽 2. 初識篇:Spring框架AOP&IOC案例詳解 課程內容3. 課程特色4.適用人群5. 你將收獲6. 學習建議 1. 課程概覽 本課程通過精選的兩篇深度文章和一套詳盡的視頻教程,全面而深入地解析并實踐了Spring框架的核心內容。 主要包含以下幾部…

VTable導出當前頁和導出所有頁數據

表格導出的是當前顯示的表格&#xff0c;如果是分頁表格想導出全部的數據話。有兩種方法可以實現 表格先顯示的全量數據&#xff0c;導出后再恢復當前頁。新建一個隱藏的表格實例顯示全量數據導出這個隱藏的表格實例。 下面是全量代碼&#xff1a; <template><div&…

快速創建條形熱力圖

Excel中的條件格式可以有效的凸顯數據特征&#xff0c;如下圖中B列所示。 現在需要使用圖表展現熱力條形圖&#xff0c;如下圖所示。由于顏色有多個過渡色&#xff0c;因此手工逐個設置數據條的顏色&#xff0c;基本上是不可能完成的任務&#xff0c;使用VBA代碼可以快速創建這…

git stash相關命令解釋

git stash 這個命令會保存你當前工作區和暫存區的所有更改到一個臨時的“stash”區域&#xff0c;然后使你的工作目錄和暫存區變得干凈&#xff08;即回到最近一次提交的狀態&#xff09;。 當你想要回到這個“stash”區域中的更改時&#xff0c;你可以使用 git stash list 來查…

SRE監控的四個黃金指標到底長啥樣?

一、監控的黃金信號 掌握系統運行狀態&#xff0c;了解組件、服務的可靠性和穩定性&#xff0c;需要借助監控系統收集指標、可視化數據&#xff0c;并在異常出現時進行操作提醒。那么監控的都要關注哪些呢&#xff1f;我們來了解一下監控的指標&#xff0c;即系統中衡量的最重…

【pytorch03】pytorch基本數據類型

問題&#xff1a;String類型在pytorch中如何表示&#xff1f; 很遺憾&#xff0c;pytorch不是完備的語言庫&#xff0c;而是面向數據計算的一個GPU加速庫&#xff0c;因此沒有內建對string的支持 我們會在做NLP的時候會遇到all string處理的問題&#xff0c;就比如說一句話&am…

華碩PRIME B450M-K主板開啟虛擬化

1.判斷電腦是否開啟了虛擬化 按下CtrlShiftESC打開任務管理器&#xff0c;切換到性能頁面&#xff0c;選擇查看CPU 如果在右下角看到虛擬化&#xff1a;已禁用&#xff0c;則沒有開啟虛擬化 2.進入BIOS 重啟或開機時&#xff0c;按下DEL或F2進入BIOS設置界面。 屏幕提示&am…

SAP系統中如何用事務碼圖形視圖尋找MD04增強開發實施點

在之前發布的文章中&#xff0c;介紹了善用事務碼的圖形視圖以觀察事務的執行流程以及如何在MD04中實施增強以改變生產訂單的顯示順序。本文結合兩者&#xff0c;介紹一下如何利用事務碼的圖形視圖找到增強開發的實施點。 在事務碼中輸入SE93&#xff0c;進入圖形視圖&#xf…

生命在于學習——Python人工智能原理(4.6)

在這里插一句話&#xff0c;我有兩個好兄弟的github項目&#xff0c;感興趣的可以去看一下&#xff0c;star一下&#xff0c;謝謝。 https://github.com/fliggyaa/fscanpoc https://github.com/R0A1NG/Botgate_bypass 四、Python的程序結構與函數 4.1 Python的分支結構 &…

如何將個人電腦做P2V備份到虛擬化平臺

背景&#xff1a;公司員工個人電腦綁定了商用軟件的license&#xff0c;現在員工離職&#xff0c;license又需要使用&#xff0c;電腦就一直被占用。 解決方法&#xff1a;利用VMware Vcenter Converter Standalone將此臺式電腦上載到公司虛擬化平臺上 具體做法&#xff0c;下…

sklearn-learn的安裝

官網&#xff1a;scikit-learn: machine learning in Python — scikit-learn 1.5.0 documentation 是 pip install scikit-learn 不是 pip install sklearn

Leetcode 700:二叉搜索樹中的搜索

給定二叉搜索樹&#xff08;BST&#xff09;的根節點 root 和一個整數值 val。 你需要在 BST 中找到節點值等于 val 的節點。 返回以該節點為根的子樹。 如果節點不存在&#xff0c;則返回 null 。 public TreeNode searchBST(TreeNode root, int val) {if(rootnull){return n…

.NET C# 樹遍歷、查詢、拷貝與可視化

.NET C# 樹遍歷、查詢、拷貝與可視化 目錄 .NET C# 樹遍歷、查詢、拷貝與可視化1 組件安裝1.1 NuGet包管理器安裝&#xff1a;1.2 控制臺安裝&#xff1a; 2 接口1.1 ITree\<TTreeNode\>1.2 ITree\<TKey, TTreeNode\>1.3 IObservableTree\<TTreeNode\>1.4 IO…