用SVM解决兵王问题,是比较好的机器学习svm入门项目,包括训练测试数据集、libsvm包以及程序代码。其中数据集总样本数为28056个,取其中5000个作为训练样本,其余的为测试样本。libsvm包中有各个属性的使用说明,代码为python版本,测试的准确率为99.36%
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-07-29 21:58 SVM
文件 0 2020-07-27 23:22 SVM\__init__.py
文件 184648 2020-07-29 21:58 SVMdecisionValues.mat
文件 559878 2020-03-02 17:56 SVMkrkopt.data
目录 0 2020-07-28 20:23 SVMlibsvm-master
文件 1497 2018-07-15 22:15 SVMlibsvm-masterCOPYRIGHT
文件 83238 2018-07-15 22:15 SVMlibsvm-masterFAQ.html
文件 27670 2018-07-15 22:15 SVMlibsvm-masterheart_scale
目录 0 2020-07-28 20:23 SVMlibsvm-masterjava
文件 55181 2018-07-15 22:15 SVMlibsvm-masterjavalibsvm.jar
目录 0 2020-07-28 20:23 SVMlibsvm-masterjavalibsvm
文件 64084 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm.java
文件 63281 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm.m4
文件 868 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm_model.java
文件 115 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm_node.java
文件 1285 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm_parameter.java
文件 87 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm_print_interface.java
文件 136 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm_problem.java
文件 659 2018-07-15 22:15 SVMlibsvm-masterjavaMakefile
文件 4945 2018-07-15 22:15 SVMlibsvm-masterjavasvm_predict.java
文件 8937 2018-07-15 22:15 SVMlibsvm-masterjavasvm_scale.java
文件 12262 2018-07-15 22:15 SVMlibsvm-masterjavasvm_toy.java
文件 8354 2018-07-15 22:15 SVMlibsvm-masterjavasvm_train.java
文件 81 2018-07-15 22:15 SVMlibsvm-masterjava est_applet.html
文件 732 2018-07-15 22:15 SVMlibsvm-masterMakefile
文件 1135 2018-07-15 22:15 SVMlibsvm-masterMakefile.win
目录 0 2020-07-28 20:23 SVMlibsvm-mastermatlab
文件 4060 2018-07-15 22:15 SVMlibsvm-mastermatlablibsvmread.c
文件 2326 2018-07-15 22:15 SVMlibsvm-mastermatlablibsvmwrite.c
文件 888 2018-07-15 22:15 SVMlibsvm-mastermatlabmake.m
文件 1240 2018-07-15 22:15 SVMlibsvm-mastermatlabMakefile
............此处省略52个文件信息
import sys
import os
import datetime
import pickle
import numpy as np
import scipy.io as sio
import matplotlib
import matplotlib.pyplot as plt
sys.path.append(‘.libsvm-masterpython‘)
from svmutil import *
from numpy import *
tStart = datetime.datetime.now()
# 处理数据
rawdata = ‘krkopt.data‘
rd = open(rawdata)
arrayOLines = rd.readlines()
del arrayOLines[0]
numbersOfLines = len(arrayOLines)
featureDimension = 6
data = zeros((numbersOfLines featureDimension))
label = zeros(numbersOfLines)
for i in range(len(arrayOLines)):
line = arrayOLines[i]
listFromLine = line.split(‘‘)
data[i 0] = ord(listFromLine[0]) - 96
data[i 1] = ord(listFromLine[1]) - 48
data[i 2] = ord(listFromLine[2]) - 96
data[i 3] = ord(listFromLine[3]) - 48
data[i 4] = ord(listFromLine[4]) - 96
data[i 5] = ord(listFromLine[5]) - 48
if listFromLine[6] == ‘draw
‘:
label[i] = 1
else:
label[i] = -1
# 随机取5000个数据作为训练样本 剩下数据作为测试样本
permutatedData = zeros((numbersOfLines featureDimension))
permutatedLabel = zeros(numbersOfLines)
p = random.permutation(numbersOfLines)
for i in range(numbersOfLines):
permutatedData[i :] = data[p[i] :]
permutatedLabel[i] = label[p[i]]
numbersOfTrainData = 5000
xTrain = permutatedData[:numbersOfTrainData]
yTrain = permutatedLabel[:numbersOfTrainData]
xTest = permutatedData[numbersOfTrainData:]
yTest = permutatedLabel[numbersOfTrainData:]
# 样本均一化
averageData = zeros((1 featureDimension))
for i in range(len(xTrain)):
averageData += xTrain[i :]
averageData = averageData / len(xTrain)
standardDiviation = zeros((1 featureDimension))
for i in range(len(xTrain)):
standardDiviation = standardDiviation + (xTrain[i] - averageData) ** 2
standardDiviation = (standardDiviation/(len(xTrain)-1))**0.5
for i in range(len(xTrain)):
xTrain[i] = (xTrain[i] - averageData)/standardDiviation
for i in range(len(xTest)):
xTest[i] = (xTest[i] - averageData)/standardDiviation
# 粗略搜素最佳的C、gamma参数
CScale = list(range(-5 16 2))
gammaScale = list(range(-15 4 2))
maxRecognitionRate = 0
arr = np.array(xTrain)
newX = arr.tolist()
arr = np.array(yTrain)
newY = arr.tolist()
for i in range(len(CScale)):
testC = 2 ** CScale[i]
for j in range(len(gammaScale)):
cmd = ‘-t 2 -c ‘
cmd += str(testC)
cmd += ‘ -g ‘
testGamma = 2**gammaScale[j]
cmd += str(testGamma)
cmd += ‘ -v 5‘
cmd += ‘ -h 0‘
print(‘rude search‘)
recognitionRate = svm_train(newY newX cmd)
if recognitionRate > maxRecognitionRate:
maxRecognitionRate = recognitionRate
print(maxRecognitionRate)
maxCIndex = i
maxGammaIndex = j
#精确搜索C、gamma
n = 10
minCScale = 0.5 * (CScale[max(0 maxCIndex - 1)]+CScale[maxCIndex])
maxCScale = 0.5 * (CScale[min(len(CScale) - 1 maxCIndex + 1)] + CScale[maxCIndex])
newCScale =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-07-29 21:58 SVM
文件 0 2020-07-27 23:22 SVM\__init__.py
文件 184648 2020-07-29 21:58 SVMdecisionValues.mat
文件 559878 2020-03-02 17:56 SVMkrkopt.data
目录 0 2020-07-28 20:23 SVMlibsvm-master
文件 1497 2018-07-15 22:15 SVMlibsvm-masterCOPYRIGHT
文件 83238 2018-07-15 22:15 SVMlibsvm-masterFAQ.html
文件 27670 2018-07-15 22:15 SVMlibsvm-masterheart_scale
目录 0 2020-07-28 20:23 SVMlibsvm-masterjava
文件 55181 2018-07-15 22:15 SVMlibsvm-masterjavalibsvm.jar
目录 0 2020-07-28 20:23 SVMlibsvm-masterjavalibsvm
文件 64084 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm.java
文件 63281 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm.m4
文件 868 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm_model.java
文件 115 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm_node.java
文件 1285 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm_parameter.java
文件 87 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm_print_interface.java
文件 136 2018-07-15 22:15 SVMlibsvm-masterjavalibsvmsvm_problem.java
文件 659 2018-07-15 22:15 SVMlibsvm-masterjavaMakefile
文件 4945 2018-07-15 22:15 SVMlibsvm-masterjavasvm_predict.java
文件 8937 2018-07-15 22:15 SVMlibsvm-masterjavasvm_scale.java
文件 12262 2018-07-15 22:15 SVMlibsvm-masterjavasvm_toy.java
文件 8354 2018-07-15 22:15 SVMlibsvm-masterjavasvm_train.java
文件 81 2018-07-15 22:15 SVMlibsvm-masterjava est_ap
文件 732 2018-07-15 22:15 SVMlibsvm-masterMakefile
文件 1135 2018-07-15 22:15 SVMlibsvm-masterMakefile.win
目录 0 2020-07-28 20:23 SVMlibsvm-mastermatlab
文件 4060 2018-07-15 22:15 SVMlibsvm-mastermatlablibsvmread.c
文件 2326 2018-07-15 22:15 SVMlibsvm-mastermatlablibsvmwrite.c
文件 888 2018-07-15 22:15 SVMlibsvm-mastermatlabmake.m
文件 1240 2018-07-15 22:15 SVMlibsvm-mastermatlabMakefile
............此处省略52个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)