Итак, я пытаюсь воссоздать трехмерный график на основе примера из моего домашнего задания. Кажется, чего-то не хватает, в итоге вижу только пустое окно, но там же должен быть и 3D-сюжет.
Значит, это должен быть правильный код, но почему-то он не работает, интересно, почему...
импортировать numpy как np из sklearn.datasets импортируйте make_blobs импортировать matplotlib.pyplot как plt из sklearn.svm импорт LinearSVC из mpl_toolkits.mplot3d импортировать Axes3D X, y = make_blobs(centers=4, random_state=8) #добавляем другу ознаку, зведену в квадрат X_new = np.hstack([X, X[:, 1:] ** 2]) # print(X, y, X_new) линейный_svm_3d = LinearSVC().fit(X_new, y) coef, intercept = linear_svm_3d.coef_.ravel(), linear_svm_3d.intercept_ # показати раскрывающуюся поверхность линейного класификатора фигура = plt.figure() ax = Axes3D(figure, elev=-152, azim=-26) xx = np.linspace(X_new[:, 0].min() - 2, X_new[:, 0].max() + 2) yy = np.linspace(X_new[:, 1].min() - 2, X_new[:, 1].max() + 2) XX, YY = np.meshgrid(xx, yy) ZZ = (коэф[0] * XX + коэффициент[1] * YY + перехват[0])/-коэф[2] ax.plot_surface(XX, YY, ZZ, rstride=8, cstride=8, альфа=0,3) маска=y==0 ax.scatter(X_new[маска, 0], X_new[маска, 1], X_new[маска, 2], c='b', маркер='o', s=60) ax.scatter(X_new[~маска, 0], X_new[~маска, 1], X_new[~маска, 2], c='r', маркер='^', s=60) ax.set_xlabel('Ознака 0') ax.set_ylabel('Ознака 1') ax.set_zlabel('Ознака 2') plt.show() В результате я получаю следующее:
Пустое окно
