小编Ana*_*ory的帖子

使用pandas.DataFrame进行概率张量乘法

我正在寻找一种在python中存储和使用条件概率的好方法.

我正在考虑使用pandas数据帧.如果某些条件概率XP(X=A|P1=1, P2=1) = 0.2,P(X=B|P1=2, P2=1) = 0.9等等,我会使用数据框

         A    B
P1 P2          
1  1   0.2  0.8
   2   0.5  0.5
2  1   0.9  0.1
   2   0.9  0.1
Run Code Online (Sandbox Code Playgroud)

并给予的边缘概率P1P2系列作为

1    0.4
2    0.6
Name: P1

1    0.7
2    0.3
Name: P2
Run Code Online (Sandbox Code Playgroud)

我想获得系列的边际概率X,即系列

A    0.602
B    0.398
Name: X
Run Code Online (Sandbox Code Playgroud)

我可以得到我想要的东西

X = sum(
    sum(
        X.xs(i, level="P1")*P1[i]
        for i in P1.index
        ).xs(j)*P2[j]
    for j in P2.index
    )
X.name="X"
Run Code Online (Sandbox Code Playgroud)

但这是不容易推广到更多的依赖关系,首先之间的不对称xs …

python statistics probability matrix-multiplication pandas

5
推荐指数
0
解决办法
749
查看次数

获取csv文件的最后10000行

在pandas中,我可以pandas.io.parser.read_csv("file.csv", nrows=10000)用来获取csv文件的前10000行.

但是因为我的csv文件很大,并且最后一行比第一行更有意义,所以我想阅读最后10000行.但是,即使我知道文件的长度,这也不是那么容易,因为如果我使用pandas.io.parser.read_csv("file.csv", nrows=10000, skiprows=990000)包含文件头的第一行跳过1000000行csv文件的前990000行,也会被跳过.(header=0skiprows应用之后进行测量,因此它也没有帮助.)

如何从第0行中带有标题的csv文件中获取最后10000行,最好不知道行中文件的长度?

python csv tail pandas

5
推荐指数
1
解决办法
2078
查看次数

联结主义时间分类 (CTC) 空白标签

我正在尝试在我的网络中使用 CTC 损失函数,但不太明白何时将“空白”标签作为标签提供。

我在Molchanov所描述的手势识别中使用它,但让我感到困惑的是还有一个“无手势”。

在 tensorflow 文档中,描述了

输入 Tensor 的最里面的维度大小 num_classes 表示 num_labels + 1 个类,其中 num_labels 是真实标签的数量,最大值(num_classes - 1)为空白标签保留。

如果我现在使用“空白”标签来表示没有手势,则由于错误,我的训练受到限制

在空标签后面看到一个非空标签(索引 >= num_classes - 1)

我假设空标签与空白标签相同。

问题是,当我想提供从没有手势(映射到空标签)然后有手势的数据时,我得到了这个错误。我可以通过在现有标签旁边添加另外两个标签来避免它,一个用于“无手势”,另一个用于“空白标签/空标签”。然后我只提供“无手势”标签,但从不提供“空白”标签,但这似乎不太正确。

所以我的问题是,我应该将“空白/空”标签用于什么?

我可以想象在语言处理中,您通常会使用句子结尾点作为“空”标签吗?但是没有结束手势,因为它是一个连续的流。

谢谢

machine-learning tensorflow ctc

5
推荐指数
1
解决办法
3377
查看次数

如何对git word差异进行git-apply

我需要编辑一个凌乱的commit提交,该提交只会在随后的几行中更改一个单词,保留其中一些更改,而删除其他更改。这些更改很容易在中看到git diff --word-diff,并且以这种格式,我可以轻松地编辑大块以完成我打算做的事情,但是现在我有了一个像这样的文件

diff --git a/cldf/forms.csv b/cldf/forms.csv
index 46c12a4..0374ece 100644
--- a/cldf/forms.csv
+++ b/cldf/forms.csv
@@ -1783,8 +1783,8 @@ ID,Lect_ID,Concept_ID,Form_according_to_Source,Form,Local_Orthography,Segments,C
1782,adan1251-lawah,day,dil?l?,dil?l?,dilele,d i l ? l ?,Lit. 'all day'.,datasets_Adang_Lawahing_tsv
1783,adan1251-lawah,day,w?d saha,w?d_saha,wed saha,w ? d _ s a h a,midday' lit. 'hot sun',datasets_Adang_Lawahing_tsv
1784,adan1251-lawah,morning,lalami,lalami,lalami,l a l a m i,,datasets_Adang_Lawahing_tsv
1785,adan1251-lawah,yesterday,?u:mi,?u?mi,[-umi-]{+'umi+},? u? m i,,datasets_Adang_Lawahing_tsv
1786,adan1251-lawah,day_before_yesterday,?otari? alumi,?otari?_alumi,[-otaring-]{+'otaring+} alumi,? o t a r i ? _ a l u m i,,datasets_Adang_Lawahing_tsv
1787,adan1251-lawah,tomorrow,dil?l?,dil?l?,dilele,d i l ? l ?,,datasets_Adang_Lawahing_tsv
1788,adan1251-lawah,day_after_tomorrow,a:lu,a?lu,alu,a? l u,,datasets_Adang_Lawahing_tsv
1789,adan1251-lawah,twilight_dawn,lalami,lalami,lalami,l a l a …
Run Code Online (Sandbox Code Playgroud)

git-diff word-diff git-apply

5
推荐指数
1
解决办法
157
查看次数

Pandas:计算仅在两列中不同的所有条目的平均值

我刚刚接受pandas,认为它将使我能够在python中很好地进行数据分析.现在我有一个pandas以下形式的数据框:

pandas.DataFrame({"p1": [1, 1, 2, 2, 3, 3]*2,
                  "p2": [1]*6+[2]*6,
                  "run": [1, 2]*6,
                  "result": xrange(12)})

    p1  p2  result  run
0    1   1       0    1
1    1   1       1    2
2    2   1       2    1
3    2   1       3    2
4    3   1       4    1
5    3   1       5    2
6    1   2       6    1
7    1   2       7    2
8    2   2       8    1
9    2   2       9    2
10   3   2      10    1
11   3 …
Run Code Online (Sandbox Code Playgroud)

python pandas

4
推荐指数
1
解决办法
7693
查看次数

马尔可夫链固定分布与scipy.sparse?

我有一个Markov链给出一个大的稀疏scipy矩阵A.(我已经以scipy.sparse.dok_matrix格式构建了矩阵,但转换为其他矩阵或构造它csc_matrix很好.)

我想知道p这个矩阵的任何平稳分布,它是特征值的特征向量1.此特征向量中的所有条目都应为正数,并且加起来为1,以表示概率分布.

这意味着我想要系统的任何解决方案 (A-I) p = 0,p.sum()=1(在哪里I=scipy.sparse.eye(*A.shape)是idententy矩阵),但(A-I)不是完全排名,甚至整个系统可能都是不确定的.另外,可以生成具有否定条目的特征向量,其不能被归一化为有效概率分布.防止负面输入p会很好.

  • 使用scipy.sparse.linalg.eigen.eigs不是解决方案:它不允许指定附加约束.(如果特征向量包含负数条目,则归一化没有帮助.)此外,它与真实结果有很大差异,有时会出现收敛问题,表现比较差scipy.linalg.eig.(另外,我使用了shift-invert模式,它改进了我想要的特征值的类型,但不是它们的质量.如果我不使用它,它甚至更具有杀伤力,因为我只对一个特定的特征值感兴趣,1.)

  • 转换为密集矩阵并使用scipy.linalg.eig不是解决方案:除负输入问题外,矩阵太大.

  • 使用scipy.sparse.spsolve不是一个明显的解决方案:矩阵要么不是正方形(当组合加性约束和特征向量条件时),要么不是满秩(当试图以某种方式单独指定它们时),有时也不是.

有没有一种很好的方法可以使用python以数字形式获得马尔可夫链的静态状态作为稀疏矩阵?如果有办法获得详尽的清单(也可能是几乎静止的状态),那是值得赞赏的,但并非必要.

python markov-chains scipy sparse-matrix

4
推荐指数
1
解决办法
2592
查看次数

如何从 OpenStreetMap 获取关系的几何形状?

我有一个numpy.ndarray地理坐标,我想看看其中哪些位于阿拉斯加境内。为此,我想从 OpenStreetMap 获取阿拉斯加州的多边形,然后使用一些形状库(可能是 Shapely)来查询哪些点位于其中。然而,我陷入了第一步:我无法获得多边形的几何形状。我已经OSMPythonTools安装了(但是如果有更好的工具可以完成这项工作,我很乐意更换)并且我可以像这样查询阿拉斯加

from OSMPythonTools.nominatim import Nominatim
from OSMPythonTools.api import Api

nominatim = Nominatim()
api = Api()

alaska_id = nominatim.query("Alaska, United States of America").areaId()

alaska = api.query('relation/{:}'.format(alaska_id - 3600000000))
Run Code Online (Sandbox Code Playgroud)

然后我想使用 获取该对象的几何形状alaska.geometry(),但仅返回

Exception: [OSMPythonTools.Element] Cannot build geometry: geometry information not included. (way/193430587)
Run Code Online (Sandbox Code Playgroud)

引发此异常的原因是构成阿拉斯加外部边界的道路alaska.__members()不包含几何图形,然后 API 假定已遇到关系并引发令人困惑的异常。我假设我需要运行一个中间步骤,从 OSM 查询所有这些成员并加载它们的几何图形,我该怎么做?

或者,我知道 Overpass API 可以返回几何图形,所以我假设类似

query = overpassQueryBuilder(
    area=alaska_id,
    elementType=['relation'],
    selector='"id"="1116270"',
    includeGeometry=True)
Run Code Online (Sandbox Code Playgroud)

可能会工作,但这个特定的查询是空的,并且对我知道其 ID 的单个 Relation 对象使用 Overpass API 感觉非常错误,不是吗?

python openstreetmap

4
推荐指数
1
解决办法
2621
查看次数

mypy 不喜欢别名 Cython 类型

我正在尝试使用 Cython 加速 PEP 484 类型的 python 脚本。我想保持一些语义和可读性。

之前,我有一个

Flags = int

def difference(f1: Flags, f2: Flags):
    return bin(f1 ^ f2).count("1")
Run Code Online (Sandbox Code Playgroud)

现在这个功能被经常调用,是轻微的重构,并使用用Cython用C编译自然的候选,但我不想失去的信息f1f2一些标志的集合。所以,我显然试过了

import cython

Flags = cython.int

def difference(f1: Flags, f2: Flags):
    return bin(f1 ^ f2).count("1")
Run Code Online (Sandbox Code Playgroud)

现在,mypy失败了,抱怨

flags.py:5: error: Variable "flags.Flags" is not valid as a type
flags.py:5: note: See https://mypy.readthedocs.io/en/latest/common_issues.html#variables-vs-type-aliases
flags.py:6: error: Unsupported left operand type for ^ (Flags?)
Run Code Online (Sandbox Code Playgroud)

而没有那个类型别名

import cython

def difference(f1: cython.int, f2: cython.int):
    return bin(f1 ^ f2).count("1")
Run Code Online (Sandbox Code Playgroud)

该模块检查得很好(除了缺少的库存根cython …

typechecking cython type-alias mypy

4
推荐指数
1
解决办法
403
查看次数

同时用numpy对角化矩阵

我有一个m × n × n numpy.ndarraym个同时对角可平方的矩阵,想numpy用来获取它们的同时特征值。

例如,如果我有

from numpy import einsum, diag, array, linalg, random
U = linalg.svd(random.random((3,3)))[2]

M = einsum(
    "ij, ajk, lk",
    U, [diag([2,2,0]), diag([1,-1,1])], U)
Run Code Online (Sandbox Code Playgroud)

两个矩阵M同时对角线化,我正在寻找一种获取数组的方法

array([[2.,  1.],
       [2., -1.],
       [0.,  1.]])
Run Code Online (Sandbox Code Playgroud)

(直到行的排列)M。是否有内置或简单的方法来实现这一目标?

python numpy eigenvalue diagonal

3
推荐指数
3
解决办法
8388
查看次数

从python中的权重数组中获取随机索引的快速方法

I regularly find myself in the position of needing a random index to an array or a list, where the probabilities of indices are not uniformly distributed, but according to certain positive weights. What's a fast way to obtain them? I know I can pass weights to numpy.random.choice as optional argument p, but the function seems quite slow, and building an arange to pass it is not ideal either. The sum of weights can be an arbitrary positive number …

python random algorithm

3
推荐指数
1
解决办法
1134
查看次数