下面是一个使用Python实现SVM来解决二分类问题的例子:
# 导入所需的库
from sklearn.datasets import make_blobs
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
import matplotlib.pyplot as plt
# 生成一个二分类数据集
X, y = make_blobs(n_samples=100, centers=2, random_state=42)
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建并训练SVM模型
svm = SVC(kernel='linear')
svm.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = svm.predict(X_test)
# 绘制数据点和分隔超平面
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='bwr')
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = svm.decision_function(xy).reshape(XX.shape)
ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5,
linestyles=['--', '-', '--'])
ax.scatter(svm.support_vectors_[:, 0], svm.support_vectors_[:, 1], s=100,
linewidth=1, facecolors='none', edgecolors='k')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('SVM Classifier')
plt.show()
在此示例中,我们使用make_blobs
函数生成一个包含两个类别的二分类数据集。然后,我们使用train_test_split
函数将数据集拆分为训练集和测试集。接下来,我们创建了一个SVC
对象作为SVM模型,并使用fit
方法对模型进行训练。然后,我们使用训练好的模型在测试集上进行预测,并将预测结果保存在y_pred
变量中。
最后,我们使用Matplotlib库绘制数据点和分隔超平面。scatter
函数用于绘制数据点,不同类别的点使用不同的颜色表示。decision_function
方法用于计算分隔超平面,然后使用contour
函数绘制分隔超平面。同时,我们还使用support_vectors_
属性绘制了支持向量的圆圈表示。
请确保在运行代码之前安装所需的库(如scikit-learn和Matplotlib)。此代码可根据实际问题进行调整和扩展。
如果你想更深入地了解人工智能的其他方面,比如机器学习、深度学习、自然语言处理等等,也可以点击这个链接,我按照如下图所示的学习路线为大家整理了100多G的学习资源,基本涵盖了人工智能学习的所有内容,包括了目前人工智能领域最新顶会论文合集和丰富详细的项目实战资料,可以帮助你入门和进阶。
人工智能交流群(大量资料)