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中文網其他相關文章!