Попытка получить границу решения SVM, но не отображает ее - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь построить границу решения SVM, но получил эту ошибку:

TypeError: '(0 True 1 True 2 True 3 True 4 True 5 False 6 False 7 False 8 False Name: Clase, dtype: bool, 0) 'является недопустимым ключом

У меня есть следующий код:

tabla = pd.DataFrame({'X': [1, 1, 1, 3, 1, 3, 1, 3, 1], 'Y': [0,0,1,1,1,2,2,2,1], 'Z': [1,2,2,4,3,3,1,1,0],
                 'Clase': ['0', '0','0','0','0','1','1','1','1']}, 
              columns=['X','Y','Z','Clase'])

X = tabla.iloc[:, :3]
Y = tabla.Clase

#make it binary classification problem
X = X[np.logical_or(Y==0,Y==1)]
Y = Y[np.logical_or(Y==0,Y==1)]

model = svm.SVC(kernel='linear')
clf = model.fit(X, Y)
z = lambda x,y: (-clf.intercept_[0]-clf.coef_[0][0]*x -clf.coef_[0][1]*y) / clf.coef_[0][2]
tmp = np.linspace(-5,5,30)
x,y = np.meshgrid(tmp,tmp)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot3D(X[Y==0,0], X[Y==0,1], X[Y==0,2],'r')
ax.plot3D(X[Y==1,0], X[Y==1,1], X[Y==1,2],'b')
ax.plot_surface(x, y, z(x,y))
ax.view_init(30, 60)
plt.show()

Я попытался добавить clf = model.fit ( X, Y.iloc [:, 0] .values), но это не сработало. Есть идеи?

...