線性回歸學習

一、線性回歸簡介核心思想:線性回歸是一種通過屬性的線性組合來做預測的模型。它的目標很明確,就是找到一條合適的直線、平面或者更高維度的超平面,讓預測出來的值和實際真實值之間的差距盡可能小。比如在預測房屋價格時,就可以根據房屋大小這個屬性,擬合出一條能預測價格的直線。一般形式:對于一個有多個屬性描述的樣本,線性回歸會把這些屬性分別乘以對應的權重,再加上一個偏置項,得到預測結果。用向量的形式可以更簡潔地表示這種組合關系。二、模型求解:最小二乘法基本原理:最小二乘法是基于 “歐氏距離” 來尋找最優模型的方法。它的核心是找到一條線,讓所有樣本點到這條線的歐氏距離加起來最小,也就是讓預測值和真實值之間的誤差總和最小。參數估計:這個過程就是找到最合適的權重和偏置項,使得誤差函數的值最小。這里的誤差函數反映的是所有樣本預測誤差的平方和。求解過程:通過對誤差函數分別關于權重和偏置項求導,然后讓導數等于 0,就能計算出權重和偏置項的最優值。三、線性回歸的評估指標誤差平方和 / 殘差平方和(SSE/RSS):它是把每個樣本的預測值和真實值之間的差值平方后加起來的結果,能反映出預測值和真實值之間的總誤差大小。平方損失 / 均方誤差(MSE):是誤差平方和的平均值,它消除了樣本數量對誤差結果的影響,方便不同數據集之間進行誤差比較。R 方(\(R^2\)):這個指標用來衡量模型對數據的擬合效果。它的值越接近 1,說明模型對真實數據的解釋能力越強,擬合效果也就越好。簡單來說,就是看預測值能解釋真實值變化的程度。四、多元線性回歸模型形式:當樣本有多個屬性時,多元線性回歸會把每個屬性都考慮進來,每個屬性都有對應的權重,再加上一個偏置項,共同組成預測公式。矩陣表示:對于多元線性回歸,可以用矩陣的形式來表示模型和相關計算,這樣在處理大規模數據時會更方便高效。五、實踐應用:sklearn 中的線性回歸相關函數:在 Python 的 sklearn 庫中,linear_model.LinearRegression()函數可以直接實現線性回歸算法。主要參數:fit_intercept:用于設置模型是否包含偏置項,如果設置為 False,那么擬合的直線會經過原點,默認是包含偏置項的。normalize:設置是否對數據進行歸一化處理,默認是不進行歸一化。應用示例:比如用這個函數可以實現對波士頓房價的預測,通過輸入房屋的各種屬性,得到預測的房價。通過本次學習,我對線性回歸的基本概念、求解方法、評估方式和實際應用有了全面的了解。線性回歸作為一種簡單實用的模型,在很多預測場景中都發揮著重要作用。

代碼參考

# 導入必要的庫
import pandas as pd ? ? ? ? ?# 用于數據處理和分析的工具庫
import numpy as np ? ? ? ? ? # 用于數值計算的基礎庫
import matplotlib.pyplot as plt ?# 用于數據可視化的庫
from sklearn.datasets import load_diabetes ?# 從sklearn加載糖尿病數據集
from sklearn.model_selection import train_test_split ?# 用于劃分訓練集和測試集
from sklearn.linear_model import LinearRegression ?# 線性回歸模型
from sklearn.metrics import mean_squared_error, r2_score ?# 模型評估指標

# 1. 加載糖尿病數據集
# 該數據集包含442名糖尿病患者的10項生理特征和1年后的病情發展指標
diabetes = load_diabetes()

# 2. 數據處理與格式化
# 將特征數據轉換為DataFrame格式,便于查看和處理
# diabetes.data包含特征數據,diabetes.feature_names是特征名稱列表
X = pd.DataFrame(diabetes.data, columns=diabetes.feature_names)

# 將目標值(標簽)轉換為Series格式,目標值表示患者1年后的病情發展情況
y = pd.Series(diabetes.target, name='DiseaseProgression')

# 3. 數據探索:查看數據集基本信息
print("數據集基本信息:")
print(f"特征數量:{X.shape[1]}") ?# X.shape[1]表示列數,即特征數量
print(f"樣本數量:{X.shape[0]}") ?# X.shape[0]表示行數,即樣本數量
print("\n特征名稱:", diabetes.feature_names) ?# 打印所有特征的名稱
print("\n數據統計描述:")
# 打印數據的統計信息(均值、標準差、最小值、最大值等)
print(X.describe())

# 4. 劃分訓練集和測試集
# train_test_split函數用于將數據集隨機劃分為訓練集和測試集
# test_size=0.3表示測試集占總數據的30%,訓練集占70%
# random_state=42設置隨機種子,確保每次運行劃分結果一致,保證實驗可復現
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)

# 5. 構建線性回歸模型并訓練
# 創建線性回歸模型實例,fit_intercept=True表示模型會計算偏置項(截距)
model = LinearRegression(fit_intercept=True)

# 使用訓練集數據訓練模型,即通過最小二乘法找到最優的權重和偏置
# 模型會學習特征(X_train)與目標值(y_train)之間的線性關系
model.fit(X_train, y_train)

# 6. 輸出模型參數(權重和偏置)
print("\n模型參數:")
# 遍歷每個特征及其對應的系數(權重)
# 系數的大小和符號表示該特征對預測結果的影響程度和方向
for feature, coef in zip(diabetes.feature_names, model.coef_):
print(f"{feature}: {coef:.4f}") ?# 保留4位小數輸出

# 輸出偏置項(intercept),即線性方程中的常數項
print(f"偏置(intercept): {model.intercept_:.4f}")

# 7. 使用訓練好的模型進行預測
# 用測試集的特征數據進行預測,得到模型的預測結果y_pred
y_pred = model.predict(X_test)

# 8. 模型評估:計算評估指標
# 計算均方誤差(MSE):預測值與真實值差值的平方的平均值
mse = mean_squared_error(y_test, y_pred)

# 計算均方根誤差(RMSE):MSE的平方根,與目標值單位一致,更易解釋
rmse = np.sqrt(mse)

# 計算R方(R2):表示模型解釋的方差比例,范圍0-1,越接近1說明擬合效果越好
r2 = r2_score(y_test, y_pred)

# 打印評估指標結果
print("\n模型評估指標:")
print(f"均方誤差(MSE):{mse:.4f}")
print(f"均方根誤差(RMSE):{rmse:.4f}")
print(f"R方(R^2):{r2:.4f}")

# 9. 結果可視化:真實值與預測值對比
# 創建畫布,設置大小為10x6英寸
plt.figure(figsize=(10, 6))

# 繪制散點圖:x軸為真實值,y軸為預測值,alpha設置點的透明度
plt.scatter(y_test, y_pred, alpha=0.5, label='預測值 vs 真實值')

# 繪制參考線:y=x的虛線,表示理想情況下預測值等于真實值
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'r--', label='理想預測線')

# 設置坐標軸標簽和圖表標題
plt.xlabel('真實病情發展指標')
plt.ylabel('預測病情發展指標')
plt.title('糖尿病病情預測:真實值 vs 預測值')

# 添加圖例和網格線
plt.legend()
plt.grid(alpha=0.3) ?# alpha設置網格線透明度

# 顯示圖表
plt.show()

# 10. 特征重要性可視化
# 計算各特征系數的絕對值,用于表示特征重要性(絕對值越大影響越大)
coef_abs = np.abs(model.coef_)

# 創建畫布,設置大小為10x6英寸
plt.figure(figsize=(10, 6))

# 繪制柱狀圖展示各特征的重要性
plt.bar(diabetes.feature_names, coef_abs)

# 設置圖表標題和坐標軸標簽
plt.title('特征重要性(基于系數絕對值)')
plt.xlabel('特征名稱')
plt.ylabel('系數絕對值')

# 添加y軸網格線,便于查看數值
plt.grid(axis='y', alpha=0.3)

# 顯示圖表
plt.show()

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

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

相關文章

如何使用 DeepSeek 助力工作:全面指南?

一、引言?1.1 DeepSeek 簡介?DeepSeek 的定位與目標概述?核心技術亮點(大語言模型、多模態能力、AI Agent 框架)?1.2 工作場景中應用 AI 的趨勢?AI 對職場效率提升的重要性?DeepSeek 在眾多 AI 工具中的獨特地位?二、DeepSeek 基礎功能介紹?2.1 …

車載診斷架構 --- EOL引起關于DTC檢測開始條件的思考

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

JCTools Spmc 單生產者-多消費者的無鎖并發有界隊列

SpmcArrayQueue 是 JCTools 中為 單生產者-多消費者(Single-Producer-Multi-Consumer) 場景設計的有界隊列。與 SPSC 模型相比,SPMC 的復雜性主要體現在消費者側,因為多個消費者線程需要以線程安全的方式競爭消費同一個隊列中的元…

SpringAI1.0.1實戰教程:避坑指南25年8月最新版

Spring AI 1.0.1 使用教程 項目簡介 作為一個Java的開發者 聽到Java也有ai框架了 很高興~~~ 本來想學一下SpringAI但是網上賣課的一大堆,并且大部分課程都是五月的,到2025年的8月份,SpringAI的版本做了很多更新,所以我本人參考…

Maven架構的依賴管理和項目構建

??????什么是依賴管理對第三方依賴包的管理,可以連接互聯網下載項目所需第三方jar包。對自己開發的模塊的管理,可以像引用第三方依賴包一樣引用自己項目的依賴包。Maven的依賴管理方式和傳統方式有什么區別傳統方式:從官網手動下載jar包…

微信小程序開發(一):使用開發者工具創建天氣預報項目

Hi,我是前端人類學(之前叫布蘭妮甜)! 從今天開始,我將開啟一個全新的微信小程序開發系列教程,通過實際項目帶大家系統學習小程序開發。作為系列的第一篇文章,我們將從最基礎的環境搭建開始&…

【鏈表 - LeetCode】24. 兩兩交換鏈表中的節點

24. 兩兩交換鏈表中的節點 - 力扣(LeetCode) 題解: - 迭代 首先是直接遍歷的做法,這里注意調整指針指向的順序。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* List…

爬蟲基礎學習-鏈接協議分析,熟悉相關函數

1、urlparse:(python標準庫中的一個模塊,解析和操作url)標準的url鏈接格式:scheme://netloc/path;params?query#fragmentscheme(協議) http or https netloc(網絡位置) …

kkfileview預覽Excel文件去掉左上角的跳轉HTML預覽、打印按鈕

上篇說了使用nginx代理kkfile預覽文件,但是又發現個新問題,預覽其他文件時都正常,但是預覽.xlsx格式的時候,在左上角會有【跳轉HTML預覽】【打印】兩個按鈕,如下所示:這篇就來說一下如何去掉。首先這個跟kk…

阿里開源新AI code工具:qoder功能介紹

下載地址: https://qoder.com/ 文檔地址: https://docs.qoder.com/ 文章目錄1. AI 編碼發展趨勢2. 真實世界軟件開發的挑戰3. 我們的方法3.1. 透明度3.1.1. 知識可見性3.1.2. 執行透明度3.2. 增強上下文工程3.3. 規范驅動與任務委托3.3.1. 聊天模式&…

什么是短視頻矩陣系統企業立項功能源碼開發,支持OEM

短視頻矩陣系統企業立項功能源碼開發解析在短視頻行業蓬勃發展的當下,企業紛紛布局短視頻矩陣,以實現多平臺、多賬號的協同運營。而企業立項作為短視頻矩陣項目啟動的關鍵環節,其高效、規范的管理直接影響項目的推進效率與成果。為此&#xf…

當GitHub宕機時,我們如何協作?

問題背景與影響 GitHub作為主流代碼托管平臺的依賴現狀宕機對分布式團隊、CI/CD流水線、緊急修復的影響案例其他類似平臺(GitLab、Bitbucket)的潛在連帶風險 本地與離線協作方案 利用Git分布式特性:本地倉庫繼續提交,恢復后同步搭…

【會議跟蹤】Model-Based Systems Engineering (MBSE) in Practice 2025

會議主旨與議題 會議宣傳鏈接:https://www.sei.cmu.edu/events/mbse-in-practice/ 本次會議將于2025年8月21日位美國弗吉尼亞州阿靈頓(五角大樓所在地)舉行。本次會議主旨為 MBSE in Practice: Bridging the Gap Between Theory and Success(2025)。隨著軟件定義系統日趨…

瀏覽器的渲染流程:從 HTML 到屏幕顯示

在我們日常使用瀏覽器瀏覽網頁時,往往忽略了瀏覽器背后復雜的渲染過程。從輸入 URL 到頁面最終顯示在屏幕上,瀏覽器需要經過一系列精心設計的步驟。 瀏覽器渲染的整體流程瀏覽器的渲染流程可以大致分為兩個主要部分:網絡 和 渲染。當用戶在地…

FastMCP 客戶端服務器通信示例:從入門到實戰(STDIO 傳輸)

引言 在現代分布式系統和AI應用中,模型上下文協議(MCP)扮演著重要角色,它負責協調客戶端與服務器之間的通信,尤其是在需要頻繁交互的場景中。本文將介紹如何使用FastMCP庫快速實現客戶端與服務器之間的通信&#xff0c…

寶可夢肉鴿 PC/手機雙端 多種存檔 全閃光 無限金幣 全寶可夢解鎖 免安裝中文版

網盤鏈接: 寶可夢肉鴿 免安裝中文版 名稱:寶可夢肉鴿 PC/手機雙端 多種存檔 全閃光 無限金幣 全寶可夢解鎖 免安裝中文版 描述:寶可夢肉鴿修改版是一款非常受歡迎的口袋妖怪系列,游戲擁有許多獨特的妖怪和玩法。在游戲中&#…

Linux 下的網絡編程

1、目的實現不同主機上進程間的通信。2、問題主機與主機之間在物理層面必須互聯互通。進程與進程在軟件層面必須互聯互通。IP地址:計算機的軟件地址,用來標識計算機設備。MAC地址:計算機的硬件地址(固定)。網絡的端口號…

Go語言在邊緣計算中的網絡編程實踐:從入門到精通

一、引言 在數字化浪潮席卷全球的今天,邊緣計算如同一股清流,正在重新定義我們對網絡架構的理解。想象一下,當你在自動駕駛汽車中需要毫秒級響應,或者在偏遠工廠中需要實時處理傳感器數據時,傳統的云計算模式就像是&qu…

ASPICE過程能力確定——度量框架

🚗【汽車人必看】ASPICE能力評估核心:度量框架全解析|90%工程師都搞不懂的評分規則!🔍 為什么你的ASPICE評估總卡在L2?——揭秘6大能力等級背后的評分邏輯,附提升秘籍!🔥…

機器學習在量化中的應用

一、核心應用場景在因子研究中,scikit-learn 主要解決以下幾類問題:因子預處理與標準化:StandardScaler, RobustScaler因子有效性分析:LinearRegression (IC分析)降維與因子合成:PCA, FactorAnalysis機器學習預測模型&…