SVM解兵王问题_python.zip


用SVM解决兵王问题,是比较好的机器学习svm入门项目,包括训练测试数据集、libsvm包以及程序代码。其中数据集总样本数为28056个,取其中5000个作为训练样本,其余的为测试样本。libsvm包中有各个属性的使用说明,代码为python版本,测试的准确率为99.36%
资源截图
代码片段和文件信息
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_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个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)