首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perceptron和算子

Perceptron和算子
EN

Stack Overflow用户
提问于 2020-04-18 00:54:58
回答 2查看 95关注 0票数 1

我使用了这段代码来实现和操作符,但是没有正确计算分隔区域的行。它正在经历点1,0和0,1。如何做才能正确地分隔区域?

代码语言:javascript
复制
from sklearn.linear_model import Perceptron
import matplotlib.pyplot as plt
import numpy as np
from itertools import product

data = [[0,0],[1,0],[0,1],[1,1]]
labels_and = [0, 0, 0, 1]

x = [points[0] for points in data]
y = [points[1] for points in data]

plt.scatter(x, y, c = labels_and)
plt.show()

classifier = Perceptron()
classifier.fit(data, labels_and)

print(classifier.score(data, labels_and))

result = classifier.decision_function([[0, 0], [1, 1], [0.5, 0.5]])
print(result)

x_values = y_values = np.linspace(0, 1, 100)
point_grid = list(product(x_values, y_values))
distances = classifier.decision_function(point_grid)
abs_distance = [abs(x) for x in distances]

distance_matrix = np.reshape(abs_distance, (100, 100))

heatmap = plt.pcolormesh(x_values, y_values, distance_matrix)
plt.colorbar(heatmap)
plt.show()

截图

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-18 02:48:36

决策边界是正确的,因为所有的>都被分类为1类,而所有的<=都被归类为0类。然而,你将分类器预测结果的绝对值可视化的方法可能会误导人吗?

sklearn文档引用了英语wiki文章,其中对感知器使用了以下定义:

由于唯一的1类标签是点(1,1),所以右上角可以选择w = [2,2]b=-2来正确地分类(1,1) as 1(0,0), (0,1), (1,0) as 0

2*0+2*1-2 =0以来,(1,0)和(0,1)点将位于决策边界上。然而,我们也可以选择b=-3,我们的分类问题仍将得到正确的解决。区别在于(1,0)和(0,1)点自2*0+2*1-3 <0以来不再直接位于边界处。

让我们看看我们受过训练的感知器学到了什么参数!要访问它们,您可以从滑雪博士中看到

代码语言:javascript
复制
w = classifier.coef_[0]  
b = classifier.intercept_   

如果您打印它们,可能会得到w=[2,2]b=-2。若要导出表示相应决策边界的线,可以考虑w0*x + w1*y + b == 0并为x求解的边情况。

因此,策划这个问题会导致这样的结果:

代码语言:javascript
复制
m = -weight[0]/weight[1]   
n = -b/weight[1]    
plt.plot(x_values, m*x_values+n)   

这就是你在照片中看到的深蓝色山谷。我们的点(1,0)和(0,1)在边界上。你可以玩b=-3游戏,在这里你可以得到一条具有较高的y截距的线,这可能是你所期望的?

票数 0
EN

Stack Overflow用户

发布于 2020-04-18 12:09:21

决策边界的计算是正确的,但我认为它是不同的。这一点在@v.tralala对这个问题的回答中得到了彻底的解释。同时,我发现,如果给random_state的值不是零(例如random_state = 100),就会计算出不同的截距值和权值,从而使决策边界更接近点(1,1)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61282985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档