我曾多次使用tSNE可视化高维数据进行聚类分析,当数据落入聚类时,它的效果一直很好。
但是,使用 tSNE 来可视化具有线性关系的数据集中的自变量是否有意义, 在哪里是目标值和是自变量(b 是偏差)?
据我了解 tSNE,它更多地用于捕获高维数据中的局部结构,因此它可能不适合可视化线性回归的数据 - 这是一个错误的假设吗?
我曾多次使用tSNE可视化高维数据进行聚类分析,当数据落入聚类时,它的效果一直很好。
但是,使用 tSNE 来可视化具有线性关系的数据集中的自变量是否有意义, 在哪里是目标值和是自变量(b 是偏差)?
据我了解 tSNE,它更多地用于捕获高维数据中的局部结构,因此它可能不适合可视化线性回归的数据 - 这是一个错误的假设吗?
您的假设是正确的,结果通常具有误导性。
假设您的(线性相关)数据在某个范围内有缺失点:
与 t-SNE 相比,这两个数据子集将是两个不同的集群,即使它们位于相同的线性分布上:
但是,如果您真的对这两个结构是分开的这一事实感兴趣,那么 t-SNE 是一个很好的可视化选择。
所以一个正确的答案应该是:这取决于你需要什么。
附言
这里用于此示例的代码:
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
def function(x, y):
return 4+3*x + 4*y
x1=np.random.rand(100)
x2=np.random.rand(100)+1.2
X=np.concatenate([x1, x2])
Y=0.5+2*X
Z=function(X, Y)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X, Y, Z, c='r', marker='o')
plt.show()
data=[]
for x, y, z in zip (X, Y, Z):
data.append([x, y, z])
data_embedded = TSNE(n_components=2).fit_transform(data)
plt.scatter([x for x, y in data_embedded], [y for x, y in data_embedded], color='r')
plt.show()