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实现多行注释的另类方法
Aug 22 Python
Python中还原JavaScript的escape函数编码后字符串的方法
Aug 22 Python
Django模板变量如何传递给外部js调用的方法小结
Jul 24 Python
Python2和Python3中print的用法示例总结
Oct 25 Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 Python
在Python运行时动态查看进程内部信息的方法
Feb 22 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
Aug 05 Python
对Django中内置的User模型实例详解
Aug 16 Python
Python输出指定字符串的方法
Feb 06 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
Matplotlib绘制混淆矩阵的实现
May 27 Python
Python中如何处理常见报错
Jan 18 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
用libtemplate实现静态网页生成
2006/10/09 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
PHP的运行机制与原理(底层)
2015/11/16 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
JQuery里选择超链接的实现代码
2011/05/22 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
浅谈Javascript数组索引
2015/07/29 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
Python中return函数返回值实例用法
2020/11/19 Python
公司成立感言
2014/01/11 职场文书
咖啡厅创业计划书范本
2014/01/22 职场文书
考试不及格的检讨书
2014/01/22 职场文书
销售业务员岗位职责
2014/01/29 职场文书
自我推荐信范文
2014/05/09 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
Redis三种集群模式详解
2021/10/05 Redis
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript