- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试用 Python 实现一个数学公式,我是这方面的初学者,所以请和我一起工作。
我有两个 3 列制表符分隔的文件:
例如:输入A:
abandonment-n about-bring-v 32.5890
abandonment-n about-complaint-n 5.5112
abandonment-n about-concern-n 10.6714
abandonment-n among-1-crowd-n 11.4496
输入B:
aardvark-n about-fact-n 7.4328
aardvark-n about-information-n 6.5145
aardvark-n about-know-v 6.4239
aardvark-n among-1-crowd-n 9.9085
输入B:
我尝试实现的公式应该将这两个文件都视为输入。
数学上,公式如下:
如 this paper 中所述
其中,f = 特征,Fx = 特征向量,w = 特征权重。
这是我到目前为止想出的:
将两个输入作为字典导入,其中 [feature:weight]。
假设 inputA = x 和 inputB = y。
那么,我为公式设计的语法如下:
score = sum(i for i in x if i in y) * w(i) / sum(i for i in x)* w(i)
在这种情况下,*w(i)
应该乘以相应特征的权重。
谁能帮我解决 Python 中的数学语法问题(即根据我尝试转换的公式是否正确),因为这是我第一次尝试它?
提前致谢
最佳答案
接近,但不完全是。你想要这样的东西:
from __future__ import division # this must be the very first import statement
score = sum(i*w(i) for i in x if i in y) / sum(i * w(i) for i in x)
基本上,在这两种情况下,您都将 w(i)
排除在总和之外,这不是公式的作用;此外,w(i)
在总和之外毫无意义,因为 i
只存在于总和中。
检查一个元素是否在列表中可能是昂贵的。你可以做得更好:
from __future__ import division # this must be the very first import statement
xx = set(x)
yy = set(y)
score = sum(i*w(i) for i in xx & yy) / sum(i * w(i) for i in x)
其中 xx & yy
是 xx.intersection(yy)
的 Python 简写。这假设 x
和 y
从不包含重复元素,但考虑到公式中使用的符号,这似乎是一个安全的假设。
关于python - Python 中数学公式的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19656312/
我得到了以下 Excel 公式来计算法国系统贷款利息: =+G15*B15/(1-(1+G15)^(-H15)) 地点: G15 = 1.33% B15 = importe H15 = plazo 由
我必须构建一个像这样的序列 (amount-(amount/36*1)) + (amount-(amount/36*1 + amount-amount/36*2)) + (amount-(amount
在R语言的绘图函数中,如果文本参数是合法的R语言表达式,那么这个表达式就被用Tex类似的规则进行文本格式化。 y <- function(x) (exp(-(x^2)/2))/sqrt(2
我喜欢转换旧的 BASIC 游戏——我遇到了一个有这个奇怪公式的游戏。目前我正在用 Pascal 编写,但我可以用任何语言编写。翻遍代码后,我找不到这个 var 是否在使用,但仍然想知道当时 BASI
我需要在 C 中实现这个数学公式: 我写了一段代码: #include int c(int n, int k) { if(k == 0) return n; if(c
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
是否有任何常规范式来表示可以被计算机读取的数学公式? 我正在研究一些数学问题,并有某种 TDD 方法来解决它。每次我陷入一个证明(或者只是我还没有证明,但是对结果应该是什么的一些直觉)时,我倾向于编写
我正在尝试用 C 语言实现一个数学公式来计算特定 Runescape 级别所需的 XP,但我没有得到正确的输出。 1 级给出“75”XP,99 级给出“11059837”。我的实现有什么问题吗?我想不
我想在绘图中添加一个包含 Latex 公式的 geom_text(),以描述 2 个矩阵中每个值的平均百分比: library(latex2exp) library(ggplot2) library(
我是一名优秀的程序员,十分优秀!