【发布时间】:2017-04-22 17:24:18
【问题描述】:
我目前正在尝试比较 pandas DataFrame 中的两列:
--------------- Cluster Assignment ---------------
ID Class Cluster
0 1000025 2 4
1 1002945 2 2
2 1015425 2 4
3 1016277 2 2
4 1017023 2 4
5 1017122 4 2
6 1018099 2 4
7 1018561 2 4
8 1033078 2 4
9 1033078 2 4
10 1035283 2 4
11 1036172 2 4
12 1041801 4 4
13 1043999 2 4
14 1044572 4 2
15 1047630 4 4
16 1048672 2 4
17 1049815 2 4
18 1050670 4 2
19 1050718 2 4
试图找到不匹配的行数以找到我的数据框中的错误比率(完整的 df 比这长得多)。我正在使用np.where() 进行比较,并且我得到了所有不正确行的准确输出,但现在我想添加错误行数,然后将其除以总行数。 . 我现在的问题是:
>>> data= np.where(df7['Class']!=df7['Cluster'])
>>> print(len(data))
1
如果我打印数据类型,我会得到< class 'tuple' >。因此,我尝试使用以下方法从元组转换为列表:
>>> print(list(data))
[array([ 9, 11, 17, 31, 32, 33, 34, 36, 38, 62, 64, 65, 135,
156, 196, 201, 277, 301], dtype=int64)]
显然,这没有帮助,因为如果我尝试打印/存储该列表的长度,我会得到
>>> print(list(data))
[array([ 9, 29, 30, 31, 33, 35, 59, 61, 62, 132, 153, 193, 198,
274, 298], dtype=int64)]
>>> print('errors: ', len(cluster2wrong))
errors: 1
有人能指出我如何计算这些项目的方向吗?
【问题讨论】:
-
您是否尝试过在您的第一个示例中使用
print(len(data[0]))? -
data是一个元组,数组的每个维度一个项目。data[0]是一个数组,是其中一个维度的索引。 -
data的结构实际上是什么样的?将其转换为其他内容只是为了计算您感兴趣的元素数量似乎毫无意义,您只需查询返回的内容的大小即可。或者你真正追求的任何子部分。 -
@hpaulj 只是抓住了 len(data[0]) 让我得到了我正在寻找的信息。我能够将它除以我从中提取的原始 df 的长度,并得到我的错误率。现在的问题是,在我运行它的一半时间里,我得到了 4% 的错误率,而另一半得到了 95% 的错误率。不知道为什么会这样,但这是另一个问题,我想!谢谢!
-
@pvg 数据是三列,一个标识符号,一个类别(2 或 4,基于患者的癌细胞是良性还是恶性),以及我开发了一个 k 的“集群”结果-means 算法,看看我是否可以训练一个模型来预测正确的类。这是从不同的数据库中提取的,这就是我现在所处的位置:)
标签: python arrays numpy tuples