【笔记】【机器学习基础】流形学习

用t-SNE进行流形学习

流行学习算法是一类用于可视化的算法,它允许进行更复杂的映射,通常也可以给出更好的可视化。PCA是用于变换数据的首选方法,也可以进行可视化,但它的性质(先旋转然后减少方向)限制了有效性。因此,我们可以使用流形学习算法进行数据可视化。
t-SNE算法主要思想:找到数据的一种二维表示,尽可能保持数据点之间的距离,主要保存那些点比较靠近的信息。

(1)数据集(digits数据集)

from sklearn.datasets import load_digits
digits = load_digits()

fig, axes = plt.subplots(2, 5, figsize=(10, 5),
                         subplot_kw={'xticks':(), 'yticks': ()})
for ax, img in zip(axes.ravel(), digits.images):
    ax.imshow(img)

在这里插入图片描述
(2)利用PCA将降维的数据可视化
对前两个主成分作图,按照类别对数据点着色

pca = PCA(n_components=2)
pca.fit(digits.data)

digits_pca = pca.transform(digits.data)
colors = ["#476A2A", "#7851B8", "#BD3430", "#4A2D4E", "#875525",
          "#A83683", "#4E655E", "#853541", "#3A3120", "#535D8E"]
plt.figure(figsize=(10, 10))
plt.xlim(digits_pca[:, 0].min(), digits_pca[:, 0].max())
plt.ylim(digits_pca[:, 1].min(), digits_pca[:, 1].max())
for i in range(len(digits.data)):
    # actually plot the digits as text instead of using scatter
    plt.text(digits_pca[i, 0], digits_pca[i, 1], str(digits.target[i]),
             color = colors[digits.target[i]],
             fontdict={'weight': 'bold', 'size': 9})
plt.xlabel("First principal component")
plt.ylabel("Second principal component")

在这里插入图片描述
实际用每个类别对应的数字作为符号显示类别的位置,利用前两个成分可以将数字0、6、4较好分开,大部分其他的数字都重叠在一起。

(3)将t-SNE应用于数据集

from sklearn.manifold import TSNE
tsne = TSNE(random_state=42)

digits_tsne = tsne.fit_transform(digits.data)
plt.figure(figsize=(10, 10))
plt.xlim(digits_tsne[:, 0].min(), digits_tsne[:, 0].max() + 1)
plt.ylim(digits_tsne[:, 1].min(), digits_tsne[:, 1].max() + 1)
for i in range(len(digits.data)):
    plt.text(digits_tsne[i, 0], digits_tsne[i, 1], str(digits.target[i]),
             color = colors[digits.target[i]],
             fontdict={'weight': 'bold', 'size': 9})
plt.xlabel("t-SNE feature 0")
plt.ylabel("t-SNE feature 1")

在这里插入图片描述
可以发现t-SNEde结果很棒,所有的类别都被明确地分开,形成密集的组,但是这种方法不知道类别标签,完全无监督,但找到数据的一种二维表示,仅根据原始空间中数据点之间的靠近程度就能将各个类别明确分开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值