python分类器实现_Python实现基于SVM的分类器的方法

news/2024/7/6 7:12:33

本文代码来之《数据分析与挖掘实战》,在此基础上补充完善了一下~

代码是基于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:

《数据分析与挖掘实战》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。


http://www.niftyadmin.cn/n/3528581.html

相关文章

最全的mysql 5.7.13_MySQL_最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!,linux环境Mysql 5.7.13安装教程分 - phpStudy...

最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!linux环境Mysql 5.7.13安装教程分享给大家,供大家参考,具体内容如下1系统约定安装文件下载目录:/data/softwareMysql目录安装位置:/usr/local/mysql数据库保存位置&…

java滑块_Java Swing JSlider滑块的实现示例

1. 概述JSlider,滑块。以图形方式在有界区间内通过移动滑块来选择值的组件。滑块可以显示主刻度标记以及主刻度之间的次刻度标记。刻度标记之间的值的个数由 setMajorTickSpacing(int) 和 setMinorTickSpacing(int) 来控制。刻度标记的绘制由 setPaintTicks(boolean…

java 本地事务_java事务(二)——本地事务

本地事务事务类型事务可以分为本地事务和分布式事务两种类型。这两种事务类型是根据访问并更新的数据资源的多少来进行区分的。本地事务是在单个数据源上进行数据的访问和更新,而分布式事务是跨越多个数据源来进行数据的访问和更新。在这里要说的事务是基于数据库这…

fitnesse java_从Fitnesse中学习Java单元测试

从第一次知道Fitnesse这个集成测试工具到现在也已经差不多有2年多的时间了。在这个期间把Fitnesse的源码也算是反反复复阅读了很多遍,算是对其实现的原理和方法有所了解。在最近一次对Fitnesse最新版本代码的研究中我发现,Fitnesse除了是一个很好的开源集…

java 获得basepath_JavaWeb项目获取绝对路径basePath

1. freemarker获取系统相对路径方式spring-mvc.xml 中配置其中是关键。ftl页面中设置首页js文件中获取pathvar base document.getElementById("base").href;// 与后台交互_send function(async, url, value, success, error) {$.ajax({async : async,url : base /…

java 分析工具_java分析工具

java分析工具jinfojstatjmapjstack1.jinfo查看java进程的扩展参数-flag 查看某个jvm参数-flag /- 动态开启或关闭部分jvm参数-flag namevalue 修改部分jvm参数flags 查看所有jvm参数-sysprops 查看系统参数(System.getProperties())①-flag 查看某个jvm参数jvm参数②flag /- 动…

Java web登录拦截器_SpringMVC拦截器实现登录认证

博客以Demo的形式讲诉拦截器的使用项目结构如图:需要的jar:有springMVC配置需要的jar和jstl需要的jarSpringMVC包的作用说明:aopalliance.jar:这个包是AOP联盟的API包,里面包含了针对面向切面的接口。通常spring等其它具备动态织入功能的框架…

java 文件备注_java文档注释:

java支持三种注释方式,前两种分别是//和/* */,第三种被称作说明注释,它以/**开始,以*/结束.说明注释允许你在程序中嵌入关于程序的信息,你可以使用javadoc工具软件来生成信息,并输出到html文件中。说明注释,使你更加方便的记录你的…