SVM:当超过 2 时绘图
我正在使用 -learn 的乳腺癌数据集,其中包含 30 个特征。
按照本关于不那么令人沮丧的虹膜数据集的教程,我弄清楚了在考虑数据集的前两个特征(平均半径和平均纹理)时如何绘制区分“良性”和“恶性”类别的决策面。
这是我得到的:
但是,当使用数据集中的所有特征时,如何表示计算出的超平面呢?
我知道我无法在 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。 展示()
好了,今天的主题就讲到这里吧,不管如何,能帮到你我就很开心了,如果您觉得这篇文章写得不错,欢迎点赞和分享给身边的朋友。