我正在寻找一种在python中存储和使用条件概率的好方法.
我正在考虑使用pandas
数据帧.如果某些条件概率X
的P(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)
并给予的边缘概率P1
和P2
系列作为
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 …
在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=0
在skiprows
应用之后进行测量,因此它也没有帮助.)
如何从第0行中带有标题的csv文件中获取最后10000行,最好不知道行中文件的长度?
我正在尝试在我的网络中使用 CTC 损失函数,但不太明白何时将“空白”标签作为标签提供。
我在Molchanov所描述的手势识别中使用它,但让我感到困惑的是还有一个“无手势”。
在 tensorflow 文档中,描述了
输入 Tensor 的最里面的维度大小 num_classes 表示 num_labels + 1 个类,其中 num_labels 是真实标签的数量,最大值(num_classes - 1)为空白标签保留。
如果我现在使用“空白”标签来表示没有手势,则由于错误,我的训练受到限制
在空标签后面看到一个非空标签(索引 >= num_classes - 1)
我假设空标签与空白标签相同。
问题是,当我想提供从没有手势(映射到空标签)然后有手势的数据时,我得到了这个错误。我可以通过在现有标签旁边添加另外两个标签来避免它,一个用于“无手势”,另一个用于“空白标签/空标签”。然后我只提供“无手势”标签,但从不提供“空白”标签,但这似乎不太正确。
所以我的问题是,我应该将“空白/空”标签用于什么?
我可以想象在语言处理中,您通常会使用句子结尾点作为“空”标签吗?但是没有结束手势,因为它是一个连续的流。
谢谢
我需要编辑一个凌乱的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) 我刚刚接受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) 我有一个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以数字形式获得马尔可夫链的静态状态作为稀疏矩阵?如果有办法获得详尽的清单(也可能是几乎静止的状态),那是值得赞赏的,但并非必要.
我有一个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 感觉非常错误,不是吗?
我正在尝试使用 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编译自然的候选,但我不想失去的信息f1
和f2
一些标志的集合。所以,我显然试过了
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 …
我有一个m × n × n numpy.ndarray
的m个同时对角可平方的矩阵,想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
。是否有内置或简单的方法来实现这一目标?
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 ×7
pandas ×3
algorithm ×1
csv ×1
ctc ×1
cython ×1
diagonal ×1
eigenvalue ×1
git-apply ×1
git-diff ×1
mypy ×1
numpy ×1
probability ×1
random ×1
scipy ×1
statistics ×1
tail ×1
tensorflow ×1
type-alias ×1
typechecking ×1
word-diff ×1