在应用标签编码器后,它对用户的标准缩放器有意义吗



我正在一个包含超过5k个类别唯一值的数据集上启动一个项目。

我的问题是在使用标签编码器"枚举"类别后,使用标准缩放器使数据对我的机器学习模型更有"可管理性"有意义吗?

请记住,我总共有50多万个条目,这个专栏有5千个独特的类别。

这更多的是关于它背后的直觉,而不是如何编码,但我认为这应该是一个提问的地方。

标签应使用

LabelEncoder,以便将n个类别的标签替换为从1到n的整数。如果尚未完成,则应执行此操作。

StandardScaler最终用于训练和测试数据,但也不用于标签。它输出float

您当然不应该将其应用于标签列,因为标签列必须是Integer

如果对类别使用LabelEncoder,则需要确保您的类别具有可比性。例如,对于类别["高"、"中"、"低"],项目是可比较的,因此对LabelEncoding和标准缩放都有意义。

然而,当您的类别无法相互比较时,对其进行标签编码将没有任何意义。例如,不能将"星期一"与"星期二"进行比较。

TL;DR
如果您的类别具有可比性(序数(,则这是有意义的。如果没有,试着找到减少你的类别的方法,有很多方法可以做到这一点

1(由于机器学习模型无法处理字符串,因此需要LabelEncoder。您需要一个连续的数字标签(0,1,2,..n-1(。但是,这只是针对标签部分,您可以根据型号要求使用一个热编码或直接使用数字标签。

2( StandardScalar使您的数据为零均值和单位方差。

The standard score of a sample x is calculated as:
z = (x - u) / s
where u is the mean of the training samples or zero if with_mean=False, and s is the standard deviation of the training samples or one if with_std=False.

数据集的标准化是许多机器学习估计器的常见要求:如果单个特征或多或少看起来不像标准正态分布数据(例如,具有0均值和单位方差的高斯(,它们可能表现不佳。

例如,学习算法的目标函数中使用的许多元素(例如支持向量机的RBF核或线性模型的L1和L2正则化子(假设所有特征都以0为中心,并且具有相同顺序的方差。如果一个特征的方差比其他特征大几个数量级,它可能会主导目标函数,使估计器无法像预期的那样正确地从其他特征中学习。(scikit学习文档(

因此,通常情况下,它可以帮助您很好地扩展数据,这可能有助于更快地收敛。但是,同样,这取决于您正在使用的ML模型。

最新更新