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 相关文章推荐
使用Node.js和Socket.IO扩展Django的实时处理功能
Apr 20 Python
python实现从字典中删除元素的方法
May 04 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
Python判断对象是否为文件对象(file object)的三种方法示例
Apr 26 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
浅析python 中大括号中括号小括号的区分
Jul 29 Python
Django CBV与FBV原理及实例详解
Aug 12 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
Python手绘可视化工具cutecharts使用实例
Dec 05 Python
python调用摄像头的示例代码
Sep 28 Python
python中最小二乘法详细讲解
Feb 19 Python
python爬取豆瓣电影TOP250数据
May 23 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
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
Symfony核心类概述
2016/03/17 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
php微信开发之谷歌测距
2018/06/14 PHP
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
生成二维码方法汇总
2014/12/26 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
js实现图片轮播效果
2015/12/19 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
纯js实现隔行变色效果
2017/11/29 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
Python将xml和xsl转换为html的方法
2015/03/10 Python
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
Python中subprocess的简单使用示例
2015/07/28 Python
Python设置默认编码为utf8的方法
2016/07/01 Python
python删除服务器文件代码示例
2018/02/09 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
python3中数组逆序输出方法
2020/12/01 Python
python中altair可视化库实例用法
2021/01/26 Python
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
Unix里面如何在后台运行程序
2016/10/14 面试题
施工班组长岗位职责
2014/01/05 职场文书
小学生新学期寄语
2014/01/19 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
辩护词格式
2015/05/22 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
家庭聚会祝酒词
2015/08/11 职场文书