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中的高级函数map/reduce使用实例
Apr 13 Python
Python中shape计算矩阵的方法示例
Apr 21 Python
python实现聊天小程序
Mar 13 Python
对python cv2批量灰度图片并保存的实例讲解
Nov 09 Python
PyQt4实时显示文本内容GUI的示例
Jun 14 Python
python做反被爬保护的方法
Jul 01 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
python 进程的几种创建方式详解
Aug 29 Python
利用python控制Autocad:pyautocad方式
Jun 01 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
Python __slots__的使用方法
Nov 15 Python
python中取整数的几种方法
Nov 07 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中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
ThinkPHP 5.1 跨域配置方法
2019/10/11 PHP
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
jQuery基础知识小结
2014/12/22 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
Python 爬虫的工具列表大全
2016/01/31 Python
Numpy掩码式数组详解
2018/04/17 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
python绘制高斯曲线
2021/02/19 Python
使用CSS3来制作消息提醒框
2015/07/12 HTML / CSS
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
2014年公司植树节活动方案
2014/03/04 职场文书
公开承诺书格式
2014/05/21 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
雷峰塔导游词
2015/02/09 职场文书
慰问信格式
2015/02/14 职场文书
会议主持词通用版
2019/04/02 职场文书
浅析Python实现DFA算法
2021/06/26 Python
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python