理解支持向量机:从线性到非线性分类

需积分: 0 5 下载量 113 浏览量 更新于2024-08-02 收藏 204KB PDF 举报
"Support Vector Machines Explained by Tristan Fletcher" 这篇文档是Tristan Fletcher撰写的一份关于支持向量机(Support Vector Machines, SVM)的详细解释,旨在使机器学习初学者能够尽可能简单地理解这一概念。它包含了四个章节,分别探讨了不同情况下的支持向量机理论和应用。 第一章:线性可分数据的理论和应用 在这个章节,作者介绍了在数据可以被一个超平面线性分割的情况下,如何进行分类的问题。这个超平面是最大间隔(margin)的边界,间隔最大化是SVM的核心思想。通过寻找能够最大化类别之间间隔的超平面,SVM能够创建一个鲁棒的分类器,因为靠近超平面的数据点对模型的影响最大,被称为支持向量。 第二章:非完全线性可分数据的理论和应用 当数据集不能完全被一个超平面线性分割时,SVM引入了软间隔的概念。软间隔允许一部分数据点可以错误分类,通过引入松弛变量(slack variables)来处理这些情况。这一章节讨论了如何在最大化间隔和最小化误分类数量之间找到一个平衡,以适应非线性可分数据。 第三章:支持向量机理论和应用 此章节进一步扩展了SVM的理论,可能涉及到核函数(kernel trick)的介绍。核函数允许SVM在高维空间中进行非线性分类,即使原始数据在低维空间中是非线性可分的。通过映射数据到高维空间,原本不可分的线性问题在新空间中变得可分,从而使SVM能够解决更复杂的分类问题。 第四章:非线性支持向量机理论和应用 这一章节专门探讨非线性SVM的应用,可能会涵盖各种不同的核函数,如多项式核、高斯核(RBF)等,以及如何选择合适的核函数来适应不同数据集的特性。此外,还可能涉及SVM在实际问题中的应用,例如图像分类、文本分类等。 这份文档提供了一个全面而易懂的SVM入门指南,不仅涵盖了基本的数学原理,如微积分、向量几何和拉格朗日乘子,还讲解了如何将这些理论应用于实际的机器学习问题中。无论你是机器学习的新手还是寻求复习SVM概念的专家,这都是一个有价值的资源。

import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from mpl_toolkits.mplot3d import Axes3D from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler data=pd.read_csv('H:/analysis_results/mean_HN.csv') data.head() x=data.iloc[:,1:7] y=data.iloc[:,6] scaler=StandardScaler() scaler.fit(x) x_scaler=scaler.transform(x) print(x_scaler.shape) pca=PCA(n_components=3) x_pca=pca.fit_transform(x_scaler) print(x_pca.shape) #查看各个主成分对应的方差大小和占全部方差的比例 #可以看到前2个主成分已经解释了样本分布的90%的差异了 print('explained_variance_:',pca.explained_variance_) print('explained_variance_ratio_:',pca.explained_variance_ratio_) print('total explained variance ratio of first 6 principal components:',sum(pca.explained_variance_ratio_)) #将分析的结果保存成字典 result={ 'explained_variance_:',pca.explained_variance_, 'explained_variance_ratio_:',pca.explained_variance_ratio_, 'total explained variance ratio:',np.sum(pca.explained_variance_ratio_)} df=pd.DataFrame.from_dict(result,orient='index',columns=['value']) df.to_csv('H:/analysis_results/Cluster analysis/pca_explained_variance_HN.csv') #可视化各个主成分贡献的方差 #fig1=plt.figure(figsize=(10,10)) #plt.rcParams['figure.dpi'] = 300#设置像素参数值 plt.rcParams['path.simplify'] = False#禁用抗锯齿效果 plt.figure() plt.plot(np.arange(1,4),pca.explained_variance_,color='blue', linestyle='-',linewidth=2) plt.xticks(np.arange(1, 4, 1))#修改X轴间隔为1 plt.title('PCA_plot_HN') plt.xlabel('components_n',fontsize=16) plt.ylabel('explained_variance_',fontsize=16) #plt.savefig('H:/analysis_results/Cluster analysis/pca_explained_variance_HN.png') plt.show()报错'numpy.float64' object is not iterable,如何修改

2023-06-10 上传