02-32 线性支持向量9-机(鸢尾花分类)

目录

  • 线性支持向量机(鸢尾花分类)
  • 一、导入模块
  • 二、获取数据
  • 三、构建决策边界
  • 四、线性可分支持向量机
    • 4.1 训练模型
    • 4.2 可视化
  • 五、线性支持向量机
    • 5.1 训练模型(C=0.01)
    • 5.2 可视化
    • 5.3 训练模型(C=100)
    • 5.4 可视化

更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/

线性支持向量机(鸢尾花分类)

一、导入模块

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from matplotlib.font_manager import FontProperties
from sklearn import datasets
from sklearn.svm import SVC
%matplotlib inline
font = FontProperties(fname='/Library/Fonts/Heiti.ttc')

二、获取数据

iris_data = datasets.load_iris()
X = iris_data.data[:, [2, 3]]
y = iris_data.target
label_list = ['山鸢尾', '杂色鸢尾', '维吉尼亚鸢尾']

三、构建决策边界

def plot_decision_regions(X, y, classifier=None):
    marker_list = ['o', 'x', 's']
    color_list = ['r', 'b', 'g']
    cmap = ListedColormap(color_list[:len(np.unique(y))])

    x1_min, x1_max = X[:, 0].min()-1, X[:, 0].max()+1
    x2_min, x2_max = X[:, 1].min()-1, X[:, 1].max()+1
    t1 = np.linspace(x1_min, x1_max, 666)
    t2 = np.linspace(x2_min, x2_max, 666)

    x1, x2 = np.meshgrid(t1, t2)
    y_hat = classifier.predict(np.array([x1.ravel(), x2.ravel()]).T)
    y_hat = y_hat.reshape(x1.shape)
    plt.contourf(x1, x2, y_hat, alpha=0.2, cmap=cmap)
    plt.xlim(x1_min, x1_max)
    plt.ylim(x2_min, x2_max)

    for ind, clas in enumerate(np.unique(y)):
        plt.scatter(X[y == clas, 0], X[y == clas, 1], alpha=0.8, s=50,
                    c=color_list[ind], marker=marker_list[ind], label=label_list[clas])

四、线性可分支持向量机

4.1 训练模型

svm = SVC(kernel='linear', random_state=1)
svm.fit(X, y)
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape='ovr', degree=3, gamma='auto_deprecated',
  kernel='linear', max_iter=-1, probability=False, random_state=1,
  shrinking=True, tol=0.001, verbose=False)

4.2 可视化

plot_decision_regions(X, y, classifier=svm)
plt.xlabel('花瓣长度(cm)', fontproperties=font)
plt.ylabel('花瓣宽度(cm)', fontproperties=font)
plt.title('线性可分支持向量机(鸢尾花分类)', fontproperties=font, fontsize=20)
plt.legend(prop=font)
plt.show()

五、线性支持向量机

5.1 训练模型(C=0.01)

svm = SVC(kernel='linear', C=0.01, random_state=1)
svm.fit(X, y)
SVC(C=0.01, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape='ovr', degree=3, gamma='auto_deprecated',
  kernel='linear', max_iter=-1, probability=False, random_state=1,
  shrinking=True, tol=0.001, verbose=False)

5.2 可视化

plot_decision_regions(X, y, classifier=svm)
plt.xlabel('花瓣长度(cm)', fontproperties=font)
plt.ylabel('花瓣宽度(cm)', fontproperties=font)
plt.title('线性支持向量机(鸢尾花分类)', fontproperties=font, fontsize=20)
plt.legend(prop=font)
plt.show()

5.3 训练模型(C=100)

svm = SVC(kernel='linear', C=100, random_state=1)
svm.fit(X, y)
SVC(C=100, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape='ovr', degree=3, gamma='auto_deprecated',
  kernel='linear', max_iter=-1, probability=False, random_state=1,
  shrinking=True, tol=0.001, verbose=False)

5.4 可视化

plot_decision_regions(X, y, classifier=svm)
plt.xlabel('花瓣长度(cm)', fontproperties=font)
plt.ylabel('花瓣宽度(cm)', fontproperties=font)
plt.title('线性支持向量机(鸢尾花分类)', fontproperties=font, fontsize=20)
plt.legend(prop=font)
plt.show()

原文地址:https://www.cnblogs.com/nickchen121/p/11686748.html

时间: 2024-10-29 18:32:44

02-32 线性支持向量9-机(鸢尾花分类)的相关文章

【机器学习基础】支持向量回归

引言 这一小节介绍一下支持向量回归,我们在之前介绍的核逻辑回归使用表示定理(Representer Theorem),将逻辑回归编程Kernel的形式,这一节我们沿着这个思路出发,看看如何将回归问题和Kernel的形式结合起来. Kernel Ridge Regression 上次介绍的表示定理告诉我们,如果我们要处理的是有L2的正则项的线性模型,其最优解是数据zn的线性组合.我们可以将这样的线性模型变成Kernel的形式. 既然我们知道这样带有L2-Regularizer的线性回归模型的最佳解

支持向量机原理(五)线性支持回归

支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五)线性支持回归 在前四篇里面我们讲到了SVM的线性分类和非线性分类,以及在分类时用到的算法.这些都关注与SVM的分类问题.实际上SVM也可以用于回归模型,本篇就对如何将SVM用于回归模型做一个总结.重点关注SVM分类和SVM回归的相同点与不同点. 1. SVM回归模型的损失函数度量 回顾下我们前面SV

64位win2008下IIS未开启32位支持导致DLL无法加载问题

部署一个WEB项目,在本机.本地服务器都没有问题,但部署到远程服务器以后,提示有个DLL无法加载: Server Error in '/' Application. Could not load file or assembly 'Common.Component.Repository' or one of its dependencies. An attempt was made to load a program with an incorrect format. 首先肯定的是,系统声称无法

ubuntu 64 位 开发 android 需要安装的 32 位支持库

ubuntu 13.04 及以前可以直接安装 32 位支持库. 以后的版本就只能一条命令一条命令慢慢查了,以下是我发现的需要安装的库. sudo apt-get install lib32z1 lib32stdc++6

通过支持向量排名法来做行人鉴定

其中为合页函数 通过支持向量排名法来做行人鉴定

ubuntu 64位android项目报错的解决方案,打开64位 Ubuntu 的32位支持功能

ubuntu的64位下的android环境,说实话,还真得费点精力了,解决一个问题,又出来一个新问题. 小编昨天刚好不容易将android的环境搭建好了,这不,刚建了个项目,直接就报错,下面是罗列出的几条: 1. libstdc++.so.6:cannot open shared object file:no such file or directory 2. Description Resource Path Location Type Error executing aapt: Cannot

怎样打开64位 Ubuntu 的32位支持功能?

大多数使用基于 Ubuntu/Debian 的发行版的人都更倾向于选择64位的系统,对吧?这是因为64位的系统能够充分发挥你的硬件的全部性能, 它使你能够在更紧张的内存资源下使用更复杂的软件,而且是真的快速使用,不必每次做一件小事都要等上许久.现在,32位仅有一个优点,那就是没有太多兼容 性上的问题.每次JAVA更新都很让人很困惑,因为大多数用户都不能获得需要的库文件.在过去,很多别的软件和驱动也没有64位版. 因此, 如果现在你有一个64位架构的系统,而且你可以使用之前的支持:包括驱动.64位

支持向量分类方法

1. 普通的支持向量积分类方法 import numpy as np # 加载数据 def loadData(): DataMatrix = [] LabelMatrix = [] with open("testSet.txt") as fr: for line in fr.readlines(): datas = line.strip().split('\t') DataMatrix.append([float(datas[0]), float(datas[1])]) LabelMa

pytorch解决鸢尾花分类

半年前用numpy写了个鸢尾花分类200行..每一步计算都是手写的  python构建bp神经网络_鸢尾花分类 现在用pytorch简单写一遍,pytorch语法解释请看上一篇pytorch搭建简单网络 1 import pandas as pd 2 import torch.nn as nn 3 import torch 4 5 6 class MyNet(nn.Module): 7 def __init__(self): 8 super(MyNet, self).__init__() 9 s