Python中的SVM實例

PHPz
發布: 2023-06-11 20:42:06
原創
1124 人瀏覽過

Python中的支援向量機(Support Vector Machine,SVM)是一個強大的監督學習演算法,可以用來解決分類和迴歸問題。 SVM在處理高維度資料和非線性問題的時候表現出色,被廣泛地應用於資料探勘、影像分類、文字分類、生物資訊學等領域。

在本文中,我們將介紹在Python中使用SVM進行分類的實例。我們將使用scikit-learn函式庫中的SVM模型,該函式庫提供了許多強大的機器學習演算法。

首先,我們需要安裝scikit-learn函式庫,可以在終端機中使用以下指令進行安裝:

pip install scikit-learn
登入後複製

接著,我們將使用經典的Iris資料集來示範SVM的分類效果。 Iris資料集包含150個樣本,分為三類,每類包含50個樣本。每個樣本有4個特徵:花萼長度、花萼寬度、花瓣長度和花瓣寬度。我們將使用SVM對這些樣本進行分類。

首先,我們需要匯入需要的函式庫:

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import accuracy_score
登入後複製

接著,我們載入Iris資料集:

iris = datasets.load_iris()
登入後複製

然後,我們將資料分為訓練集和測試集:

X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=0)
登入後複製

在這裡,我們使用了train_test_split函數,將資料集隨機分為訓練集和測試集,其中test_size參數指定了測試集佔總資料集的比例為30%。

接下來,我們將使用SVM模型對訓練集進行擬合:

clf = svm.SVC(kernel='linear', C=1)
clf.fit(X_train, y_train)
登入後複製

這裡,我們使用了線性核函數,並且指定了一個正則化參數C=1。 SVM的超參數C控制了模型的準確性和複雜性之間的權衡。 C值越小,模型越簡單,容易欠擬合;C值越大,模型越複雜,容易過度擬合。通常,我們需要透過交叉驗證來選擇合適的C值。

接著,我們使用訓練好的模型,對測試集進行預測:

y_pred = clf.predict(X_test)
登入後複製

最後,我們可以使用accuracy_score函數,計算分類準確率:

accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
登入後複製

完整的程式碼如下:

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import svm
from sklearn.metrics import accuracy_score

# Load iris dataset
iris = datasets.load_iris()

# Split data into train and test
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=0)

# Fit SVM model on training data
clf = svm.SVC(kernel='linear', C=1)
clf.fit(X_train, y_train)

# Predict on test data
y_pred = clf.predict(X_test)

# Compute accuracy score
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
登入後複製

在本例中,我們使用了SVM模型進行分類,針對的是一個非常常見的資料集,Iris資料集。 SVM的優點在於強大的分類能力、適用於高維度資料和非線性問題。實現SVM需要對一系列超參數進行調優,以達到最佳的分類效果。

以上是Python中的SVM實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板