選單
×
   ❮     
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 證書

機器學習 - 訓練/測試


評估您的模型

在機器學習中,我們建立模型來預測某些事件的結果,就像在前一章中,我們預測了已知汽車重量和發動機尺寸時的二氧化碳排放量。

為了衡量模型是否足夠好,我們可以使用一種叫做“訓練/測試”的方法。


什麼是訓練/測試?

訓練/測試是一種衡量模型準確性的方法。

它之所以被稱為訓練/測試,是因為您將資料集分成兩部分:訓練集和測試集。

80% 用於訓練,20% 用於測試。

您使用訓練集來**訓練**模型。

您使用測試集來**測試**模型。

**訓練**模型意味著**建立**模型。

**測試**模型意味著測試模型的準確性。


從資料集開始

從您想要測試的資料集開始。

我們的資料集展示了商店中 100 名顧客及其購物習慣。

示例

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

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

結果

x 軸表示購買前停留的分鐘數。

y 軸表示購買時花費的金額。

執行示例 »



分成訓練/測試

**訓練**集應該是原始資料中 80% 的隨機選擇。

**測試**集應該是剩餘的 20%。

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]


顯示訓練集

使用訓練集顯示相同的散點圖

示例

plt.scatter(train_x, train_y)
plt.show()

結果

它看起來像原始資料集,所以它似乎是一個公平的選擇。

執行示例 »


顯示測試集

為了確保測試集沒有完全不同,我們也會檢視測試集。

示例

plt.scatter(test_x, test_y)
plt.show()

結果

測試集也看起來像原始資料集。

執行示例 »


擬合數據集

這個資料集看起來像什麼?在我看來,我認為最適合的將是多項式迴歸,所以讓我們畫一條多項式迴歸線。

要繪製一條穿過資料點的線,我們使用 matplotlib 模組的 plot() 方法。

示例

繪製一條穿過資料點的多項式迴歸線

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

myline = numpy.linspace(0, 6, 100)

plt.scatter(train_x, train_y)
plt.plot(myline, mymodel(myline))
plt.show()

結果

執行示例 »

結果可以支援我對資料集適合多項式迴歸的建議,儘管如果我們嘗試預測資料集之外的值,它會給出一些奇怪的結果。例如:該線表示在商店停留 6 分鐘的顧客將進行價值 200 的購買。這可能是一種過擬合的跡象。

但是 R 方分數呢?R 方分數是衡量我的資料集擬合模型程度的一個很好的指標。


R2

還記得 R2,也稱為 R 方嗎?

它衡量 x 軸和 y 軸之間的關係,其值範圍從 0 到 1,其中 0 表示沒有關係,1 表示完全相關。

sklearn 模組有一個名為 r2_score() 的方法,可以幫助我們找到這種關係。

在這種情況下,我們希望衡量顧客在商店停留的分鐘數與他們花費的金額之間的關係。

示例

我的訓練資料在多項式迴歸中的擬合程度如何?

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

r2 = r2_score(train_y, mymodel(train_x))

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

注意:結果 0.799 表明存在良好的關係。

引入測試集

現在我們已經建立了一個還不錯的模型,至少在訓練資料方面是這樣。

現在我們還想用測試資料來測試模型,看看它是否給出相同的結果。

示例

讓我們找出使用測試資料時的 R2 分數

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)

x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

r2 = r2_score(test_y, mymodel(test_x))

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

注意:結果 0.809 表明模型也擬合測試集,我們有信心可以使用該模型來預測未來值。


預測值

既然我們已經確定我們的模型是好的,我們就可以開始預測新值了。

示例

如果顧客在商店停留 5 分鐘,她或他會花多少錢?

print(mymodel(5))
執行示例 »

該示例預測顧客將花費 22.88 美元,這似乎與圖表相符。


×

聯絡銷售

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

報告錯誤

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

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

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