机器学习的数据维度 定义

现在在做机器学习,想问下下面这个数据维度是多少?

是12维还是2维

img

我之所以会疑惑,是因为下面这个例子。 这的1 我理解就是表格,为什么这个是三维? 而如果以1的定义,2 的例子应该是个三维数据,为什么是二维呢?我很疑惑
1、输入4个3维的数据,然后通过t-SNE降维称2维的数据

import numpy as np
from sklearn.manifold import TSNE
X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
tsne = TSNE(n_components=2)
tsne.fit_transform(X)
print(tsne.embedding_)

from time import time
import matplotlib.pyplot as plt
from matplotlib.ticker import NullFormatter
from sklearn import manifold, datasets
from mpl_toolkits.mplot3d import Axes3D

# X是一个(1000, 3)的2维数据,color是一个(1000,)的1维数据
n_points = 1000
X, color = datasets.samples_generator.make_s_curve(n_points, random_state=0)
n_neighbors = 10
n_components = 2

# 创建了一个figure,标题为"Manifold Learning with 1000 points, 10 neighbors"
fig = plt.figure(figsize=(8, 8))
plt.suptitle("Manifold Learning with %i points, %i neighbors" % (1000, n_neighbors), fontsize=14)

'''绘制S曲线的3D图像'''
ax = fig.add_subplot(211, projection='3d')
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=color, cmap=plt.cm.Spectral)
ax.view_init(4, -72)  # 初始化视角

'''t-SNE'''
t0 = time()
tsne = manifold.TSNE(n_components=n_components, init='pca', random_state=0)
Y = tsne.fit_transform(X)  # 转换后的输出
t1 = time()
print("t-SNE: %.2g sec" % (t1 - t0))  # 算法用时

ax = fig.add_subplot(2, 1, 2)
plt.scatter(Y[:, 0], Y[:, 1], c=color, cmap=plt.cm.Spectral)
plt.title("t-SNE (%.2g sec)" % (t1 - t0))
ax.xaxis.set_major_formatter(NullFormatter())  # 设置标签显示格式为空
ax.yaxis.set_major_formatter(NullFormatter())
plt.show()

在机器学习领域,的确存在类似题主的困惑,其原因就在于没有厘清数组的维度和数据特征维度的区别。

数据集通常是指由若干个样本数据组成的二维数组,数组的每一行表示一个样本的数据。数据集的列,也被称为特征维或特征列。题主的第一張图是二维数组,有12个特征维。所谓降维,并非是将数据集从二维变成一维,而是减少数据集的特征维。如果有兴趣,可以参考我的这一篇博客。

可以通过shape查看

从数学上来讲,一个向量有多少个元素,这个向量就有多少维,例如常说的n维向量就表示有n个元素的向量,像你这里的例子1里面,从数学的角度理解就是有四个向量放在一起,每个向量是3维的,因为这些向量有3个元素;
从python numpy库的设计和概念来说,ndarray对象中有两个概念:轴和维数。怎么理解,在你的例子1中X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]]),X的shape为(4, 3),shape的长度就是X的轴数(这里有2个轴,轴0和轴1),shape中的数据就表示在每个轴上有多少个元素(即多少维),对于X,其有两个轴,轴0是4维的,轴1是3维的。而例子2中说X是一个(1000, 3)的2维数据,color是一个(1000,)的1维数据,这里的维其实指的是轴。轴和维有时候经常混淆和混用了,但是就是一种说法,理解其意思就能够明白哪些情况下指的是轴或维。

也许有一些帮助
https://blog.csdn.net/qq_38342468/article/details/119389414