SVM:当超过 2 时绘图

我正在使用 -learn 的乳腺癌数据集,其中包含 30 个特征。

按照本关于不那么令人沮丧的虹膜数据集的教程,我弄清楚了在考虑数据集的前两个特征(平均半径和平均纹理)时如何绘制区分“良性”和“恶性”类别的决策面。

这是我得到的:

enter

但是,当使用数据集中的所有特征时,如何表示计算出的超平面呢?

我知道我无法在 30 维中绘制图形,但我想将运行 svm.SVC(='', C=1).fit() 时创建的超平面“投影”到 2D 散点图上,显示与平均半径。

我读到过有关使用 PCA 来降低维度的内容,但我怀疑拟合“降低的”数据集与将所有 30 个特征的计算超平面投影到 2D 图上不同。

到目前为止,这是我的代码:

10

11

12

13

14

15

16

17 号

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

.as plt

从 。

从支持向量机

numpy 作为 np

#加载

=.()

# 分为集合和测试集

, , , = (.data, ., =0.3,=109) # 70%和30%测试

h = .02 # 网格步长

C=1.0#

clf = svm.SVC(='', C=C).fit([:,:2], ) #

x_min, x_max = [:, 0].min() – 1, [:, 0].max() + 1

y_min, y_max = [:, 1].min() – 1, [:, 1].max() + 1

xx, yy = np.(np.(x_min, x_max, h),

np.(y_min, y_max, h))

Z = clf.(np.c_[xx.ravel(), yy.ravel()])

Z = Z.(xx.形状)

plt.(xx, yy, Z, cmap=plt.cm., alpha=0.8)

scat=plt.([:, 0], [:, 1], c=)

= plt.(*scat.(),

loc=“右上”,标题=“”)

plt.('')

plt.('')

plt.xlim(xx.min(), xx.max())

plt.ylim(yy.min(), yy.max())

plt。 展示()

您无法可视化许多功能的决策面。 这是因为 N 维表面的维度太多,无法可视化。

我还在这里写了一篇关于此的文章:

如果不进行任何 2D 变换,则无法绘制 30 维数据。

什么是?

给定一组站点 P := {p1, …, pn},就是将空间细分为 n 个单元,P 中的每个站点都有一个单元,其属性是点 q 位于与某个站点 pi 对应的单元中当 i 与 j 不同时,d(pi, q) < d(pj, q)。 中的线段对应于平面中距两个最近站点等距的所有点。 在计算机科学中有应用。 –

在几何中,质心镶嵌(CVT)是一种特殊类型的镶嵌或贴图。 当每个单元的生成点也是其质心(即算术平均值或质心)时,称为质心。 可以看作是生成器最优分布对应的最优划分。 许多算法可用于生成质心细分,包括 K 均值聚类的 Lloyd 算法或 BFGS 等拟牛顿方法。 – 维基百科

10

11

12

13

14

15

16

17 号

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

numpy 作为 np, . 作为PLT

从..

来自..基地

来自 ..t_sne TSNE

从支持向量机

BCD = ()

X,y = bcd.数据, bcd.

= TSNE(=2).(X)

打印(.形状)

h = .02 # 网格步长

C=1.0#

clf = svm.SVC(='', C=C) #

clf = clf. 拟合(X,Y)

= clf.(X)

= 100#

, = np.min([:,0]), np.max([:,0])

, = np.min([:,1]), np.max([:,1])

xx, yy = np.(np.(, , ), np.(, , ))

# 在 x 网格上使用 1-NN

= (=1).fit(, )

= .(np.c_[xx.ravel(), yy.ravel()])

= .((, ))

#阴谋

plt.(xx, yy, )

plt.([:,0], [:,1], c=y)

plt。 展示()

好了,今天的主题就讲到这里吧,不管如何,能帮到你我就很开心了,如果您觉得这篇文章写得不错,欢迎点赞和分享给身边的朋友。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注