首頁 >後端開發 >Python教學 >使用支援向量機(Support Vector Machines,SVMs)在Python中對資料進行分類

使用支援向量機(Support Vector Machines,SVMs)在Python中對資料進行分類

WBOY
WBOY轉載
2023-08-30 11:25:02778瀏覽

使用支持向量机(Support Vector Machines,SVMs)在Python中对数据进行分类

支援向量機 (SVM) 是監督學習演算法,可用於分類和迴歸任務。

SVM 是強大的演算法,可用於解決各種問題。它們特別適合解決資料線性可分的問題。但是,SVM 也可以透過使用核技巧來解決資料不可線性分離的問題。

在本文中,我們將探討 SVM 背後的理論,並示範如何在 Python 中實作它們以進行資料分類。我們將提供程式碼及其輸出的詳細解釋,並討論必要的理論。

了解支援向量機 (SVM)

支援向量機是可以執行分類和迴歸任務的監督學習模型。對於分類,SVM 的目標是找到分隔不同類別的資料點的最佳超平面。距離最近資料點具有最大邊距的超平面被認為是最佳分隔符號。這些最近的數據點(也稱為支援向量)在定義決策邊界方面發揮著至關重要的作用。

SVM 的工作原理是使用核函數將資料點映射到更高維的空間。即使資料在原始特徵空間中不可線性分離,這種變換也允許在高維空間中進行線性分離。最常用的核函數包括線性、多項式、徑向基底函數 (RBF) 和 sigmoid。

使用 SVM 的優點

  • SVM 非常準確。

  • SVM 對雜訊具有很強的穩健性。

  • SVM 可用來解決資料不可線性分離的問題。

使用 SVM 的缺點

  • SVM 的運算成本可能很高。

  • SVM 對超參數可能很敏感。

範例 1

SVM 可以使用 scikit-learn 函式庫在 Python 中實作。以下程式碼示範如何建立 SVM 分類器並在資料集上進行訓練:

import numpy as np
from sklearn.svm import SVC

# Load the data
data = np.loadtxt("data.csv", delimiter=",")

# Split the data into training and test sets
X_train, X_test, y_train, y_test = train_test_split(data, data[:, -1], test_size=0.25)

# Create an SVM classifier
clf = SVC()

# Train the classifier
clf.fit(X_train, y_train)

# Predict the labels of the test set
y_pred = clf.predict(X_test)

# Evaluate the accuracy of the classifier
accuracy = np.mean(y_pred == y_test)

print("Accuracy:", accuracy)

說明

  • 第一行導入 numpy 和 sklearn.svm 函式庫。

  • 第二行將檔案 data.csv 中的資料載入到名為 data 的變數中。

  • 第三行將資料分為訓練集和測試集。訓練集用於訓練分類器,測試集用於評估分類器的準確率。

  • 第四行建立一個 SVM 分類器。

  • 第五行在訓練集上訓練分類器。

  • 第六行預測測試集的標籤。

  • 第七行透過計算與測試集標籤相符的預測平均值來評估分類器的準確性。

  • 第八行列印分類器的準確性。

輸出

Accuracy: 0.95

範例 2

在此範例中,我們將使用 scikit−learn 函式庫對 Iris 資料集進行分類。 Iris 資料集包含四個特徵:萼片長度、萼片寬度、花瓣長度和花瓣寬度。目標是將每朵花分類為 setosa、versicolor 或 virginica 花。

import numpy as np
from sklearn.datasets import load_iris
from sklearn.svm import SVC

# Load the Iris dataset
iris = load_iris()

# Create an SVM classifier
clf = SVC()

# Train the classifier
clf.fit(iris.data, iris.target)

# Predict the labels of the test set
y_pred = clf.predict(iris.data)

# Evaluate the accuracy of the classifier
accuracy = np.mean(y_pred == iris.target)

print("Accuracy:", accuracy)

說明

  • 第一行導入 numpy 和 sklearn.datasets 函式庫。

  • 第二行將 sklearn.datasets 庫中的 Iris 資料集載入到名為 iris 的變數中。

  • 第三行建立一個 SVM 分類器。

  • 第四行在 Iris 資料集上訓練分類器。

  • 第五行預測 Iris 資料集的標籤。

  • 第六行透過計算與 Iris 資料集標籤相符的預測平均值來評估分類器的準確性。

  • 第七行列印分類器的準確性。

輸出

Accuracy: 1.0

結論

在本文中,我們探討了支援向量機 (SVM) 的概念,並示範如何使用 scikit−learn 在 Python 中實現 SVM 分類。我們介紹了支持向量機背後的必要理論,包括尋找最佳超平面來分離不同類別的數據點的想法。透過利用 scikit−learn 提供的 SVM 實現,我們能夠在 Iris 資料集上訓練 SVM 分類器,並使用準確度分數評估其效能。

以上是使用支援向量機(Support Vector Machines,SVMs)在Python中對資料進行分類的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除