Sklearn之支持向量机分类

‘‘‘
    支持向量机:
        支持向量机原理:
            分类原则:寻求最优分类边界
                1.正确:对大部分样本可以正确地划分类别。
                2.泛化:最大化支持向量间距。
                3.公平:与支持向量等距。
                4.简单:线性,直线或平面,分割超平面。

        基于核函数的升维变换:通过名为核函数的特征变换,增加新的特征,使得低维度空间中的线性不可分问题变为高维度空间中的线性可分问题。

            1>线性核函数:linear,不通过核函数进行维度提升,仅在原始维度空间中寻求线性分类边界。

            2>多项式核函数:poly,通过多项式函数增加原始样本特征的高次方幂
                    y = x_1+x_2
                    y = x_1^2 + 2x_1x_2 + x_2^2
                    y = x_1^3 + 3x_1^2x_2 + 3x_1x_2^2 + x_2^3

            3>径向基核函数:rbf,通过高斯分布函数增加原始样本特征的分布概率

        基于线性核函数的SVM分类相关API:
                model = svm.SVC(kernel=‘linear‘)
                model.fit(train_x, train_y)

        案例,基于径向基核函数训练sample2.txt中的样本数据。
            步骤:
                1.读取文件,绘制样本点的分布情况
                2.拆分测试集合训练集
                3.基于svm训练分类模型
                4.输出分类效果,绘制分类边界
‘‘‘
import numpy as np
import sklearn.model_selection as ms
import sklearn.svm as svm
import sklearn.metrics as sm
import matplotlib.pyplot as mp

data = np.loadtxt(‘./ml_data/multiple2.txt‘, delimiter=‘,‘, unpack=False, dtype=‘f8‘)
x = data[:, :-1]
y = data[:, -1]

# 才分训练集和测试集
train_x, test_x, train_y, test_y = ms.train_test_split(x, y, test_size=0.25, random_state=5)

# 训练svm模型---基于线性核函数
# model = svm.SVC(kernel=‘linear‘)
# model.fit(train_x, train_y)

# 训练svm模型---基于多项式核函数
# model = svm.SVC(kernel=‘poly‘, degree=3)
# model.fit(train_x, train_y)

# 训练svm模型---基于多项式核函数
model = svm.SVC(kernel=‘rbf‘, C=600)
model.fit(train_x, train_y)

# 预测
pred_test_y = model.predict(test_x)

# 计算模型精度
bg = sm.classification_report(test_y, pred_test_y)
print(‘分类报告:‘, bg, sep=‘\n‘)

# 绘制分类边界线
l, r = x[:, 0].min() - 1, x[:, 0].max() + 1
b, t = x[:, 1].min() - 1, x[:, 1].max() + 1
n = 500
grid_x, grid_y = np.meshgrid(np.linspace(l, r, n), np.linspace(b, t, n))
bg_x = np.column_stack((grid_x.ravel(), grid_y.ravel()))
bg_y = model.predict(bg_x)
grid_z = bg_y.reshape(grid_x.shape)

# 画图显示样本数据
mp.figure(‘SVM Classification‘, facecolor=‘lightgray‘)
mp.title(‘SVM Classification‘, fontsize=16)
mp.xlabel(‘X‘, fontsize=14)
mp.ylabel(‘Y‘, fontsize=14)
mp.tick_params(labelsize=10)
mp.pcolormesh(grid_x, grid_y, grid_z, cmap=‘gray‘)
mp.scatter(test_x[:, 0], test_x[:, 1], s=80, c=test_y, cmap=‘jet‘, label=‘Samples‘)

mp.legend()
mp.show()

输出结果:
分类报告:
              precision    recall  f1-score   support

         0.0       0.91      0.87      0.89        45
         1.0       0.81      0.87      0.84        30

    accuracy                           0.87        75
   macro avg       0.86      0.87      0.86        75
weighted avg       0.87      0.87      0.87        75

  

  

  

原文地址:https://www.cnblogs.com/yuxiangyang/p/11198695.html

时间: 2024-10-08 12:31:12

Sklearn之支持向量机分类的相关文章

sklearn特征选择和分类模型

数据格式: 这里.原始特征的输入文件的格式使用libsvm的格式,即每行是label index1:value1 index2:value2这样的稀疏矩阵的格式. sklearn中自带了非常多种特征选择的算法. 我们选用特征选择算法的根据是数据集和训练模型. 以下展示chi2的使用例.chi2,採用卡方校验的方法进行特征选择.比較适合0/1型特征和稀疏矩阵. from sklearn.externals.joblib import Memory from sklearn.datasets imp

sklearn之逻辑分类

''' 逻辑分类:----底层为线性回归问题 通过输入的样本数据,基于多元线型回归模型求出线性预测方程. y = w0+w1x1+w2x2 但通过线型回归方程返回的是连续值,不可以直接用于分类业务模型,所以急需一种方式使得把连续的预测值->离散的预测值. [-oo, +oo]->{0, 1} 逻辑函数(sigmoid):y = 1 / (1+e^(-x)), 该逻辑函数当x>0,y>0.5:当x<0, y<0.5: 可以把样本数据经过线性预测模型求得的值带入逻辑函数的x

SVM支持向量机分类

一.SVM目标和原理 svm分为线性可分和线性不可分两种 线性可分: svm.SVC(C=0.8, kernel='linear', class_weight={-1:1, 1:20}) 线性不可分: 使用径向基(高斯)核函数 svm.SVC(C=0.8, kernel='rbf', class_weight={-1: 1, 1: 10}) 目标函数:所有样本点到所有可能分界线最小值中的最大值即为目标函数    找到目标函数之前首先要找到支撑向量.分界线L1具有无数条,需要在可行范围内使得D的值

sklearn之人工分类和分类边界线

''' 人工分类:人为的按照自定的规则对事物进行分类 特征1 特征2 输出 3 1 0 2 5 1 1 8 1 6 4 0 5 2 0 3 5 1 4 7 1 4 -1 0 ... ... ... 6 8 1 5 1 0 分类边界线的绘制 ''' import numpy as np import matplotlib.pyplot as mp x = np.array([[3, 1], [2, 5], [1, 8], [6, 4], [5, 2], [3, 5], [4, 7], [4, -1

sklearn集成支持向量机svm.SVC参数说明

经常用到sklearn中的SVC函数,这里把文档中的参数翻译了一些,以备不时之需. 本身这个函数也是基于libsvm实现的,所以在参数设置上有很多相似的地方.(PS: libsvm中的二次规划问题的解决算法是SMO).sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, probability=False, tol=0.001, cache_size=200, class_w

机器学习:wine 分类

数据来源:http://archive.ics.uci.edu/ml/datasets/Wine 参考文献:<机器学习Python实战>魏贞原 博文目的:复习 工具:Geany #导入类库 from pandas import read_csv                                    #读数据from pandas.plotting import scatter_matrix            #画散点图from pandas import set_optio

sklearn简介

sklearn 机器学习的工具箱 sklearn功能模块 分类: 识别某个对象属于哪个类别------垃圾邮件监测, 图像识别 回归: 预测与对象相关联的连续值属性------>股价 聚类: 将相似对象自动分组------>客户细分, 分组实验结果 降维: 减少要考虑的随机变量的数量------>可视化 模型选择: 比较, 验证, 选择参数和模型------>通过参数调整提高精度 预处理: 特征提取和归一化------>把输入数据转换为机器学习算法可用的数据 sklearn统

信用评分预测模型(四)--支持向量机算法

前言 下面将对数据利用支持向量机算法得到结果. 代码 #标准化数据 from sklearn import preprocessing from sklearn.svm import SVC from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt import pandas as pd #读取文件 # readFileName="dataset\german-全标准化.xls&quo

Halcon学习笔记之支持向量机(二)

例程:classify_halogen_bulbs.hdev 在Halcon中模式匹配最成熟最常用的方式该署支持向量机了,在本例程中展示了使用支持向量机对卤素灯的质量检测方法.通过这个案例,相信大家可以对支持向量机的使用有一个更加清晰的了解.在相当多的检测和识别的应用中,都可以使用相同的方法来解决分类问题. 图1. 卤素灯图像 大致原理: 一.准备阶段:描述样本 1. 准备好两组卤素灯图像样本,好坏的各若干张图像: 2. 对样本图像进行分割,获取卤素灯关键部位区域: 3. 选择合适的对图像的描述