程序示例–非线性分类

接下来,我们采用高斯核函数来解决非线性可分问题,由于数据集较大,我们使用性能更好的完整版 SMO 算法进行训练:

# coding: utf8
# svm/test_non_linear.py
import smo
import numpy as np
from sklearn import datasets
from scipy.io import loadmat
import matplotlib.pyplot as pltdata = loadmat('data/ex6data2.mat')X = np.mat(data['X'])
y = np.mat(data['y'], dtype=np.float)
y[y==0] = -1m, n = X.shape
C = 1.0
tol = 1e-3
maxIter = 5
kernel = smo.rbfKernel(0.1)trainSimple, train, predict = smo.getSmo(X, y, C, tol, maxIter, kernel=kernel)
alphas, w, b, supportVectorsIndex, supportVectors, iterCount = train()
print supportVectorsIndex
print len(supportVectorsIndex)
print 'iterCount:%d' % iterCountpredictions = predict(X, alphas, b, supportVectorsIndex, supportVectors)
errorCount = (np.multiply(predictions, y).A  < 0 ).sum()
print errorCount
print 'error rate: %.2f'%(float(errorCount)/m)# 绘制数据点
x1Min = X[:, 0].min()
x1Max = X[:, 0].max()
x2Min = X[:, 1].min()
x2Max = X[:, 1].max()
plt.title('C=%.1f'%C)
plt.xlabel('X1')
plt.ylabel('X2')
plt.xlim(x1Min, x1Max)
plt.ylim(x2Min, x2Max)for i in range(m):x = X[i].A[0]if y[i] == 1:color = 'black'if i in supportVectorsIndex:color = 'red'plt.scatter(x[0], x[1], marker='*', color=color, s=50)else:color = 'green'if i in supportVectorsIndex:color = 'red'plt.scatter(x[0], x[1], marker='o', color=color, s=50)# 绘制决策边界
xx1, xx2 = np.meshgrid(np.linspace(x1Min, x1Max, 100),np.linspace(x2Min, x2Max, 100)
)
predictX = np.mat(np.c_[xx1.ravel(), xx2.ravel()])
predictions = predict(predictX, alphas, b, supportVectorsIndex, supportVectors)
predictions = predictions.reshape(xx1.shape)
plt.contour(xx1, xx2, predictions, [0.5], linewidths=5)
plt.show()

测试结果如下:

5.9 程序示例--非线性分类-机器学习笔记-斯坦福吴恩达教授相关推荐

  1. 5.8 程序示例--线性分类-机器学习笔记-斯坦福吴恩达教授

    程序示例–线性分类 首先,我们使用线性核函数来训练线性可分问题,这里,我们使用的是简化版 SMO 算法: # coding: utf8 # svm/test_linear import smo imp ...

  2. 8.7 程序示例--异常检测-机器学习笔记-斯坦福吴恩达教授

    程序示例–异常检测 异常检测模型 提供了一般高斯分布模型和多元高斯分布模型.其中,多元高斯分布模型被限制到了同轴分布: # coding: utf8 # anomaly_detection/anoma ...

  3. 7.3 程序示例--PCA 模型-机器学习笔记-斯坦福吴恩达教授

    程序示例–PCA 模型 # coding: utf8 # pca/pca.pyimport numpy as npdef normalize(X):"""数据标准化处理A ...

  4. 5.10 程序示例--模型选择-机器学习笔记-斯坦福吴恩达教授

    程序示例–模型选择 在新的一组样本中,我们将通过交叉验证集选择模型,参数 CCC 和 高斯核的参数 δδδ 我们都将在以下 8 个值中选取测试,则总共构成了 8×8=648×8=648×8=64 个模 ...

  5. 4.7 程序示例--算法诊断-机器学习笔记-斯坦福吴恩达教授

    程序示例–算法诊断 我们手头有一份大坝水的流量与水位关系的数据,首先我们将其划分为训练集.交叉验证集和测试集: # coding: utf-8 # algorithm_analysis/diagnos ...

  6. 1.3 程序示例--梯度下降-机器学习笔记-斯坦福吴恩达教授

    回归模块 回归模块中提供了批量梯度下降和随机梯度下降两种学习策略来训练模型: # coding: utf-8 # linear_regression/regression.py import nump ...

  7. 3.10 程序示例--神经网络设计-机器学习笔记-斯坦福吴恩达教授

    神经网络设计 在神经网络的结构设计方面,往往遵循如下要点: 输入层的单元数等于样本特征数. 输出层的单元数等于分类的类型数. 每个隐层的单元数通常是越多分类精度越高,但是也会带来计算性能的下降,因此, ...

  8. 4.4 机器学习系统设计--垃圾邮件分类-机器学习笔记-斯坦福吴恩达教授

    机器学习系统设计–垃圾邮件分类 假定我们现有一封邮件,其内容如下: From: cheapsales@buystufffromme.com To: ang@cs.stanford.edu Subjec ...

  9. 6.7 程序示例--K-Means-机器学习笔记-斯坦福吴恩达教授

    程序示例–K-Means 函数定义 # coding: utf-8 # kmeans/kmeans.py import numpy as npdef loadDataSet(filename):&qu ...

最新文章

  1. 如何控制C#Socket的连接超时时间
  2. Python单元测试框架之unittest+requests+ddt+excel接口自动化测试
  3. 将本地已经存在的代码跟github上新建的仓库建立关联,解决“fatal: 'origin' does not appear to be a git repository...”
  4. 使用规则_英文标点符号的使用规则
  5. php与mysql关系大揭秘_【慕课笔记】PHP与MySQL关系大揭秘
  6. 如何优雅的输出PHP调试信息
  7. SEO的艺术(原书第2版)
  8. MapGis67读取点线区
  9. Java 开发工具 Eclipse
  10. 用c#做的打地鼠小游戏,整理一下上课学的
  11. ftp上传工具中文版,有好用的中文版ftp上传工具吗?ftp上传工具中文版
  12. 基于PHP的旅游资讯管理系统
  13. 弹出框美化 alert样式美化
  14. easyswoole 使用 从thinkphp5.1数据库ORM类库
  15. python用四个圆画成花_【元旦手工】最美元旦手工花手工教程,赶紧提前收藏吧!...
  16. 高清壁纸免费下载网站
  17. 各种笔记本、台式和主板品牌,进入BIOS设置的方法大全
  18. 2016年12月六级农业翻译
  19. 苹果软件更新在哪里_【软件资讯】苹果发布 iOS 13.3.1 / iPadOS 13.3.1 正式版更新...
  20. requireJS的基本用法

热门文章

  1. php5权限控制修饰符,interface和abstract
  2. 如何解决win8系统下卸载软件出现错误代码为2502和2503的问题
  3. 制作keil5的pack
  4. Mysql分组合并函数并进行数据列处理
  5. DFS 之 poj 2386 Lake Counting
  6. Collection View Programming Guide for iOS---(四)---Using the Flow Layout
  7. C语言位运算实现加法
  8. 未解决oracle错误12505、01034、27101
  9. ArcGIS Engine控件运行许可学习总结
  10. 7个jquery easy ui 基本组件图解