支持向量机:Python错误信息

我对机器学习相对来说还是个新手,决定先研究一些理论,然后再用代码进行实践。在这个过程中,我遇到了很多错误信息,大多数我都设法解决了,但这个错误让我迷茫。我对Python也相对比较新手,所以我确定这是一个与语法相关的错误,但这次我没能找出具体问题(Python 2.7.15)。以下是完整的代码:

但我一直收到以下错误信息:

Traceback (most recent call last): File “C:\Users…\Support Vector Machine (from scratch).py”, line 134, in x2=[ w[0],w[1],-w[1],w[0] ] NameError: name ‘w’ is not defined

希望有更有经验的人能帮我解决。谢谢。


回答:

首先,你在方法svm_sgd_plot中定义了w,但该方法在你明确调用它之前不会执行任何操作。

你可以通过添加一行w = svm_sgd_plot(X,Y)来调用它,例如在绘制测试数据之后,这样你的代码就会变成

#绘制训练数据for d, sample in enumerate(X):    # 绘制负样本if d < 2:    plt.scatter(sample[0], sample[1], s=120, marker='_', linewidths=2)    # 绘制正样本else:    plt.scatter(sample[0], sample[1], s=120, marker='+', linewidths=2)#绘制测试数据# 添加我们的测试样本plt.scatter(2,2, s=120, marker='_', linewidths=2, color='yellow')plt.scatter(4,3, s=120, marker='+', linewidths=2, color='blue')plt.show()#调用你的方法w = svm_sgd_plot(X,Y)

然后你只需要可视化你的方法提供的分类。我添加了你的两个测试数据观察点,以便你可以看到你的SVM方法如何正确地对它们进行分类。注意,黄色点和蓝色点被你的SVM方法生成的线分隔开来。

# 打印由svm_sgd()计算出的超平面x2=[ w[0],w[1],-w[1],w[0] ]x3=[ w[0],w[1],w[1],-w[0] ]x2x3 = np.array([x2,x3])X,Y,U,V = zip(*x2x3)ax = plt.gca()ax.quiver(X,Y,U,V,scale=1, color='blue')#我添加了以下三行,以便你可以看到你的SVM方法如何对测试数据进行分类plt.scatter(2,2, s=120, marker='_', linewidths=2, color='yellow')plt.scatter(4,3, s=120, marker='+', linewidths=2, color='blue')plt.show()

enter image description here

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注