import numpy as np
def my_svm(dataset, label):
rate = 1 # rate for gradient descent
epochs = 10000 # no of iterations
weights = np.zeros(dataset.shape[1]) # Create an array for storing the weights
# Min. the objective function(Hinge loss) by gradient descent
for epoch in range(1,epochs):
for n, data in enumerate(dataset):
if (label[n] * np.dot(dataset[n], weights)) < 1:
weights = weights + rate * ( (dataset[n] * label[n]) + (-2 *(1/epoch)* weights) )
else:
weights = weights + rate * (-2 * (1/epoch) * weights)
return weights
def predict(test_data,weights):
results = []
for data in test_data:
result = np.dot(data,weights)
results.append(-1 if result < 0 else 1)
return results
您可以使用
numpy
实现一个简单的线性支持向量机,如下所示。顺便说一句,下次提问前请先谷歌一下。网上有很多资源和教程。你知道吗生成用于培训和测试的数据集
测试一下
相关问题 更多 >
编程相关推荐