IT评测·应用市场-qidao123.com

标题: 【AI知识】有监视学习分类使命之支持向量机 [打印本页]

作者: 九天猎人    时间: 2024-12-15 02:37
标题: 【AI知识】有监视学习分类使命之支持向量机
1.支持向量机概念
支持向量机(Support Vector Machine, SVM) 是一种有监视学习算法,重要用于分类使命(也可用于回归使命,即支持向量回归,SVR)。SVM的核心头脑是找到一个最优的超平面(hyperplane) 来将不同类别的数据分开,且最大化类别间边界(间隔),从而提高模子的泛化本领。
如,在二分类标题中,SVM的目标是找到一个最优的超平面(即决定边界),该平面能够将数据集中的正负类样本分开,下面都以二分类标题为例说明:
支持向量机的几个概念:

细节我有点看不懂了。。。。
SVM实例+可视化:
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from sklearn import datasets
  4. from sklearn.svm import SVC
  5. from sklearn.model_selection import train_test_split
  6. from sklearn.preprocessing import StandardScaler
  7. # 创建线性可分数据集
  8. def generate_linear_data():
  9.     # 使用sklearn生成一个线性可分的数据集
  10.     X, y = datasets.make_classification(n_samples=200, n_features=2, n_informative=2,
  11.                                          n_redundant=0, n_clusters_per_class=1, class_sep=2)
  12.     return X, y
  13. # 创建非线性可分数据集
  14. def generate_nonlinear_data():
  15.     # 使用sklearn生成一个非线性可分的数据集
  16.     # 它生成的是一个包含两个类别的数据集,其中样本数据分布在两个同心圆形状的区域内
  17.     X, y = datasets.make_circles(n_samples=200, noise=0.1, factor=0.5)
  18.     return X, y
  19. # 绘制SVM的决策边界
  20. def plot_decision_boundary(X, y, clf):
  21.     h = 0.02  # 网格间距
  22.     x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
  23.     y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
  24.     xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
  25.     Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
  26.     Z = Z.reshape(xx.shape)
  27.     plt.contourf(xx, yy, Z, alpha=0.3)
  28.     plt.scatter(X[:, 0], X[:, 1], c=y, marker='o', edgecolors='k', s=50)
  29.     plt.title("SVM Decision Boundary")
  30.     plt.show()
  31. # 训练并可视化SVM模型
  32. def train_and_visualize(X, y, kernel_type='linear'):
  33.     # 切分数据集为训练集和测试集
  34.     X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  35.     # 数据标准化
  36.     scaler = StandardScaler()
  37.     X_train = scaler.fit_transform(X_train)
  38.     X_test = scaler.transform(X_test)
  39.     # 初始化SVM分类器
  40.     clf = SVC(kernel=kernel_type)
  41.    
  42.     # 训练SVM
  43.     clf.fit(X_train, y_train)
  44.     # 打印支持向量信息
  45.     print(f"Number of support vectors: {len(clf.support_)}")
  46.     # 可视化决策边界
  47.     plot_decision_boundary(X_train, y_train, clf)
  48. # 主函数
  49. def main():
  50.     # 1. 线性可分数据
  51.     print("Training with linearly separable data...")
  52.     X_linear, y_linear = generate_linear_data()
  53.     train_and_visualize(X_linear, y_linear, kernel_type='linear')
  54.     # 2. 非线性可分数据
  55.     print("Training with non-linearly separable data...")
  56.     X_nonlinear, y_nonlinear = generate_nonlinear_data()
  57.     train_and_visualize(X_nonlinear, y_nonlinear, kernel_type='rbf')
  58. if __name__ == "__main__":
  59.     main()
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4