"""
main
临近种类支持向量机-交叉验证器
求超参数
说明:目前为学习版本的代码
"""
import numpy as np
from sklearn.model_selection import cross_val_score #交叉验证函数
from preprocesser import dataset #数据集类
from sklearn.svm import SVC #SVM分类器
class iterator:#迭代器
c=0
min=0
max=0
a=0
def __init__(self,min,max):
self.min=min;
self.a=min
self.max=max;
return None
def __iter__(self):
self.c=0
return self
def __next__(self):
if(self.c>self.max):
return self.max
self.c=self.c+self.a
if(self.c>=self.a*10 and self.a<self.min*100):
self.a*=10
return self.c
def cross_validator(trainData):#遍历迭代器中所有超参数
iteratorC=iter(iterator(1,32000))
C=0
bestScore=0
bestC=0
bestGamma=0
while(C<32000):
C=next(iteratorC)
iteratorGamma=iter(iterator(0.01,10))
Gamma=0
print(f"当前进度:C-{C/320:.4f}% ")
while(Gamma<1):
Gamma=next(iteratorGamma)
Classifier=SVC(kernel='rbf',gamma=Gamma,C=C)
Score=cross_val_score(Classifier, trainData.data, trainData.target, cv=5,scoring='accuracy').mean()
if(Score>bestScore):
bestScore=Score
bestC=C
bestGamma=Gamma
print(f"当前最高准确率:{bestScore*100:.2f}% \n C:{C} \n gamma:{Gamma}")
print(f"最高准确率:{bestScore*100:.2f}%")
return bestC,bestGamma
#导入数据
file=open('D:\\大创\\兵王.txt')
file1=file.readlines()
file.close()
#由基本的列表生成数据
totalData=dataset().build_from_outside(file1)
#随机分割出训练集
trainData,testData=totalData.split(0.2)
svmC,svmGamma=cross_validator(trainData)
print(f"交叉验证成功 C:{svmC}, gamma:{svmGamma}")


檀越@新空间
- 粉丝: 5w+
最新资源
- com.azure.authenticator.apk
- 智能车考核-智能车资源
- lanqiao-蓝桥杯资源
- Professional Assembly Language-汇编语言资源
- Oracle数据库账号锁定问题解决办法
- Python-FastAPI,Django,Docker 资料整理,数据结构,算法,OCR图像识别处理,爬虫,反向爬取,验证码,操作pdf,反爬策略及应对方案
- lilishop 商城 java商城-C语言资源
- Agents-Flex-Java资源
- pyporter-Python资源
- autosqlite-swift-Swift资源
- java kotlin demo-Kotlin资源
- zino-Rust资源
- workerman-硬件开发资源
- taroify-移动应用开发资源
- Qt5+OpenCV图像识别课程设计
- C51-Projects-单片机开发资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


