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

機器學習 - 網格搜尋


在此頁面上,W3schools.com 與 紐約資料科學學院 合作,為我們的學生提供數字培訓內容。


網格搜尋

大多數機器學習模型都包含可以調整以改變模型學習方式的引數。例如,來自 sklearn 的邏輯迴歸模型有一個引數 C,用於控制正則化,這會影響模型的複雜性。

我們如何為 C 選擇最佳值?最佳值取決於用於訓練模型的資料。


它是如何工作的?

一種方法是嘗試不同的值,然後選擇給出最佳分數的值。這種技術被稱為網格搜尋。如果我們要為兩個或更多引數選擇值,我們將評估所有值的組合,從而形成一個值網格。

在我們開始示例之前,最好先了解我們正在更改的引數的作用。C 值越高,表示模型認為訓練資料與真實世界資訊越相似,對訓練資料賦予更大的權重。而 C 值越低,則相反。


使用預設引數

首先,讓我們看看在不使用網格搜尋的情況下,僅使用基本引數能生成什麼樣的結果。

首先,我們必須載入將要使用的資料集。

來自 sklearn 的資料集
鳶尾花 = datasets.load_iris()

接下來,為了建立模型,我們必須有一組自變數 X 和一個因變數 y。

X = 鳶尾花['資料']
y = 鳶尾花['目標']

現在我們將載入邏輯模型來對鳶尾花進行分類。

來自 sklearn.linear_model 匯入 LogisticRegression

建立模型,將 max_iter 設定為更高的值以確保模型找到結果。

請記住,邏輯迴歸模型中 C 的預設值是 1,我們稍後會進行比較。

在下面的示例中,我們檢視鳶尾花資料集,並嘗試使用邏輯迴歸中 C 的不同值來訓練模型。

邏輯迴歸 = LogisticRegression(max_iter = 10000)

建立模型後,我們必須將模型擬合到資料。

print(logit.fit(X,y))

為了評估模型,我們執行 score 方法。

print(logit.score(X,y))

示例

來自 sklearn 的資料集
來自 sklearn.linear_model 匯入 LogisticRegression

鳶尾花 = datasets.load_iris()

X = 鳶尾花['資料']
y = 鳶尾花['目標']

邏輯迴歸 = LogisticRegression(max_iter = 10000)

print(logit.fit(X,y))

print(logit.score(X,y))
執行示例 »

C = 1 的預設設定下,我們取得了 0.973 的分數。

讓我們看看透過使用不同值的網格搜尋是否能做得更好,目前的分數為 0.973。


廣告


實現網格搜尋

我們將遵循之前的相同步驟,但這次我們將為 C 設定一個值範圍。

知道為搜尋引數設定哪些值需要領域知識和實踐的結合。

由於 C 的預設值是 1,我們將設定一個圍繞它的值範圍。

C = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]

接下來,我們將建立一個 for 迴圈來替換 C 的值,並在每次更改時評估模型。

首先我們將建立一個空列表來儲存分數。

分數 = []

為了改變 C 的值,我們必須遍歷值的範圍,並在每次迭代中更新引數。

對於 C 中的每個選擇
  logit.set_params(C=choice)
  logit.fit(X, y)
  scores.append(logit.score(X, y))

將分數儲存在列表中後,我們可以評估 C 的最佳選擇。

print(scores)

示例

來自 sklearn 的資料集
來自 sklearn.linear_model 匯入 LogisticRegression

鳶尾花 = datasets.load_iris()

X = 鳶尾花['資料']
y = 鳶尾花['目標']

邏輯迴歸 = LogisticRegression(max_iter = 10000)

C = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]

分數 = []

對於 C 中的每個選擇
  logit.set_params(C=choice)
  logit.fit(X, y)
  scores.append(logit.score(X, y))

print(scores)
執行示例 »

結果解釋

我們可以看到,較低的 C 值表現不如基準引數 1。然而,當我們將 C 的值增加到 1.75 時,模型的準確性有所提高。

似乎將 C 增加到超過這個量並不能提高模型準確性。


關於最佳實踐的注意事項

我們使用訓練邏輯迴歸模型的資料對它進行了評分。如果模型與該資料過於吻合,它可能不擅長預測未見過的資料。這種統計誤差被稱為**過擬合**。

為了避免被訓練資料上的分數誤導,我們可以留出我們資料的一部分,專門用於測試模型。請參考關於訓練/測試分割的講座,以避免被誤導和過擬合。


×

聯絡銷售

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

報告錯誤

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

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

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