首先导入相应的模块,
- from sklearn.datasets import make_blobs
- from sklearn.svm import SVC
- import matplotlib.pyplot as plt
- import numpy as np
我们使用make_circles()函数创建散点图,并将散点图中的点的横纵坐标赋值给x,y,其中x是特征矩阵,y是标签:
- from sklearn.datasets import make_circles
- X,y = make_circles(100, factor=0.1, noise=.1,random_state=42) # 100个样本,factor=0.1表示内外圈之间的距离,noise表示噪声
- X.shape
- y.shape
- plt.scatter(X[:,0],X[:,1],c=y,s=50,cmap="rainbow")
- plt.show()

可以看到一个环形的散点图就被创建完毕。接下来我们使用下面的代码块来绘制3D图:
- r = np.exp(-(X**2).sum(1)) # 二维数据,先对每个样本求平方,然后按行求和,再取负指数
-
- rlim = np.linspace(min(r),max(r),100) # 生成100个等差数列
-
- from mpl_toolkits import mplot3d
-
- #定义一个绘制三维图像的函数
- #elev表示上下旋转的角度
- #azim表示平行旋转的角度
- def plot_3D(elev=30,azim=30,X=X,y=y):
- ax = plt.subplot(projection="3d")
- ax.scatter3D(X[:,0],X[:,1],r,c=y,s=50,cmap='rainbow') #
- ax.view_init(elev=elev,azim=azim)
- ax.set_xlabel("x")
- ax.set_ylabel("y")
- ax.set_zlabel("r")
- plt.show()
-
- plot_3D()

可以看到3D图被我们绘制出来了。但是我们还可以通过运行下述代码绘制可以调节角度的图:
- from ipywidgets import interact,fixed
- interact(plot_3D,elev=[0,30,60,90,120],azip=(-180,180),X=fixed(X),y=fixed(y))
- plt.show()




我们可以通过调节elev参数去调整垂直方向的观察角度,调节zaim参数调节水平方向的观察角度。