from sklearn.decomposition import PCA
X_dr = PCA(2).fit_transform(X)
X_dr.shape
r = np.exp(-(X_dr**2).sum(1))
rlim = np.linspace(min(r),max(r),100)
from mpl_toolkits import mplot3d
r.shape
X=X_dr
clf = SVC(kernel="rbf",gamma=0.007196856730011514,C=8).fit(X,y)
score = clf.score(X,y)
plt.scatter(X[:,0],X[:,1],zorder=10,c=y,cmap=plt.cm.Paired,edgecolors="k")
plt.scatter(clf.support_vectors_[:,0],clf.support_vectors_[:,1],s=50,
facecolors="none",zorder=10,edgecolors="k")
X_min,X_max = X[:,0].min()-.5,X[:,0].max()+.5
y_min,y_max = X[:,1].min()-.5,X[:,1].max()+.5
XX,YY=np.mgrid[X_min:X_max:200j,y_min:y_max:200j]
Z=clf.decision_function(np.c_[XX.ravel(),YY.ravel()]).reshape(XX.shape)
plt.pcolormesh(XX,YY,Z>0,cmap=plt.cm.Paired)
plt.contour(XX,YY,Z,colors=["k","k","k"],linestyles=["--","-","--"],
levels=[-1,0,1])
plt.text(4.5,4.8,("%.2f"%score).lstrip("0")
,size=15
,bbox=dict(boxstyle="round",alpha=0.8,facecolor="white")
,horizontalalignment="right")
plt.xticks(())
plt.yticks(())
plt.tight_layout()
plt.show()
def plot_3D(elev=30,azim=-27,X=X_dr,y=y):
ax = plt.subplot(projection="3d")
ax.scatter3D(X[:,0],X[:,1],r,c=y,s=30,cmap="rainbow")
ax.view_init(elev=elev,azim=azim)
ax.set_xlabel("X")
ax.set_ylabel("y")
ax.set_zlabel("r")
plt.show()
from ipywidgets import interact,fixed
interact(plot_3D,elev=[0,30,60,90,120],azip=(-180,180),X=fixed(X_dr),y=fixed(y))
plt.show()
以下答案引用自GPT-3大模型,请合理使用:
The results of this code are shown below.