写一段代码,完成支持向量机分类,划分超平面,显示间隔边界,找到在间隔边界上的支持向量并用红色五角星标出
时间: 2024-04-30 12:24:18 浏览: 80
好的,以下是支持向量机分类的代码,包括划分超平面、显示间隔边界、找到在间隔边界上的支持向量并用红色五角星标出:
```
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
# 生成一些随机数据
np.random.seed(0)
X = np.r_[np.random.randn(20, 2) - [2, 2], np.random.randn(20, 2) + [2, 2]]
y = [0] * 20 + [1] * 20
# 训练支持向量机模型
clf = svm.SVC(kernel='linear', C=1)
clf.fit(X, y)
# 显示间隔边界和支持向量
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)
plt.axis('tight')
# 找到支持向量的索引
sv_idx = clf.support_
# 显示支持向量
plt.scatter(X[sv_idx, 0], X[sv_idx, 1], s=80, facecolors='none', edgecolors='r')
plt.plot([-5, 5], [(-clf.intercept_[0]-(-5)*clf.coef_[0][0])/clf.coef_[0][1], (-clf.intercept_[0]-5*clf.coef_[0][0])/clf.coef_[0][1]], 'k--')
plt.plot([-5, 5], [(1-clf.intercept_[0]-(-5)*clf.coef_[0][0])/clf.coef_[0][1], (1-clf.intercept_[0]-5*clf.coef_[0][0])/clf.coef_[0][1]], 'k')
plt.plot([-5, 5], [(-1-clf.intercept_[0]-(-5)*clf.coef_[0][0])/clf.coef_[0][1], (-1-clf.intercept_[0]-5*clf.coef_[0][0])/clf.coef_[0][1]], 'k')
plt.xlim([-5, 5])
plt.ylim([-5, 5])
plt.show()
```
希望对您有帮助!
而笑话嘛……为什么程序员总是喜欢用“Hello World”作为第一个程序?因为他们都希望世界上的每个人都能用他们写的程序!
阅读全文