引例

妹妹的小学附近新开了一家糖果店,里面有各式各样的糖果,每个糖果有不同的形状、不同的颜色、不同的包装、不同的口味等等属性。现在妹妹想要知道自己喜欢哪种糖果。
假设糖果只有一种属性,即形状。那么,如果有4种形状,妹妹只需要试吃4次即可。但是现在又多了一个属性颜色,如有共有5种颜色,那妹妹就要试吃4*5=20次才可以,那么如果继续增加属性,妹妹试吃的个数将随着属性的增多而一直增大。
这里糖果的属性即是维数,而当属性变多的时候,就会出现维度灾难。

维度灾难

T-SNE

import numpy as np
from sklearn import datasets
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from matplotlib.colors import ListedColormap

datasets = datasets.load_digits()
X = TSNE(n_components=2).fit_transform(datasets.data)
y = datasets.target
#print(X.shape)
plt.figure()
#plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold,
#                edgecolor='k', s=20)
for i in range(X.shape[0]):
        plt.text(X[i, 0], X[i, 1], s = str(y[i]), color=plt.cm.Set1(y[i] / 10.),
                 fontdict={'weight': 'bold', 'size': 9})

plt.xlim((-80,80))
plt.ylim((-80,80))
plt.show()


评论已关闭。

X