選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Python 教程

Python 主頁 Python 簡介 Python 入門 Python 語法 Python 註釋 Python 變數 Python 資料型別 Python 數字 Python 型別轉換 Python 字串 Python 布林值 Python 運算子 Python 列表 Python 元組 Python 集合 Python 字典 Python If...Else Python While 迴圈 Python For 迴圈 Python 函式 Python Lambda Python 陣列 Python 類/物件 Python 繼承 Python 迭代器 Python 多型 Python 作用域 Python 模組 Python 日期 Python 數學 Python JSON Python 正則表示式 Python PIP Python Try...Except Python 使用者輸入 Python 字串格式化

檔案處理

Python 檔案處理 Python 讀取檔案 Python 寫入/建立檔案 Python 刪除檔案

Python 模組

NumPy 教程 Pandas 教程 SciPy 教程 Django 教程

Python Matplotlib

Matplotlib 簡介 Matplotlib 入門 Matplotlib Pyplot Matplotlib 繪圖 Matplotlib 標記 Matplotlib 線條 Matplotlib 標籤 Matplotlib 網格 Matplotlib 子圖 Matplotlib 散點圖 Matplotlib 條形圖 Matplotlib 直方圖 Matplotlib 餅圖

機器學習

入門 均值、中位數、眾數 標準差 百分位數 資料分佈 正態資料分佈 散點圖 線性迴歸 多項式迴歸 多元迴歸 縮放 訓練/測試 決策樹 混淆矩陣 層次聚類 邏輯迴歸 網格搜尋 分類資料 K-均值 Bootstrap Aggregation 交叉驗證 AUC - ROC 曲線 K-近鄰

Python MySQL

MySQL 入門 MySQL 建立資料庫 MySQL 建立表 MySQL 插入 MySQL 選擇 MySQL Where MySQL Order By MySQL 刪除 MySQL 刪除表 MySQL 更新 MySQL Limit MySQL Join

Python MongoDB

MongoDB 入門 MongoDB 建立資料庫 MongoDB 集合 MongoDB 插入 MongoDB Find MongoDB Query MongoDB Sort MongoDB 刪除 MongoDB 刪除集合 MongoDB 更新 MongoDB Limit

Python 參考

Python 概述 Python 內建函式 Python 字串方法 Python 列表方法 Python 字典方法 Python 元組方法 Python 集合方法 Python 檔案方法 Python 關鍵字 Python 異常 Python 詞彙表

模組參考

Random 模組 Requests 模組 Statistics 模組 Math 模組 cMath 模組

Python 如何操作

刪除列表重複項 反轉字串 兩個數字相加

Python 示例

Python 示例 Python 編譯器 Python 練習 Python 測驗 Python 伺服器 Python 面試問答 Python 訓練營 Python 證書

機器學習 - 線性迴歸


迴歸

當您嘗試找出變數之間的關係時,使用術語“迴歸”。

在機器學習和統計建模中,這種關係被用來預測未來事件的結果。


線性迴歸

線性迴歸利用資料點之間的關係來繪製一條穿過所有資料點的直線。

這條線可用於預測未來值。

在機器學習中,預測未來非常重要。


它是如何工作的?

Python 提供了查詢資料點之間關係並繪製線性迴歸線的方法。我們將向您展示如何使用這些方法,而不是透過數學公式。

在下面的示例中,x 軸代表年齡,y 軸代表速度。我們記錄了 13 輛汽車透過收費站時的年齡和速度。讓我們看看收集到的資料是否可以用於線性迴歸。

示例

首先繪製散點圖

import matplotlib.pyplot as plt

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

plt.scatter(x, y)
plt.show()

結果

執行示例 »

示例

匯入 scipy 並繪製線性迴歸線

import matplotlib.pyplot as plt
from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x)
  return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

結果

執行示例 »

示例解釋

匯入所需的模組。

您可以在我們的 Matplotlib 教程 中瞭解 Matplotlib 模組。

您可以在我們的 SciPy 教程 中瞭解 SciPy 模組。

import matplotlib.pyplot as plt
from scipy import stats

建立代表 x 軸和 y 軸值的陣列

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

執行一個返回線性迴歸一些重要關鍵值的函式

slope, intercept, r, p, std_err = stats.linregress(x, y)

建立一個函式,該函式使用 slopeintercept 值來返回一個新值。這個新值表示對應 x 值的 y 軸位置

def myfunc(x)
  return slope * x + intercept

將 x 陣列的每個值透過函式執行。這將生成一個包含新 y 軸值的新陣列

mymodel = list(map(myfunc, x))

繪製原始散點圖

plt.scatter(x, y)

繪製線性迴歸線

plt.plot(x, mymodel)

顯示圖表

plt.show()



R 代表相關性

瞭解 x 軸值和 y 軸值之間的關係很重要。如果沒有關係,線性迴歸就不能用於預測任何內容。

這種關係——相關係數——稱為 r

r 值範圍從 -1 到 1,其中 0 表示無關係,1(和 -1)表示 100% 相關。

Python 和 Scipy 模組會為您計算此值,您只需將 x 和 y 值輸入即可。

示例

我的資料與線性迴歸的擬合程度如何?

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)
自己動手試一試 »

注意:結果 -0.76 表明存在關係,雖然不完美,但表明我們可以將線性迴歸用於未來的預測。


預測未來值

現在我們可以利用收集到的資訊來預測未來值。

示例:讓我們嘗試預測一輛 10 年車齡汽車的速度。

為此,我們需要上面示例中的相同 myfunc() 函式

def myfunc(x)
  return slope * x + intercept

示例

預測一輛 10 年車齡汽車的速度

from scipy import stats

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x)
  return slope * x + intercept

speed = myfunc(10)

print(speed)
執行示例 »

示例預測速度為 85.6,我們也可以從圖表中讀出該值。


擬合效果差?

讓我們舉一個線性迴歸不是預測未來值的最佳方法的例子。

示例

這些 x 軸和 y 軸的值應該會導致線性迴歸的擬合效果非常差。

import matplotlib.pyplot as plt
from scipy import stats

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x)
  return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

結果

執行示例 »

以及 r 的關係如何?

示例

您應該得到一個非常低的 r 值。

import numpy
from scipy import stats

x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]

slope, intercept, r, p, std_err = stats.linregress(x, y)

print(r)
自己動手試一試 »

結果:0.013 表明關係非常差,並告訴我們此資料集不適合進行線性迴歸。


×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援