import numpy
import math
from sklearn import svm
from sklearn.metrics import accuracy_score
import sys
def svm_classifier(train_x, train_y, valid_x, valid_y, test_x, test_y):
clf = svm.LinearSVC()
clf.fit(train_x,train_y)
pred = clf.predict(valid_x)
va = accuracy_score(numpy.ravel(valid_y),numpy.ravel(pred))
pred = clf.predict(test_x)
ta = accuracy_score(numpy.ravel(test_y),numpy.ravel(pred))
return va, ta
def transfer_learning_5fold(folder):
view1 = numpy.load(folder+"test-view1.npy")
view2 = numpy.load(folder+"test-view2.npy")
labels = numpy.load(folder+"test-labels.npy")
perp = len(view1)/5
print "view1 to view2"
acc = 0
for i in range(0,5):
test_x = view2[i*perp:(i+1)*perp]
test_y = labels[i*perp:(i+1)*perp]
if i==0:
train_x = view1[perp:len(view1)]
train_y = labels[perp:len(view1)]
elif i==4:
train_x = view1[0:4*perp]
train_y = labels[0:4*perp]
else:
train_x1 = view1[0:i*perp]
train_y1 = labels[0:i*perp]
train_x2 = view1[(i+1)*perp:len(view1)]
train_y2 = labels[(i+1)*perp:len(view1)]
train_x = numpy.concatenate((train_x1,train_x2))
train_y = numpy.concatenate((train_y1,train_y2))
va, ta = svm_classifier(train_x, train_y, test_x, test_y, test_x, test_y)
acc += ta
print acc/5
print "view2 to view1"
acc = 0
for i in range(0,5):
test_x = view1[i*perp:(i+1)*perp]
test_y = labels[i*perp:(i+1)*perp]
if i==0:
train_x = view2[perp:len(view1)]
train_y = labels[perp:len(view1)]
elif i==4:
train_x = view2[0:4*perp]
train_y = labels[0:4*perp]
else:
train_x1 = view2[0:i*perp]
train_y1 = labels[0:i*perp]
train_x2 = view2[(i+1)*perp:len(view1)]
train_y2 = labels[(i+1)*perp:len(view1)]
train_x = numpy.concatenate((train_x1,train_x2))
train_y = numpy.concatenate((train_y1,train_y2))
va, ta = svm_classifier(train_x, train_y, test_x, test_y, test_x, test_y)
acc += ta
print acc/5
import math
from sklearn import svm
from sklearn.metrics import accuracy_score
import sys
def svm_classifier(train_x, train_y, valid_x, valid_y, test_x, test_y):
clf = svm.LinearSVC()
clf.fit(train_x,train_y)
pred = clf.predict(valid_x)
va = accuracy_score(numpy.ravel(valid_y),numpy.ravel(pred))
pred = clf.predict(test_x)
ta = accuracy_score(numpy.ravel(test_y),numpy.ravel(pred))
return va, ta
def transfer_learning_5fold(folder):
view1 = numpy.load(folder+"test-view1.npy")
view2 = numpy.load(folder+"test-view2.npy")
labels = numpy.load(folder+"test-labels.npy")
perp = len(view1)/5
print "view1 to view2"
acc = 0
for i in range(0,5):
test_x = view2[i*perp:(i+1)*perp]
test_y = labels[i*perp:(i+1)*perp]
if i==0:
train_x = view1[perp:len(view1)]
train_y = labels[perp:len(view1)]
elif i==4:
train_x = view1[0:4*perp]
train_y = labels[0:4*perp]
else:
train_x1 = view1[0:i*perp]
train_y1 = labels[0:i*perp]
train_x2 = view1[(i+1)*perp:len(view1)]
train_y2 = labels[(i+1)*perp:len(view1)]
train_x = numpy.concatenate((train_x1,train_x2))
train_y = numpy.concatenate((train_y1,train_y2))
va, ta = svm_classifier(train_x, train_y, test_x, test_y, test_x, test_y)
acc += ta
print acc/5
print "view2 to view1"
acc = 0
for i in range(0,5):
test_x = view1[i*perp:(i+1)*perp]
test_y = labels[i*perp:(i+1)*perp]
if i==0:
train_x = view2[perp:len(view1)]
train_y = labels[perp:len(view1)]
elif i==4:
train_x = view2[0:4*perp]
train_y = labels[0:4*perp]
else:
train_x1 = view2[0:i*perp]
train_y1 = labels[0:i*perp]
train_x2 = view2[(i+1)*perp:len(view1)]
train_y2 = labels[(i+1)*perp:len(view1)]
train_x = numpy.concatenate((train_x1,train_x2))
train_y = numpy.concatenate((train_y1,train_y2))
va, ta = svm_classifier(train_x, train_y, test_x, test_y, test_x, test_y)
acc += ta
print acc/5
本文介绍了一种基于SVM的支持向量机分类器实现的5折交叉验证迁移学习方法。该方法利用numpy进行数据处理,并使用sklearn库中的LinearSVC进行训练与预测。通过对两个不同视图的数据集进行划分和训练,评估了从一个视图到另一个视图的迁移学习效果。
401

被折叠的 条评论
为什么被折叠?



