如何使用Python统计证明列是否具有分类数据


10

我在python中有一个数据框,我需要在其中查找所有类别变量。检查列的类型并不总是可行的,因为int类型也可以是分类的。

因此,我在寻找正确的假设检验方法以识别列是否为分类方面寻求帮助。

我正在尝试进行卡方检验以下的测试,但是我不确定这是否足够好

import numpy as np
data = np.random.randint(0,5,100)
import scipy.stats as ss
ss.chisquare(data)

请指教。


1
您能否澄清我是否正确理解了您想要区分用作序数变量的int和用作任意类别编码的int?我没有答案,但这可能有助于其他阅读材料弄清您想要的内容。直觉上,我认为Chi2不能可靠地完成这项工作。
ReneBt

是的,你是对的。除了我的重点不是变量的类型,而是变量所携带的数据。因此,在示例代码中,我共享的结果应该是它是类别变量,因为它只有5个唯一值。
阿米特(Amit)

1
规则在哪里“结果应该是它是一个分类变量,因为它只有5个唯一值”。来自?
丹尼斯·索默斯

哦,这不是规则,直觉上我知道我所有的列数据仅是这5个值。
阿米特(Amit)

即使其他人正确指出了它不能完成,但这仍然会引起一个有趣的机器学习问题。毫无疑问,存在可以做出合理准确预测的问题领域。
约翰·科尔曼

Answers:


34

简短的答案:您不能。

没有统计测试可以告诉您包含1到10之间的整数的预测变量是数字预测变量(例如,子代数)还是编码十个不同类别。(如果预测变量包含负数,或者最小的变量大于1,或者它跳过整数,则可能会反对它是分类编码-或仅表示分析人员使用了非标准编码。)

确保唯一的方法是利用领域专业知识或数据集的密码本(应始终存在)。


14
“数据集的密码本(应该一直存在)” —哈,好的。
Kodiologist

12

无论您采用哪种准则或经验法则,都欢迎使用您的数据集,但是我们看不到您的数据。在任何情况下,通常都可以更好地解决该问题,并且也无需参考任何特定软件。

即使您认为比您想像的还要糟糕,它也比您想像的要糟糕。

  1. @Stephan Kolassa的答案已经提出了一个重点。小整数可能表示计数而不是类别:3(表示3辆汽车或猫)与3(表示“人拥有汽车”或“人归猫所拥有”)不同。

  2. 小数点可能会潜伏在分类变量中,作为编码分类(例如,行业或疾病)的一部分。

  3. 严格意义上来说,测量值只能是整数,例如,人们的身高可能只是报告为整数厘米或英寸,血压是整数mm Hg。

  4. 唯一值(比“唯一”更好的术语,它仍然具有只发生一次的主要含义)的数量也不是一个好的指导。在中等样本中可能出现的不同身高的人数可能远少于不同宗教信仰或民族血统的人数。


+1。这是需要考虑的好清单。您应该将此与您对数据集(和任何文档)的领域知识相结合,以自动进行分类变量检测。
安娜

@Anna我要说的是,不应执行自动检测,而正是这种情况会使您陷入麻烦。领域知识和文档应该容易地从其他变量中识别出多变量,以便您不必猜测。
prince_of_pears

7

好吧,我认为它甚至比其他答案更糟糕:数据不是分类的或数字的亚种 -分析人员规定,“度量级别”是在特定场合回答特定问题的方法。在此处查看Glen_b的答案。

了解这一点非常重要。例如,对于分类树,比率,间隔和序数水平预测变量之间的区别不重要:唯一重要的区别是序数和名义预测变量之间的区别。限制算法以沿一条线的某个点分割预测变量,将较高的值与较低的值分隔开,会对预测性能产生重大影响(无论好坏),这取决于(假定是有序的)预测变量与响应之间的关系的平滑度以及数据集的大小。无论您要进行何种分析,都没有一种明智的方法来单纯地基于对预测变量如何表示现实的思考来做出决定,更不用说您在样本中发现的价值了。


0

这是一个开放的研究问题。参见例如Valera等人的著作。()或扩展名(例如Dhir等人的论文 - )。

编辑:

统计和机器学习中的一种常见做法是假定变量的统计数据类型(例如,有序,分类或实值),并且通常也知道似然模型。但是,随着现实世界数据可用性的提高,这种假设变得过于严格。数据通常是异类,复杂的,并且记录不当或不完整。令人惊讶的是,尽管它们具有实际的重要性,但是仍然缺乏自动发现数据集中变量的统计类型以及适当的似然(噪声)模型的工具。

(摘自Valera论文。)

因此,当我们说这是一个“开放性问题”时(足够多地引用自己的话),我们的意思是说,在给定有限样本的情况下,目前尚无良好的自动方法来推断数据类型。如果您有无限的样本,这将很容易,但是由于这是不可能的,因此我们需要恢复到其他方法。


您能告诉我们您所说的“开放研究问题”是什么吗?请考虑还解释一下您的答案与本主题中的其他答案没有(或没有!)矛盾。
ub

当然,让我编辑我的答案。
Astrid

谢谢。在我仔细阅读了Valera的论文后,似乎提出了一个更强有力的主张:即,它的确声称有一种方法来猜测变量类型,尤其是区分分类数据和有序数据。我没有研究该方法,但是假定它必须(至少部分地)基于观察此类变量与假定与之相关的其他变量之间的关系。我无法理解“无限样本”(无论可能是什么)有什么其他用途:您能解释一下这将使问题“变得容易”吗?
ub

它实际上是一种非常可靠的方法,我自己已经对其进行了详细的研究(这确实使我有些偏心)。但是他们的想法很聪明。我们假定每种列类型都可以描述为类型的混合(很像混合模型),然后我们试图找到权重最高的类型,然后将对应的“类型”称为变量的实型。就类型推断而言,它非常聪明,并且是最好的自动方法(据我所知)。如果其他人认识别人,请分享!
Astrid
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.