程序示例–线性分类

首先,我们使用线性核函数来训练线性可分问题,这里,我们使用的是简化版 SMO 算法:

# coding: utf8
# svm/test_linear
import smo
import numpy as np
from sklearn import datasets
from scipy.io import loadmat
import matplotlib.pyplot as pltdata = loadmat('data/ex6data1.mat')X = np.mat(data['X'])
y = np.mat(data['y'], dtype=np.float)
y[y==0] = -1m, n = X.shape
tol = 1e-3
maxIter = 20
C = 1.0
# C = 100.0trainSimple, train, predict = smo.getSmo(X, y, C, tol, maxIter)
alphas, w, b, supportVectorsIndex, supportVectors, iterCount = trainSimple()
print w
print b
print len(supportVectorsIndex)
print 'iterCount:%d'%iterCountpredictions = predict(X, alphas, b, supportVectorsIndex, supportVectors)
errorCount = (np.multiply(predictions, y).A  < 0 ).sum()
print 'error rate: %.2f'%(float(errorCount)/m)# 绘制数据点
x1Min = X[:, 0].min()
x1Max = X[:, 0].max()
x2Min = X[:, 1].min()
x2Max = X[:, 1].max()
plt.xlabel('X1')
plt.ylabel('X2')
plt.xlim(x1Min - 1, x1Max + 1)
plt.ylim(x2Min - 1, x2Max + 1)
plt.title('C=%.1f'%C)
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)# 绘制决策边界
x = np.arange(x1Min, x1Max, 0.1)
h = (-w[0,0] * x - b[0,0]) / w[1,0]
plt.plot(x, h)
plt.show()
  • C=1C=1C=1 时,可以看到,左侧的一个正样本被误分为负样本:
  • C=100C=100C=100 时,可以看到,所有样本都被正确分类,但是,多少有点过拟合,新来的样本很有可能被误分:

    红色样本为支持向量

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

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

    程序示例–非线性分类 接下来,我们采用高斯核函数来解决非线性可分问题,由于数据集较大,我们使用性能更好的完整版 SMO 算法进行训练: # coding: utf8 # svm/test_non_li ...

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

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

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

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

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

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

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

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

  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. 详解:UML类图符号、各种关系说明以及举例
  2. python编程在哪里写-python入门该从哪里开始?
  3. 【bzoj2186】[Sdoi2008]沙拉公主的困惑 欧拉函数
  4. golang中的执行规则
  5. 参加web前端学习前需要知道的注意事项
  6. 【网络安全】Windows恶意软件BazarLoader分析
  7. linux查看网卡物理编号_关于如何查看多网卡物理机中网卡序号与物理网卡的对应该关系...
  8. .mvn 需要放git上吗_下巴反复长痘,饮食上需要忌口吗?
  9. 深受程序员鄙视的外行语录,你都听过吗?
  10. 鲜为人知的Java 8功能:广义目标类型推断
  11. 在WebLogic 12c上运行RichFaces 4.1.0.Final
  12. C++语言基础 —— STL —— 容器与迭代器 —— vector
  13. python内嵌函数和闭包与java 匿名内部类_Lambda表达式与匿名内部类的联系和区别...
  14. 304. 二维区域和检索 - 矩阵不可变
  15. HDU2837 Calculation(指数循环节)题解
  16. 圆柱体积怎么算立方公式_祖暅原理和球的体积公式
  17. 事业单位计算机常识PPT,计算机基础知识:PPT常用操作(六)
  18. 「HenCoder Plus」Android 高级培养计划 FAQ
  19. Xshell5:Xshell下载和安装教程
  20. 超详细的Django面试题

热门文章

  1. 使用python制作神经网络——搭建框架
  2. ubuntu下 将证书导入java的cacerts证书库
  3. can与could区别
  4. 基于libsvm的中文文本分类原型
  5. UA PHYS515A 电磁理论II 静电学问题的一个例子
  6. Split-plot设计 SAS实践
  7. C# DirectX 开发2 - 定义一个矩阵和赋值
  8. VC mfc 多文档程序更改子文档标题名
  9. 使用Bochs调试Linux内核初级入门
  10. Matlab的File菜单功能图解 - 导入数据、保存工作空间、搜索路径、系统参数