91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 11KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-16
  • 語言: Python
  • 標簽: SVM??

資源簡介

這是一份基于支持向量機(SVM)的手寫字體識別源代碼(Python版本),目前只支持二分類識別。實現了快速SMO算法。

資源截圖

代碼片段和文件信息

#?coding=gbk
from?numpy?import?*
import?datetime
from?os?import?listdir
from?PIL?import?Image


#?隨機選取
def?selectJrand(i?m):
????j?=?i
????while?j?==?i:
????????j?=?int(random.uniform(0?m))
????return?j

#?剪切?alpha?使其符合取值范圍
def?clipAlpha(aj?H?L):
????if?aj?>?H:
????????aj?=?H
????if?L?>?aj:
????????aj?=?L
????return?aj

#?核函數?X,A:輸入向量??kTup:核函數類型
def?kernelTrans(X?A?kTup):
????m?n?=?shape(X)
????K?=?mat(zeros((m?1)))
????if?kTup[0]?==?‘lin‘:
????????K?=?X?*?A.T??#?線性核?計算內積
????elif?kTup[0]?==?‘rbf‘:
????????for?j?in?range(m):??#?徑向基核函數
????????????deltaRow?=?X[j?:]?-?A
????????????K[j]?=?deltaRow?*?deltaRow.T
????????K?=?exp(K?/?(-1?*?kTup[1]?**?2))
????else:
????????raise?NameError(‘Kernel?is?not?recognized‘)
????return?K


class?optStruct:
????def?__init__(self?dataMatIn?classLabels?C?toler?kTup):
????????self.X?=?dataMatIn
????????self.labelMat?=?classLabels
????????self.C?=?C
????????self.tol?=?toler
????????self.m?=?shape(dataMatIn)[0]
????????self.alphas?=?mat(zeros((self.m?1)))
????????self.b?=?0
????????self.eCache?=?mat(zeros((self.m?2)))??#?第一列是有效的標志位?第二列是實際偏差值
????????self.K?=?mat(zeros((self.m?self.m)))
????????for?i?in?range(self.m):
????????????self.K[:?i]?=?kernelTrans(self.X?self.X[i?:]?kTup)


#?計算誤差?計算值-標簽值
def?calcEk(oS?k):
????fXk?=?float(multiply(oS.alphas?oS.labelMat).T?*?oS.K[:?k]?+?oS.b)
????Ek?=?fXk?-?float(oS.labelMat[k])
????return?Ek


#?查詢alpha2?使得?alpha1?與?alpha2?的?△E?最大
def?selectJ(i?oS?Ei):
????maxK?=?-1
????maxDeltaE?=?0
????Ej?=?0
????oS.eCache[i]?=?[1?Ei]
????validEcacheList?=?nonzero(oS.eCache[:?0].A)[0]?????#?得到E值有效的位置
????if?(len(validEcacheList))?>?1:
????????for?k?in?validEcacheList:
????????????if?k?==?i:?continue
????????????Ek?=?calcEk(oS?k)
????????????deltaE?=?abs(Ei?-?Ek)
????????????if?deltaE?>?maxDeltaE:
????????????????maxK?=?k
????????????????maxDeltaE?=?deltaE
????????????????Ej?=?Ek
????????return?maxK?Ej
????else:??#?第一次循環時?沒有E值有效?隨機選擇一個J
????????j?=?selectJrand(i?oS.m)
????????Ej?=?calcEk(oS?j)
????return?j?Ej


#?alpha?改變后?更新E值
def?updateEk(oS?k):
????Ek?=?calcEk(oS?k)
????oS.eCache[k]?=?[1?Ek]

#?alpha?內循環??有?alpha?成功改變?返回1?否則返回0
def?innerL(i?oS):
????Ei?=?calcEk(oS?i)
????if?((oS.labelMat[i]?*?Ei?????????(oS.labelMat[i]?*?Ei?>?oS.tol)?and?(oS.alphas[i]?>?0)):
????????j?Ej?=?selectJ(i?oS?Ei)
????????alphaIold?=?oS.alphas[i].copy()
????????alphaJold?=?oS.alphas[j].copy()
????????if?oS.labelMat[i]?!=?oS.labelMat[j]:
????????????L?=?max(0?oS.alphas[j]?-?oS.alphas[i])
????????????H?=?min(oS.C?oS.C?+?oS.alphas[j]?-?oS.alphas[i])
????????else:
????????????L?=?max(0?oS.alphas[j]?+?oS.alphas[i]?-?oS.C)
????????????H?=?min(oS.C?oS.alphas[j]?+?oS.alphas[i])
????????if?L?==?H:
????????????return?0
????????eta?=?2.0?*?oS.K[i?j]?-?oS.K[i?i]?-?oS.K[j?j]
????????if?eta?>=?0:
????????????return?0
????????oS.alpha

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-09-07?20:08??SVM\
?????目錄???????????0??2017-09-04?15:10??SVM\.idea\
?????目錄???????????0??2017-08-25?17:10??SVM\.idea\inspectionProfiles\
?????文件?????????410??2017-08-25?17:10??SVM\.idea\inspectionProfiles\Project_Default.xml
?????文件?????????213??2017-08-25?16:36??SVM\.idea\misc.xml
?????文件?????????258??2017-08-25?16:34??SVM\.idea\modules.xml
?????文件?????????398??2017-08-25?16:36??SVM\.idea\SVM.iml
?????文件???????18335??2017-09-04?15:10??SVM\.idea\workspace.xml
?????文件????????8614??2017-09-07?19:53??SVM\SMO.py
?????文件????????8206??2017-09-07?19:53??SVM\SMO.pyc
?????文件?????????167??2017-09-07?20:08??SVM\SVM.py

評論

共有 條評論