Exemplo n.º 1
0
train_data = r["arr_0"]
train_label = r["arr_1"]
test_data = r["arr_2"]
test_label = r["arr_3"]
label_num = r["arr_4"]
train_size = r["arr_5"]
test_size = r["arr_6"]
#######################################################################################################
index = range(0, 10)  #shuffle
datatemp = np.zeros((train_size + test_size, 10))
labeltemp = np.zeros(train_size + test_size)
datatemp[range(0, train_size), :] = train_data
datatemp[range(train_size, train_size + test_size), :] = test_data
labeltemp[range(0, train_size)] = train_label
labeltemp[range(train_size, train_size + test_size)] = test_label
total = shuffledata(datatemp, labeltemp, train_size + test_size, 10)
data = total[:, [4, 6]]
label = total[:, 10]
#######################################################################################################
model = svm_train(label, data, '-t 0')  #线性核函数
print("Training data predict:")
predict = svm_predict(label, data, model)
#######################################################################################################
x_begin = min(data[:, 0])  #扫描分界面位置
x_end = max(data[:, 0])
y_begin = min(data[:, 1]) - 3
y_end = max(data[:, 1]) + 1
pointnumber = 1200
linex = np.linspace(x_begin, x_end, pointnumber)
liney = np.zeros(pointnumber)
linextest = np.ones(pointnumber)
from matplotlib import pyplot as plt
from shuffle_fy import shuffledata
from draw import plotall
from mpl_toolkits.mplot3d import Axes3D
#r=np.load("2genes_withoutnorm.npz")
r = np.load("2genes.npz")
train_data = r["arr_0"]
train_label = r["arr_1"]
test_data = r["arr_2"]
test_label = r["arr_3"]
label_num = r["arr_4"]
train_size = r["arr_5"]
test_size = r["arr_6"]
#######################################################################################################
index = range(0, 2)  #shuffle
train_total = shuffledata(train_data, train_label, train_size, 2)
train_data = train_total[:, index]
train_label = train_total[:, 2]
#######################################################################################################
times = 200  #改变线性核的C
cmax = 10
cmin = 0.1
cnum = 100
scores = np.zeros(cnum)
for i in range(1, cnum + 1):
    c = i * cmin
    command = '-q -t 0 -v 10 -c ' + str(c)
    for k in range(0, times):
        acc = svm_train(train_label, train_data, command)
        scores[i - 1] = scores[i - 1] + acc / 100
    scores[i - 1] = scores[i - 1] / times