SVM

理解

在二维上,找一条最优分割线将两类分开,分割线满足分类两边尽可能有最大间隙

当直线难以完成分类时,引入超平面使数据分类,分类的契机是kerneling内核

应用场景

SVM主要针对小样本数据进行学习,分类和预测(有时也较回归),有很好的泛化能力

SVM内核:

  • Linear

    主要用于线性可分的情形。参数少,速度快,适用于一般数据

  • rbf

    主要用于线性不可分的情形。参数多,分类结果非常依赖于参数。

  • Poly

    参数较多,在另外两种都不适用的时候选择

经验:

就拟合程度来讲,linear在线性可分的情况下和rbf想过差不多,在线性不可分的情况下rbf明显优于linear,poly在前两种情况下效果都不怎么好,但是在变化剧烈的情况下ploy稍微好点。
就速度来讲,linear肯定是最快的,poly的话因为参数很多,测试中最慢。
就参数而言,linear简单易用,rbf, poly参数较多,但是调参好的话可以得到较好的结果。

实战:

鸢尾花分类

  • 导包

    from sklearn.svm import SVC
    from sklearn.svm import LinearSVC
    from sklearn import datasets
  • 生成数据,训练数据

    iris = datasets.load_iris()# 只取两个特征(方便画图)X = iris.data[:,:2]
    y = iris.target# 建立模型svc_linear = SVC(kernel='linear')
    svc_rbf = SVC(kernel='rbf')#Radial Based Function 基于半径的函数
    svc_poly = SVC(kernel='poly') # poly是多项式的意思
    linear_svc = LinearSVC() # SVC(kernel = 'linear')相近方法更多,可以处理更多的数据# 训练模型svc_linear.fit(X,y)
    svc_rbf.fit(X,y)
    svc_poly.fit(X,y)
    linear_svc.fit(X,y)
  • 图片背景点

    
    # 网格密度h = 0.02# 设置x轴y轴的界限x_min,x_max = X[:,0].min()-1, X[:,0].max()+1
    y_min,y_max = X[:,1].min()-1, X[:,1].max()+1# 得到网格的坐标xx,yy = np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h))
  • 绘制图形

    
    # 设置图片标题titles = ['svc_linear','svc_rbf','svc_poly','linear_svc']plt.figure(figsize=(12,8))# 在2*2子图中画出四种SVCfor i,clf in enumerate((svc_linear,svc_rbf,svc_poly,linear_svc)):plt.subplot(2,2,i+1)Z = clf.predict(np.c_[xx.ravel(),yy.ravel()])Z = Z.reshape(xx.shape)# 等高线以及背景plt.contourf(xx,yy,Z,alpha=0.2,cmap = 'cool')# 实际点的图plt.scatter(X[:,0],X[:,1],c=y,cmap='rainbow')plt.title(titles[i])

多种核函数回归

  • 导包

    from sklearn.svm import SVR
    import numpy as np
  • 随机生成数据,训练数据

    
    #自定义样本点X = 5*np.random.rand(40,1)
    X.sort(axis = 0)
    y = np.sin(X).ravel()#添加噪声y[::5] += 3*(0.5 - np.random.rand(8))#建立模型svr_linear = SVR(kernel='linear')
    svr_rbf = SVR(kernel = 'rbf')
    svr_poly = SVR(kernel = 'poly')#训练并预测p_y_linear = svr_linear.fit(X,y).predict(X)
    p_y_rbf = svr_rbf.fit(X,y).predict(X)
    p_y_poly = svr_poly.fit(X,y).predict(X)
  • 绘图

    
    # 画图plt.figure(figsize=(12,8))# 画出真实样本点plt.scatter(X,y,c='k',label='data')# 画出预测曲线plt.plot(X,p_y_linear,c='navy',label='linear')
    plt.plot(X,p_y_rbf,c='r',label='rbf')
    plt.plot(X,p_y_poly,c='g',label='poly')
    plt.legend()

K-Means

应用场景

一种无监督学习,事先不知道结果,自动将相似对象归类

原理

与knn类似,使用欧式距离函数,求各点到各分类中心点的距离,距离近的归为一类

步骤图

缺陷

  • K值的选定(分多少类)

    • ISODATA算法通过类的自动合并和分裂,得到较为合理的类型数目K
  • 初始随机种子点的选取(分类参考点)
    • K-Means++算法可以用来解决这个问题,其可以有效地选择初始点

步骤

  1. 从数据中选择k个对象作为初始聚类中心;
  2. 计算每个聚类对象到聚类中心的距离来划分;
  3. 再次计算每个聚类中心
  4. 计算标准测度函数,直到达到最大迭代次数,则停止,否则,继续操作。
  5. 确定最优的聚类中心

实战

Make_blobs随机生成点

  • 效果图

  • 导包

    from sklearn.cluster import KMeansimport matplotlib.pyplot as plt
    %matplotlib inline
    import numpy as np
    from sklearn.datasets import make_blobs#生成样本点X_train,y_train = make_blobs(n_samples=300,centers=4,cluster_std=  0.6, random_state = 9)
  • 建模

    
    # 建立模型kmeans = KMeans(n_clusters=4)
    kmeans.fit(X_train)
    y_ = kmeans.predict(X_train)
  • 画图

    
    #画图plt.figure(figsize = (12,8))
    centers = kmeans.cluster_centers_
    plt.scatter(X_train[:,0],X_train[:,1],c = y_)
    plt.scatter(centers[:,0],centers[:,1],c = 'r',s = 100,alpha = 0.4)

SVM与K-Means相关推荐

  1. OpenCV的k - means聚类 -对图片进行颜色量化

    OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...

  2. OpenCV官方文档 理解k - means聚类

    理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...

  3. kmeans改进 matlab,基于距离函数的改进k―means 算法

    摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...

  4. 文献记录(part89)--I-k-means-+:An iterative clustering algorithm based on an enhanced k -means

    学习笔记,仅供参考,有错必究 关键词:k均值:解决方案改进:准确的k均值:迭代改进 I-k-means-+:An iterative clustering algorithm based on an ...

  5. K means 图片压缩

    k-means的基本原理较为清晰,这里不多赘述,本次博客主要通过基础的k means算法进行图像的压缩处理. 原理分析 在彩色图像中,每个像素的大小为3字节(RGB),可以表示的颜色总数为256 * ...

  6. 脑电信号(EEG)处理中的机器学习方法总结——回归模型,SVM、K近邻、人工神经网络、朴素贝叶斯、决策树和随机森林、集成学习、模糊逻辑、LDA线性判别分析、K-means聚类、强化学习、迁移学习

    本文归纳总结了机器学习在脑电分析中的应用,并详细介绍回归模型,SVM.K近邻.人工神经网络.朴素贝叶斯.决策树和随机森林.集成学习.模糊逻辑.LDA线性判别分析.K-means聚类.强化学习.迁移学习 ...

  7. 为了联盟还是为了部落 | K means

    1. 问题 人类有个很有趣的现象,一群人在一起,过一段时间就会自发的形成一个个的小团体.好像我们很擅长寻找和自己气质接近的同类.其实不只是人类,数据也有类似情况,这就是聚类(Clustering)的意 ...

  8. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  9. k means聚类算法_一文读懂K-means聚类算法

    1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...

  10. simple k means

    //选择初始的k个质点 for (int j = initInstances.numInstances() - 1; j >= 0; j--) { instIndex = RandomO.nex ...

最新文章

  1. 学习java技术有前途吗?当然有前途
  2. mysql中需要提交的操作_MySQL常用操作及基础知识
  3. 微信小程序隐藏菜单栏目下转发按钮的几个方法
  4. asp.net取消页面表单内文本输入框的Enter响应
  5. Spark的新方案UnifiedMemoryManager内存管理模型分析
  6. Ubuntu配置了静态IP之后,旧的IP出现是什么情况
  7. android内存泄露_Java应用程序中的内存泄漏及内存管理
  8. 操作系统概念 学习笔记
  9. 计算机端最好用的词典——GoldenDict
  10. php条形码宽度,PHP条形码生成封装类
  11. wireshark常用过滤表达式
  12. 经度纬度地图搜索器_百度地图搜索经度纬度_地球经度纬度示意图
  13. 尚硅谷JAVA基础笔记吐血整理
  14. 移动端调试神器(TCon)-- 基于 try catch 捕获所有异常的web移动端控制台(调试工具、console)
  15. 会议记录管理系统(5) -浏览会议记录模块设计
  16. upupoo启动不了 mysql_【upupoo动态桌面壁纸和mysql-jdbc.jar哪个好用】upupoo动态桌面壁纸和mysql-jdbc.jar对比-ZOL下载...
  17. c语言压缩存储,数据的压缩存储与解压缩算法实现(C语言)
  18. NCBI Pathogen Detection project简介
  19. java 坦克世界源代码教程_译文教程:坦克世界游戏制作技术分享
  20. 2019-7-29-PowerShell-拿到显卡信息

热门文章

  1. C语言浮点数不能取余,C语言浮点型数据能不能取余?
  2. 常用字符串函数的使用
  3. 计算机考研复试(离散数学)
  4. 屏幕的单位如何计算机,如何查看您的计算机显示器有多少英寸
  5. 阿里出海遭遇挑战,Lazada三年换三帅仍无法制霸东南亚
  6. [31期]上班这点事
  7. MFC AFX_EXT_CLASS
  8. 转载:深入浅出的讲解傅里叶变换
  9. WechatSpellbook学习笔记
  10. 学习管理系统 LMS