为什么使用大写字母(在 Python 中)定义训练和测试数据的变量?

数据挖掘 Python 数据集
2021-09-29 01:29:55

我希望这个问题最适合这个网站......

在 Python 中,通常使用大写字母作为第一个字符来定义类名,例如

class Vehicle:
    ...

然而,在机器学习领域,训练和测试数据通常被定义为Xand Y-not xand y例如,我现在正在阅读有关 Keras 的本教程,但它使用XandY作为其变量:

from sklearn import datasets

mnist = datasets.load_digits()
X = mnist.data
Y = mnist.target

为什么这些被定义为大写字母?机器学习领域是否有任何约定(至少在 Python 中)最好使用大写字母来定义这些变量?

或者也许人们在机器学习中区分大写和小写变量?

事实上,相同的教程稍后会区分这些变量,如下所示:

from sklearn.cross_validation import train_test_split

train_X, test_X, train_y, test_y = train_test_split(X, Y, train_size=0.7, random_state=0)
2个回答

X(有时是 Y)变量是矩阵。

在某些数学符号中,通常将向量变量名称写为小写,将矩阵变量名称写为大写。通常这些是粗体或有其他注释,但这不能很好地转化为代码。无论哪种方式,我相信这种做法已经从这种符号转移。

您可能还会在代码中注意到,当目标变量是单列值时,它被写成y,所以您有X, y

当然,这在 Python 中没有特殊的语义含义,您可以随意忽略该约定。但是,由于它已成为一种约定,因此如果您共享代码,则可能值得维护。

我认为这与 Python 无关,而与数学有关。X 是一个矩阵,y 是一个向量(大多数情况下)。通常大写字母用于矩阵,小写字母用于向量。

这就是为什么你经常看到这样的事情(来自 sklearn 示例):

digits = datasets.load_digits(n_class=10)
X = digits.data
y = digits.target

或者那个(来自同一个例子):

x_min, x_max = np.min(X_red, axis=0), np.max(X_red, axis=0)
X_red = (X_red - x_min) / (x_max - x_min)

这里 X_red 是一个 mxn 矩阵(大写),x_min 是一个长度为 n 的向量(小写)。