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实现屏幕截图的两种方式
Feb 05 Python
PyQt5实现拖放功能
Apr 25 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
详解python 注释、变量、类型
Aug 10 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
python用插值法绘制平滑曲线
Feb 19 Python
python实现扫描ip地址的小程序
Apr 16 Python
python调用webservice接口的实现
Jul 12 Python
在django中图片上传的格式校验及大小方法
Jul 28 Python
flask框架配置mysql数据库操作详解
Nov 29 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
基于python实现获取网页图片过程解析
May 11 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
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
php微信公众号开发模式详解
2016/11/28 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
Javascript 继承机制的实现
2009/08/12 Javascript
预加载css或javascript的js代码
2010/04/23 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
微信小程序获取手机号授权用户登录功能
2017/11/09 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
深入解析Python中的__builtins__内建对象
2016/06/21 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
行政人员工作职责
2013/12/05 职场文书
合伙经营协议书范本
2014/04/18 职场文书
借款担保书范文
2014/05/13 职场文书
预备党员思想汇报1000字
2014/10/07 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
JS的深浅复制详细
2021/10/16 Javascript
Python内置的数据类型及使用方法
2022/04/13 Python