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. Visual Web Development 2005开发ASP.NET使用小技巧
  2. 宏定义中的#、##操作符和... 、 _ _VA_ARGS_ _解析
  3. visualstudio开始调试不执行_攻击者是如何滥用msvsmon和Windows远程调试器的
  4. 命令行下的FTP使用详解
  5. 软件性能测试过程详解与案例剖析_推荐软件测试书籍
  6. 苹果app商品定价_【知乎问答】苹果 App Store 新推出的 1 元或 3 元定价对开发者有什么影响?...
  7. WINDOWS API编程乱叹
  8. MatlabR2014a安装工具包
  9. RMAN Encrypted Backups
  10. SpringBoot+Vue+Mybatis-plus 博客(一):完成博客后台前端登录页面、后端登录接口
  11. 特征选择时 的 特征子集选择和特征评价
  12. 索辰科技在科创板过会:拟募资金额有所下调,上半年亏损4000万元
  13. [数据][json格式] 2016年统计用区划代码和城乡划分代码
  14. JSON解析合集:你再也不用怕JSON解析了!!!
  15. 分布式文件系统FastDFS集群搭建
  16. java基于ssm的学校教务管理系统的设计与实现论文-计算机毕业设计
  17. Java XML转换为JSON XML解析 转换为JSON Java 实现JSON转换为XML json转xml
  18. 六大设计模式原则-迪米特法则
  19. 芯片测试的DC/AC/Fast/slow模式
  20. java no arguments_java中的arguement是什么意思?

热门文章

  1. 相亲聊什么?想要避免尬聊,就从这6个话题入手
  2. 计算机操作系统(慕课版-汤小丹)习题
  3. 11.14-11.21
  4. 水果店如何写文案,做水果店发的文案
  5. 计算机网络物理层测试2
  6. 补单平台开发搭建源码_补单系统开发搭建IDEA导入jdk8源码学习(报错解决方案)
  7. html如何读取pdf,html页面读取PDF小案例
  8. 64位windows系统的PatchGuard
  9. 系统动力学软件vensim之指数增长
  10. ACM 常用思维技巧