Python实现基于SVM的分类器的方法


Posted in Python onJuly 19, 2019

本文代码来之《数据分析与挖掘实战》,在此基础上补充完善了一下~

代码是基于SVM的分类器Python实现,原文章节题目和code关系不大,或者说给出已处理好数据的方法缺失、源是图像数据更是不见踪影,一句话就是练习分类器(?㉨?メ)

源代码直接给好了K=30,就试了试怎么选的,挑选规则设定比较单一,有好主意请不吝赐教哟

# -*- coding: utf-8 -*-
"""
Created on Sun Aug 12 12:19:34 2018

@author: Luove
"""
from sklearn import svm
from sklearn import metrics
import pandas as pd 
import numpy as np
from numpy.random import shuffle
#from random import seed
#import pickle #保存模型和加载模型
import os


os.getcwd()
os.chdir('D:/Analyze/Python Matlab/Python/BookCodes/Python数据分析与挖掘实战/图书配套数据、代码/chapter9/demo/code')
inputfile = '../data/moment.csv'
data=pd.read_csv(inputfile)

data.head()
data=data.as_matrix()
#seed(10)
shuffle(data) #随机重排,按列,同列重排,因是随机的每次运算会导致结果有差异,可在之前设置seed
n=0.8
train=data[:int(n*len(data)),:]
test=data[int(n*len(data)):,:]

#建模数据 整理
#k=30 
m=100
record=pd.DataFrame(columns=['acurrary_train','acurrary_test']) 
for k in range(1,m+1):
  # k特征扩大倍数,特征值在0-1之间,彼此区分度太小,扩大以提高区分度和准确率
  x_train=train[:,2:]*k
  y_train=train[:,0].astype(int)
  x_test=test[:,2:]*k
  y_test=test[:,0].astype(int)
  
  model=svm.SVC()
  model.fit(x_train,y_train)
  #pickle.dump(model,open('../tmp/svm1.model','wb'))#保存模型
  #model=pickle.load(open('../tmp/svm1.model','rb'))#加载模型
  #模型评价 混淆矩阵
  cm_train=metrics.confusion_matrix(y_train,model.predict(x_train))
  cm_test=metrics.confusion_matrix(y_test,model.predict(x_test))
  
  pd.DataFrame(cm_train,index=range(1,6),columns=range(1,6))
  accurary_train=np.trace(cm_train)/cm_train.sum()   #准确率计算
#  accurary_train=model.score(x_train,y_train)             #使用model自带的方法求准确率
  pd.DataFrame(cm_test,index=range(1,6),columns=range(1,6))
  accurary_test=np.trace(cm_test)/cm_test.sum()
  record=record.append(pd.DataFrame([accurary_train,accurary_test],index=['accurary_train','accurary_test']).T)

record.index=range(1,m+1)
find_k=record.sort_values(by=['accurary_train','accurary_test'],ascending=False) # 生成一个copy 不改变原变量
find_k[(find_k['accurary_train']>0.95) & (find_k['accurary_test']>0.95) & (find_k['accurary_test']>=find_k['accurary_train'])]
#len(find_k[(find_k['accurary_train']>0.95) & (find_k['accurary_test']>0.95)])
''' k=33
  accurary_train accurary_test
33    0.950617    0.95122
'''
''' 计算一下整体 
 accurary_data
 0.95073891625615758
'''
k=33
x_train=train[:,2:]*k
y_train=train[:,0].astype(int)
model=svm.SVC()
model.fit(x_train,y_train)
model.score(x_train,y_train)
model.score(datax_train,datay_train)
datax_train=data[:,2:]*k
datay_train=data[:,0].astype(int)
cm_data=metrics.confusion_matrix(datay_train,model.predict(datax_train))
pd.DataFrame(cm_data,index=range(1,6),columns=range(1,6))
accurary_data=np.trace(cm_data)/cm_data.sum()
accurary_data

REF:

《数据分析与挖掘实战》

源代码及数据需要可自取:https://github.com/Luove/Data

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python复制目录结构脚本代码分享
Mar 06 Python
编写Python脚本来实现最简单的FTP下载的教程
May 04 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
python实现批量修改图片格式和尺寸
Jun 07 Python
opencv python 图像去噪的实现方法
Aug 31 Python
解决Pycharm出现的部分快捷键无效问题
Oct 22 Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
PyTorch中permute的用法详解
Dec 30 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
Python解释器以及PyCharm的安装教程图文详解
Feb 26 Python
Python中关于logging模块的学习笔记
Jun 03 Python
Tensorflow模型实现预测或识别单张图片
Jul 19 #Python
python django下载大的csv文件实现方法分析
Jul 19 #Python
python使用flask与js进行前后台交互的例子
Jul 19 #Python
Django 模型类(models.py)的定义详解
Jul 19 #Python
Tensorflow实现神经网络拟合线性回归
Jul 19 #Python
使用TensorFlow实现简单线性回归模型
Jul 19 #Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 #Python
You might like
Terran魔法科技
2020/03/14 星际争霸
php绘图之生成饼状图的方法
2015/01/24 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
微信自定义分享php代码分析
2016/11/24 PHP
PHP编译configure时常见错误的总结
2017/08/17 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
jQuery代码优化之基本事件
2011/11/01 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
javascript的this关键字详解
2019/05/20 Javascript
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
PyQt5使用QTimer实现电子时钟
2019/07/29 Python
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
程序设计HTML5 Canvas API
2013/04/08 HTML / CSS
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
数字漫画:comiXology
2020/06/13 全球购物
简历中个人自我评价范文
2013/12/26 职场文书
领导干部考察材料
2014/02/08 职场文书
建材投资建议书
2014/05/16 职场文书
经济类毕业生求职信
2014/06/26 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
详解Django的MVT设计模式
2021/04/29 Python