SVM二分类结果画图
时间: 2023-07-24 20:04:23 浏览: 101
要画出SVM的二分类结果,我们可以使用Python中的matplotlib库。下面是一个简单的例子:
首先,我们需要生成一些数据来进行分类。这里我们使用make_blobs函数来生成随机的二维数据。
```python
from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=100, centers=2, random_state=42)
```
接下来,我们可以使用SVM模型对数据进行分类。
```python
from sklearn.svm import SVC
clf = SVC(kernel='linear')
clf.fit(X, y)
```
然后,我们可以定义一个函数来绘制数据和决策边界。
```python
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
def plot_svc_decision_function(clf):
"""Plot the decision function for a 2D SVC"""
x_min, x_max = plt.xlim()
y_min, y_max = plt.ylim()
xx, yy = np.meshgrid(np.linspace(x_min, x_max, 100),
np.linspace(y_min, y_max, 100))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.2)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50)
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('SVM Decision Boundary')
plt.show()
```
最后,我们可以调用这个函数来绘制SVM的决策边界。
```python
plot_svc_decision_function(clf)
```
完整的代码如下:
```python
from sklearn.datasets import make_blobs
from sklearn.svm import SVC
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
X, y = make_blobs(n_samples=100, centers=2, random_state=42)
clf = SVC(kernel='linear')
clf.fit(X, y)
def plot_svc_decision_function(clf):
"""Plot the decision function for a 2D SVC"""
x_min, x_max = plt.xlim()
y_min, y_max = plt.ylim()
xx, yy = np.meshgrid(np.linspace(x_min, x_max, 100),
np.linspace(y_min, y_max, 100))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.2)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50)
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('SVM Decision Boundary')
plt.show()
plot_svc_decision_function(clf)
```
这样,我们就可以看到SVM的二分类结果了。
阅读全文