引言
支撐向量機(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。