परीक्षण सेट वेक्टर, एक्स, और प्रत्येक प्रशिक्षण सेट वेक्टर के बीच कर्नेल मूल्यांकन के मान परीक्षण सेट फीचर वेक्टर के रूप में उपयोग किए जाने चाहिए।
< लेबल> 0: मैं 1: कश्मीर (XI, x 1) ... एल: कश्मीर (XI
xi के लिए नए प्रशिक्षण उदाहरण:
यहाँ libsvm रीडमी से उचित लाइनें हैं , एक्सएल) किसी भी एक्स के लिए
नए परीक्षण उदाहरण:
< लेबल> 0 :? 1: कश्मीर (x, x 1) ... एल: कश्मीर (एक्स, xL)
libsvm रीडमी कह रहा है कि यदि आप एल प्रशिक्षण सेट वैक्टर है, जहां xi प्रशिक्षण सेट वेक्टर मैं के साथ से है [ 1..एल], और एक परीक्षण सेट वेक्टर, एक्स, तो x के लिए फीचर वेक्टर
< x> 0: < का लेबल किसी भी संख्या> 1: के (x^{test}, x1^{ ट्रेन}), 2: के (एक्स^{टेस्ट}, एक्स 2^{ट्रेन}) ... एल: के (एक्स^{टेस्ट}, एक्सएल^{ट्रेन})
जहां के (यू, वी) तर्क के रूप में वेक्टर यू और वी के साथ कर्नेल फ़ंक्शन के आउटपुट को इंगित करने के लिए उपयोग किया जाता है।
मैंने नीचे कुछ उदाहरण पायथन कोड शामिल किया है।
मूल फीचर वेक्टर प्रतिनिधित्व और precomputed (लीनियर) कर्नेल से परिणाम बिल्कुल वैसा ही नहीं हैं, लेकिन यह शायद अनुकूलन एल्गोरिथ्म में अंतर के कारण है।
from svmutil import *
import numpy as np
#original example
y, x = svm_read_problem('.../heart_scale')
m = svm_train(y[:200], x[:200], '-c 4')
p_label, p_acc, p_val = svm_predict(y[200:], x[200:], m)
##############
#train the SVM using a precomputed linear kernel
#create dense data
max_key=np.max([np.max(v.keys()) for v in x])
arr=np.zeros((len(x),max_key))
for row,vec in enumerate(x):
for k,v in vec.iteritems():
arr[row][k-1]=v
x=arr
#create a linear kernel matrix with the training data
K_train=np.zeros((200,201))
K_train[:,1:]=np.dot(x[:200],x[:200].T)
K_train[:,:1]=np.arange(200)[:,np.newaxis]+1
m = svm_train(y[:200], [list(row) for row in K_train], '-c 4 -t 4')
#create a linear kernel matrix for the test data
K_test=np.zeros((len(x)-200,201))
K_test[:,1:]=np.dot(x[200:],x[:200].T)
K_test[:,:1]=np.arange(len(x)-200)[:,np.newaxis]+1
p_label, p_acc, p_val = svm_predict(y[200:],[list(row) for row in K_test], m)
जहाँ तक मुझे याद है के रूप में, आप मैन्युअल मूल्यों की भविष्यवाणी करने के लिए यदि आप पूर्व परिकलित गिरी का उपयोग SVM को प्रशिक्षित करने के लिए है। – George