資源簡介
SVM算法的代碼,用pyhon實現的,可直接用,很方便,下載即可用!該算法可用于機器學習分類研究,是一種典型的分類算法,非常適合論文實驗。

代碼片段和文件信息
#!/usr/bin/env?python
from?__future__?import?print_function
import?sys
try:
import?scipy
from?scipy?import?sparse
except:
scipy?=?None
sparse?=?None
__all__?=?[‘svm_read_problem‘?‘evaluations‘?‘csr_find_scale_param‘?‘csr_scale‘]
def?svm_read_problem(data_file_name?return_scipy=False):
“““
svm_read_problem(data_file_name?return_scipy=False)?->?[y?x]?y:?list?x:?list?of?dictionary
svm_read_problem(data_file_name?return_scipy=True)??->?[y?x]?y:?ndarray?x:?csr_matrix
Read?LIBSVM-format?data?from?data_file_name?and?return?labels?y
and?data?instances?x.
“““
prob_y?=?[]
prob_x?=?[]
row_ptr?=?[0]
col_idx?=?[]
for?i?line?in?enumerate(open(data_file_name)):
line?=?line.split(None?1)
#?In?case?an?instance?with?all?zero?features
if?len(line)?==?1:?line?+=?[‘‘]
label?features?=?line
prob_y?+=?[float(label)]
if?scipy?!=?None?and?return_scipy:
nz?=?0
for?e?in?features.split():
ind?val?=?e.split(“:“)
val?=?float(val)
if?val?!=?0:
col_idx?+=?[int(ind)-1]
prob_x?+=?[val]
nz?+=?1
row_ptr?+=?[row_ptr[-1]+nz]
else:
xi?=?{}
for?e?in?features.split():
ind?val?=?e.split(“:“)
xi[int(ind)]?=?float(val)
prob_x?+=?[xi]
if?scipy?!=?None?and?return_scipy:
prob_y?=?scipy.array(prob_y)
prob_x?=?scipy.array(prob_x)
col_idx?=?scipy.array(col_idx)
row_ptr?=?scipy.array(row_ptr)
prob_x?=?sparse.csr_matrix((prob_x?col_idx?row_ptr))
return?(prob_y?prob_x)
def?evaluations_scipy(ty?pv):
“““
evaluations_scipy(ty?pv)?->?(ACC?MSE?SCC)
ty?pv:?ndarray
Calculate?accuracy?mean?squared?error?and?squared?correlation?coefficient
using?the?true?values?(ty)?and?predicted?values?(pv).
“““
if?not?(scipy?!=?None?and?isinstance(ty?scipy.ndarray)?and?isinstance(pv?scipy.ndarray)):
raise?TypeError(“type?of?ty?and?pv?must?be?ndarray“)
if?len(ty)?!=?len(pv):
raise?ValueError(“len(ty)?must?be?equal?to?len(pv)“)
ACC?=?100.0*(ty?==?pv).mean()
MSE?=?((ty?-?pv)**2).mean()
l?=?len(ty)
sumv?=?pv.sum()
sumy?=?ty.sum()
sumvy?=?(pv*ty).sum()
sumvv?=?(pv*pv).sum()
sumyy?=?(ty*ty).sum()
with?scipy.errstate(all?=?‘raise‘):
try:
SCC?=?((l*sumvy-sumv*sumy)*(l*sumvy-sumv*sumy))/((l*sumvv-sumv*sumv)*(l*sumyy-sumy*sumy))
except:
SCC?=?float(‘nan‘)
return?(float(ACC)?float(MSE)?float(SCC))
def?evaluations(ty?pv?useScipy?=?True):
“““
evaluations(ty?pv?useScipy)?->?(ACC?MSE?SCC)
ty?pv:?list?tuple?or?ndarray
useScipy:?convert?ty?pv?to?ndarray?and?use?scipy?functions?for?the?evaluation
Calculate?accuracy?mean?squared?error?and?squared?correlation?coefficient
using?the?true?values?(ty)?and?predicted?values?(pv).
“““
if?scipy?!=?None?and?useScipy:
return?evaluations_scipy(scipy.asarray(ty)?scipy.asarray(pv))
if?len(ty)?!=?len(pv):
raise?ValueError(“len(ty)?must?be?equal?to?len(pv)“)
total_correct?=?total_error?=?0
sumv?=?sumy?=?sumvv?=?sumyy?=?sumvy?=?0
for?v?y?in?zip(pv?ty):
if?y?==?v:
total_correct?+=?1
total_error?+=?(v-y)*(v-y)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????5121??2018-07-15?22:16??python\commonutil.py
?????文件??????????32??2018-07-15?22:16??python\Makefile
?????文件???????15822??2018-07-15?22:16??python\README
?????文件???????13631??2018-07-15?22:16??python\svm.py
?????文件????????9395??2018-07-15?22:16??python\svmutil.py
評論
共有 條評論