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 自动提交和抓取网页
Jul 13 Python
Python的Bottle框架的一些使用技巧介绍
Apr 08 Python
Python IDE PyCharm的基本快捷键和配置简介
Nov 04 Python
python中nan与inf转为特定数字方法示例
May 11 Python
Python操作MongoDB详解及实例
May 18 Python
python模块之paramiko实例代码
Jan 31 Python
使用pip发布Python程序的方法步骤
Oct 11 Python
解决yum对python依赖版本问题
Jul 05 Python
基于pytorch 预训练的词向量用法详解
Jan 06 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
python文件名批量重命名脚本实例代码
Apr 22 Python
Python实现DBSCAN聚类算法并样例测试
Jun 22 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
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
php比较多维数组中值的大小排序实现代码
2012/09/08 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
JavaScript访问样式表代码
2010/10/15 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
简单介绍Python中的round()方法
2015/05/15 Python
python中函数传参详解
2016/07/03 Python
Python实现快速计算词频功能示例
2018/06/25 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
python自定义时钟类、定时任务类
2021/02/22 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
2019/08/09 Python
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
销售主管竞聘书
2014/03/31 职场文书
党校学习党性分析材料
2014/12/19 职场文书
服务行业标语口号
2015/12/26 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android