能否提供一个使用支持向量机(SVM)并展示不同核函数(如线性、多项式或径向基函数RBF)的实际例子,包括如何设置参数和解释其工作原理?
时间: 2024-12-20 08:29:05 浏览: 1
支持向量机 SVM 和 核函数的 MATLAB 程序集
当然可以。支持向量机(SVM)是一种监督学习算法,用于分类和回归分析。它们通过找到最优超平面将数据分成不同的类别,这个超平面距离各个类别的样本最近。SVM的核心在于选择合适的核函数,它决定了如何度量样本之间的相似性。
以下是使用Python的Scikit-Learn库,通过一个简单的例子展示不同核函数:
```python
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
# 加载示例数据集(例如Iris)
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 数据预处理(标准化)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)
# 定义不同核函数的例子:
# 1. 线性核 (linear)
svm_linear = SVC(kernel='linear', C=1) # C是正则化参数,越大对异常值越敏感
svm_linear.fit(X_train, y_train)
# 2. 多项式核 (polynomial)
svm_poly = SVC(kernel='poly', degree=3, C=1) # degree指多项式的次数
svm_poly.fit(X_train, y_train)
# 3. 径向基函数核 (rbf, 高斯核)
svm_rbf = SVC(kernel='rbf', gamma='scale', C=1) # gamma是高斯分布宽度,'scale'使其自动适应特征尺度
svm_rbf.fit(X_train, y_train)
# 对比模型性能
models = ['Linear SVM', 'Polynomial SVM', 'RBF SVM']
for model in models:
print(f"{model} accuracy: {svm_linear.score(X_test, y_test)}")
阅读全文