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输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
用Python一键搭建Http服务器的方法
Jun 01 Python
Python逐行读取文件中内容的简单方法
Feb 26 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
Apr 06 Python
python制作图片缩略图
Apr 30 Python
将python文件打包成EXE应用程序的方法
May 22 Python
30秒学会30个超实用Python代码片段【收藏版】
Oct 15 Python
python 实现检验33品种数据是否是正态分布
Dec 09 Python
Python-openCV读RGB通道图实例
Jan 17 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 Python
python FTP编程基础入门
Feb 27 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
两个开源的Php输出Excel文件类
2010/02/08 PHP
PHP页面中文乱码分析
2013/10/29 PHP
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
php实现水仙花数示例分享
2014/04/03 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
js带闹铃功能的倒计时代码
2016/09/29 Javascript
创建简单的node服务器实例(分享)
2017/06/23 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
Python根据区号生成手机号码的方法
2015/07/08 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
python Pygame的具体使用讲解
2017/11/03 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
Python单元和文档测试实例详解
2019/04/11 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
python如何制作英文字典
2019/06/25 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
质检员岗位职责
2013/12/17 职场文书
工商管理本科生求职信
2014/07/13 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
2014年财政局工作总结
2014/12/09 职场文书
少年犯观后感
2015/06/11 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL