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中的闭包详细介绍和实例
Nov 21 Python
Python实现学校管理系统
Jan 11 Python
Python 装饰器实现DRY(不重复代码)原则
Mar 05 Python
Python面向对象之继承和组合用法实例分析
Aug 27 Python
Python使用folium excel绘制point
Jan 03 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
如何让python的运行速度得到提升
Jul 08 Python
Django正则URL匹配实现流程解析
Nov 13 Python
Python 按比例获取样本数据或执行任务的实现代码
Dec 03 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 Python
python和anaconda的区别
May 06 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中过滤非法字符的具体实现
2013/10/29 PHP
基于PHP生成简单的验证码
2016/06/01 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
ztree获取当前选中节点子节点id集合的方法
2015/02/12 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
微信小程序表单验证功能完整实例
2017/12/01 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
浅谈Python实现Apriori算法介绍
2017/12/20 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
Python实现登陆文件验证方法
2018/10/06 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
python实现五子棋小游戏
2020/03/25 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
加拿大时装零售商:Influence U
2018/12/22 全球购物
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
前台文员岗位职责及工作流程
2013/11/19 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
交通安全横幅标语
2014/10/07 职场文书
文明礼仪倡议书
2015/04/28 职场文书
民政局未婚证明
2015/06/15 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
Python实现归一化算法详情
2022/03/18 Python