svm核函数python
时间: 2023-10-10 15:13:58 浏览: 140
SVM_svmpython_PYTHON案例_python_SVM_
在Python中,可以使用sklearn包来实现SVM核函数。sklearn提供了多种核函数的选择,包括线性核函数、多项式核函数和高斯核函数等。
要使用核函数,可以使用svm.SVC()函数,并在参数中指定kernel的类型。例如,使用多项式核函数可以将参数kernel设置为'poly',使用高斯核函数可以将参数kernel设置为'rbf'。
以下是一个示例代码,演示了如何使用多项式核函数和高斯核函数:
```python
from sklearn import svm
import numpy as np
import matplotlib.pyplot as plt
# 准备训练样本
x = [[1, 8], [3, 20], [1, 15], [3, 35], [5, 35], [4, 40], [7, 80], [6, 49]]
y = [1, 1, -1, -1, 1, -1, -1, 1]
# 开始训练
clf_poly = svm.SVC(kernel='poly') # 多项式核函数
clf_rbf = svm.SVC(kernel='rbf') # 高斯核函数
clf_poly.fit(x, y)
clf_rbf.fit(x, y)
# 绘制样本点和决策边界
h = 0.02 # 设置网格步长
x_min, x_max = min(np.array(x)[:, 0]) - 1, max(np.array(x)[:, 0]) + 1
y_min, y_max = min(np.array(x)[:, 1]) - 1, max(np.array(x)[:, 1]) + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z_poly = clf_poly.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
Z_rbf = clf_rbf.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
plt.figure(figsize=(10, 4))
plt.subplot(121)
plt.contourf(xx, yy, Z_poly, cmap=plt.cm.coolwarm, alpha=0.8)
plt.scatter(np.array(x)[:, 0], np.array(x)[:, 1], c=y, cmap=plt.cm.coolwarm)
plt.title('Polynomial Kernel')
plt.subplot(122)
plt.contourf(xx, yy, Z_rbf, cmap=plt.cm.coolwarm, alpha=0.8)
plt.scatter(np.array(x)[:, 0], np.array(x)[:, 1], c=y, cmap=plt.cm.coolwarm)
plt.title('Gaussian Kernel')
plt.show()
```
阅读全文