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 多进程通信模块的简单实现
Feb 20 Python
Python赋值语句后逗号的作用分析
Jun 08 Python
基于Python Shell获取hostname和fqdn释疑
Jan 25 Python
python使用matplotlib绘制折线图教程
Feb 08 Python
python实现随机调用一个浏览器打开网页
Apr 21 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
Apr 27 Python
python抓取网站的图片并下载到本地的方法
May 22 Python
ipython和python区别详解
Jun 26 Python
Python Lambda函数使用总结详解
Dec 11 Python
Django xadmin安装及使用详解
Oct 26 Python
Python还能这么玩之只用30行代码从excel提取个人值班表
Jun 05 Python
python中pycryto实现数据加密
Apr 29 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
PHP多态代码实例
2015/06/26 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
使用豆瓣源来安装python中的第三方库方法
2021/01/26 Python
HTML5图片预览实例分享
2014/06/04 HTML / CSS
高级电工工作职责
2013/11/21 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
优秀纪检干部材料
2014/08/27 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
学校2014年度工作总结
2014/12/06 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
学习新党章心得体会2016
2016/01/15 职场文书
心得体会格式及范文
2016/01/25 职场文书
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby