SVM与K-Means
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++算法可以用来解决这个问题,其可以有效地选择初始点
步骤
- 从数据中选择k个对象作为初始聚类中心;
- 计算每个聚类对象到聚类中心的距离来划分;
- 再次计算每个聚类中心
- 计算标准测度函数,直到达到最大迭代次数,则停止,否则,继续操作。
- 确定最优的聚类中心
实战
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相关推荐
- OpenCV的k - means聚类 -对图片进行颜色量化
OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...
- OpenCV官方文档 理解k - means聚类
理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...
- kmeans改进 matlab,基于距离函数的改进k―means 算法
摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...
- 文献记录(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 ...
- K means 图片压缩
k-means的基本原理较为清晰,这里不多赘述,本次博客主要通过基础的k means算法进行图像的压缩处理. 原理分析 在彩色图像中,每个像素的大小为3字节(RGB),可以表示的颜色总数为256 * ...
- 脑电信号(EEG)处理中的机器学习方法总结——回归模型,SVM、K近邻、人工神经网络、朴素贝叶斯、决策树和随机森林、集成学习、模糊逻辑、LDA线性判别分析、K-means聚类、强化学习、迁移学习
本文归纳总结了机器学习在脑电分析中的应用,并详细介绍回归模型,SVM.K近邻.人工神经网络.朴素贝叶斯.决策树和随机森林.集成学习.模糊逻辑.LDA线性判别分析.K-means聚类.强化学习.迁移学习 ...
- 为了联盟还是为了部落 | K means
1. 问题 人类有个很有趣的现象,一群人在一起,过一段时间就会自发的形成一个个的小团体.好像我们很擅长寻找和自己气质接近的同类.其实不只是人类,数据也有类似情况,这就是聚类(Clustering)的意 ...
- k均值聚类算法(K Means)及其实战案例
算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...
- k means聚类算法_一文读懂K-means聚类算法
1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...
- simple k means
//选择初始的k个质点 for (int j = initInstances.numInstances() - 1; j >= 0; j--) { instIndex = RandomO.nex ...
最新文章
- Visual Web Development 2005开发ASP.NET使用小技巧
- 宏定义中的#、##操作符和... 、 _ _VA_ARGS_ _解析
- visualstudio开始调试不执行_攻击者是如何滥用msvsmon和Windows远程调试器的
- 命令行下的FTP使用详解
- 软件性能测试过程详解与案例剖析_推荐软件测试书籍
- 苹果app商品定价_【知乎问答】苹果 App Store 新推出的 1 元或 3 元定价对开发者有什么影响?...
- WINDOWS API编程乱叹
- MatlabR2014a安装工具包
- RMAN Encrypted Backups
- SpringBoot+Vue+Mybatis-plus 博客(一):完成博客后台前端登录页面、后端登录接口
- 特征选择时 的 特征子集选择和特征评价
- 索辰科技在科创板过会:拟募资金额有所下调,上半年亏损4000万元
- [数据][json格式] 2016年统计用区划代码和城乡划分代码
- JSON解析合集:你再也不用怕JSON解析了!!!
- 分布式文件系统FastDFS集群搭建
- java基于ssm的学校教务管理系统的设计与实现论文-计算机毕业设计
- Java XML转换为JSON XML解析 转换为JSON Java 实现JSON转换为XML json转xml
- 六大设计模式原则-迪米特法则
- 芯片测试的DC/AC/Fast/slow模式
- java no arguments_java中的arguement是什么意思?