测试运行:将数值数据转换为分类数据2014-03-10 MSDN James McCaffrey机器 学习领域的基本任务是将数值数据转换为分类数据。例如,如果您拥有一个人员身高(以英 寸为单位)的数据集,如 59.5、64.0 和 75.5,则可能希望将此数值数据转换为分类数据( 例如 0、1 和 2)来表示矮、中等、高。此过程有时俗称“数据装箱”。在机器学习文献资 料中,此过程通常被称为“连续数据的离散化”。在以下几种情况下,您可能需要将 数据离散化。许多机器学习算法(如 Naive Bayes 分类和预测)仅适用于分类数据。因此, 如果您的原始数据是数值数据,并且您希望应用 Naive Bayes,则必须将数据离散化。您还 可以将数值数据和分类数据混合在一起,如经常在 Excel 电子表格中找到的数据。由于仅极 少数机器学习算法适用于混合数据,因此您可以将数值数据转换为分类数据,然后使用适用 于分类数据的机器学习算法。例如,可使用分类效用进行数据聚类分析。可能是由于 这个主题的吸引力不够,准确描述如何实施离散化算法的可用资源非常少。在本文中,我将 介绍一种强大的离散化算法。虽然这些理念不是最新的,但据我所知,本文中介绍的实现在 此之前未发布过。了解本文所述观点的最佳方法是查看图 1 中所示的演示程序。该 演示设置了 20 个数据点,用于表示人员的身高(以英寸为单位)。图 2 中的直方图中显示 了原始数据。该演示将分析数据并创建一个 Discretizer 对象,然后显示此对象的内部表示 形式。Discretizer 在名为 data 的已排序(从低值到高值)数组中保留来自原始数据的不 同值的副本。计算所得的类别数为 3,并存储在成员变量 k 中。

图 1 将数值数据转换为分类数据

图 2 要进行分 类的原始数据