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创建关联数组(字典)的方法
May 04 Python
分析并输出Python代码依赖的库的实现代码
Aug 09 Python
Python自动化测试ConfigParser模块读写配置文件
Aug 15 Python
python3库numpy数组属性的查看方法
Apr 17 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
python实现决策树分类
Aug 30 Python
Python中函数的返回值示例浅析
Aug 28 Python
iPython pylab模式启动方式
Apr 24 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
Nov 17 Python
python实现图片,视频人脸识别(dlib版)
Nov 18 Python
tensorflow学习笔记之tfrecord文件的生成与读取
Mar 31 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 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
域名查询代码公布
2006/10/09 PHP
php表单转换textarea换行符的方法
2010/09/10 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
PHP中phar包的使用教程
2017/06/14 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
js文件Cookie存取值示例代码
2014/02/20 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
Angular17之Angular自定义指令详解
2018/01/21 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
Python文件处理
2016/02/29 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
10个顶级Python实用库推荐
2021/03/04 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
球队口号
2014/06/18 职场文书
副总经理岗位职责范本
2014/09/30 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
详解Redis基本命令与使用场景
2021/06/01 Redis
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python