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编写的com组件发生R6034错误的原因与解决办法
Apr 01 Python
9种python web 程序的部署方式小结
Jun 30 Python
手动实现把python项目发布为exe可执行程序过程分享
Oct 23 Python
Python中return语句用法实例分析
Aug 04 Python
python Flask实现restful api service
Dec 04 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
python线程中同步锁详解
Apr 27 Python
python统计多维数组的行数和列数实例
Jun 23 Python
Python turtle绘画象棋棋盘
Aug 21 Python
python的faker库用法
Nov 28 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
php页面防重复提交方法总结
2013/11/25 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
Python外星人入侵游戏编程完整版
2020/03/30 Python
python获取代码运行时间的实例代码
2018/06/11 Python
python查看模块,对象的函数方法
2018/10/16 Python
对Python实现累加函数的方法详解
2019/01/23 Python
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
学校消防演习方案
2014/02/19 职场文书
买卖车协议书
2014/04/21 职场文书
希特勒的演讲稿
2014/05/23 职场文书
2014教师研修学习体会
2014/07/08 职场文书
活动总结新闻稿
2014/08/30 职场文书
丧事答谢词
2015/01/05 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
汉字听写大会观后感
2015/06/12 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
PHP命令行与定时任务
2021/04/01 PHP
解决hive中导入text文件遇到的坑
2021/04/07 Python
python用字节处理文件实例讲解
2021/04/13 Python