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编写Linux系统守护进程实例
Feb 03 Python
在Python下使用Txt2Html实现网页过滤代理的教程
Apr 11 Python
Python脚本文件打包成可执行文件的方法
Jun 02 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
Python在图片中插入大量文字并且自动换行
Jan 02 Python
Python实现将HTML转成PDF的方法分析
May 04 Python
python占位符输入方式实例
May 27 Python
flask实现验证码并验证功能
Dec 05 Python
PyQt5 如何让界面和逻辑分离的方法
Mar 24 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
如何在C++中调用Python
May 21 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
可以保证单词完整性的PHP英文字符串截取代码分享
2014/07/15 PHP
php自定文件保存session的方法
2014/12/10 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
PHP chop()函数讲解
2019/02/11 PHP
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
JS 创建对象的模式实例小结
2020/04/28 Javascript
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
Python闭包的两个注意事项(推荐)
2017/03/20 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
Java平台和其他软件平台有什么不同
2015/06/05 面试题
入党积极分子思想汇报
2014/01/02 职场文书
经典洗发水广告词
2014/03/13 职场文书
大学生村官承诺书
2014/03/28 职场文书
毕业生工作求职信
2014/06/30 职场文书
镇创先争优活动总结
2014/08/28 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
2016年敬老月活动总结
2016/04/05 职场文书