在Python中,我們可以使用scikit-learn
庫來實現支持向量機(SVM)。以下是一個簡單的示例,演示如何使用scikit-learn
的SVC
類來訓練一個SVM分類器,并使用它對一些數據進行預測。
python復制代碼
# 導入必要的庫 | |
from sklearn import datasets | |
from sklearn.model_selection import train_test_split | |
from sklearn.preprocessing import StandardScaler | |
from sklearn.svm import SVC | |
from sklearn.metrics import classification_report | |
# 加載鳶尾花數據集(iris dataset) | |
iris = datasets.load_iris() | |
X = iris.data | |
y = iris.target | |
# 將數據集拆分為訓練集和測試集 | |
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) | |
# 對數據進行標準化處理,因為SVM對數據的尺度很敏感 | |
scaler = StandardScaler() | |
X_train = scaler.fit_transform(X_train) | |
X_test = scaler.transform(X_test) | |
# 創建一個SVC對象(支持向量機分類器) | |
# 這里我們使用了線性核函數('linear'),但你也可以嘗試使用其他核函數,如'rbf' | |
svm_classifier = SVC(kernel='linear', C=1.0, random_state=42) | |
# 使用訓練數據訓練SVM分類器 | |
svm_classifier.fit(X_train, y_train) | |
# 使用測試數據對模型進行預測 | |
y_pred = svm_classifier.predict(X_test) | |
# 打印分類報告,以評估模型性能 | |
print(classification_report(y_test, y_pred)) |
這段代碼首先導入了必要的庫和模塊,然后加載了鳶尾花數據集。接下來,它將數據集拆分為訓練集和測試集,并對數據進行標準化處理。然后,它創建了一個SVC對象(支持向量機分類器),并使用訓練數據訓練了這個分類器。最后,它使用測試數據對模型進行了預測,并打印了分類報告來評估模型的性能。
注意:SVC
類中的kernel
參數決定了使用的核函數類型,這會影響模型的復雜性和性能。在這個例子中,我們使用了線性核函數('linear'
),但你也可以嘗試使用其他核函數,如徑向基函數('rbf'
)或多項式函數('poly'
)。C
參數是一個正則化參數,用于控制模型的復雜度。較小的C
值指定了更強的正則化。