【揭開Scikit-learn支持向量機神秘面紗】實戰案例帶你輕鬆入門!

提問者:用戶RRLY 發布時間: 2025-06-08 02:38:24 閱讀時間: 3分鐘

最佳答案

引言

支撐向量機(Support Vector Machine,SVM)是一種富強的呆板進修演算法,廣泛利用於分類跟回歸成績。Scikit-learn庫供給了對SVM演算法的實現,使得利用SVM變得簡單而高效。本文將經由過程一個實戰案例,帶你輕鬆入門Scikit-learn中的SVM。

SVM簡介

SVM的目標是找到一個超平面,將差別類其余樣本點儘可能地分開。在二分類成績中,SVM經由過程最大年夜化兩類樣本點之間的間隔來實現這一點。SVM可能處理線性可分跟線性弗成分的數據,經由過程核函數將數據映射到高維空間,實現非線性分類。

實戰案例:鳶尾花數據集分類

在本案例中,我們將利用鳶尾花數據集,經由過程SVM停止分類。

1. 數據載入與預處理

起首,我們須要載入鳶尾花數據集,並停止預處理。

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# 載入數據集
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)

# 特徵標準化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

2. SVM模型練習

接上去,我們利用SVM模型停止練習。

from sklearn.svm import SVC

# 實例化SVM模型
model = SVC(kernel='linear')

# 練習模型
model.fit(X_train, y_train)

3. 模型評價

利用測試集評價模型的機能。

from sklearn.metrics import classification_report, accuracy_score

# 猜測
y_pred = model.predict(X_test)

# 評價
print(classification_report(y_test, y_pred))
print("Accuracy:", accuracy_score(y_test, y_pred))

4. 模型參數調優

為了進步模型的機能,我們可能對SVM的參數停止調優。

from sklearn.model_selection import GridSearchCV

# 參數網格
param_grid = {
    'C': [0.1, 1, 10],
    'kernel': ['linear', 'rbf'],
    'gamma': [0.001, 0.01, 0.1, 1]
}

# 實例化網格查抄
grid_search = GridSearchCV(model, param_grid, cv=5)

# 查抄最佳參數
grid_search.fit(X_train, y_train)

# 輸出最佳參數
print("Best parameters:", grid_search.best_params_)

總結

經由過程本文的實戰案例,我們懂得了Scikit-learn中SVM的基本用法,包含數據預處理、模型練習、評價跟參數調優。SVM是一種富強的呆板進修演算法,在多個範疇都有廣泛的利用。盼望本文能幫助你輕鬆入門SVM。

相關推薦