- 目的:1000张数字0-9的手写数字,训练识别手写数字;将其作为32*32的0,1化的数字,随后会将其变为1024列的一个向量
- 原理:SVM就是把平面的点变为一个空间的点,更好切,核函数就是怎么把他变为空间的点,即比如中间的升的更高,外圈的升的更慢这样就有一个锥形的空间(个人理解)
- 步骤
- 读取数字文件,将数字的0,1变为向量,训练的向量放在一起,向量对应的标签(即是1,2还是3的真实值)放在一起;
- 调用sklearn.svm库
- 训练好后测试测试集验证错误率
- 调参再测,找一个最优的
- 代码
-
#SVM训练,trainingMat 训练集 hwLabels 标签集 clf = SVC(C=200,kernel='rbf') clf.fit(trainingMat,hwLabels) #训练好后用来预测classifierResult 要和真实的值对比是否正确 classifierResult = clf.predict(vectorUnderTest)