这就是我问这个问题的原因: 去年我制作了一些C++代码来计算特定类型模型的后验概率(由贝叶斯网络描述).该模型工作得很好,其他一些人开始使用我的软件.现在我想改进我的模型.由于我已经为新模型编写了略微不同的推理算法,因此我决定使用python,因为运行时并不重要,python可以让我制作更优雅和易于管理的代码.
通常在这种情况下我会在python中搜索现有的贝叶斯网络包,但我正在使用的推理算法是我自己的,我也认为这将是一个很好的机会,可以在python中学习更多有关优秀设计的知识.
我已经为网络图(networkx)找到了一个很棒的python模块,它允许你将字典附加到每个节点和每个边缘.从本质上讲,这将让我给出节点和边缘属性.
对于特定网络及其观察数据,我需要编写一个函数来计算模型中未分配变量的可能性.
例如,在经典的"亚洲"网络(http://www.bayesserver.com/Resources/Images/AsiaNetwork.png)中,以"XRay Result"和"Dyspnea"状态着称,我需要编写一个函数计算其他变量具有某些值的可能性(根据某些模型).
这是我的编程问题: 我将尝试一些模型,将来我可能会想要尝试另一种模型.例如,一个模型看起来可能与亚洲网络完全一样.在另一个模型中,可以从"访问亚洲"到"有肺癌"添加有针对性的边缘.另一个模型可能使用原始有向图,但给定"肺结核或癌症"和"支气管炎"节点的"呼吸困难"节点的概率模型可能不同.所有这些模型都将以不同的方式计算可能性.
所有模型都会有很大的重叠; 例如,如果所有输入都为"0",则进入"或"节点的多个边将始终为"0",否则为"1".但是一些模型将具有在某个范围内采用整数值的节点,而其他模型将是布尔值.
在过去,我一直在努力解决如何编程这样的事情.我不会撒谎; 有相当数量的复制和粘贴代码,有时我需要将单个方法中的更改传播到多个文件.这次我真的想花时间以正确的方式做到这一点.
一些选择:
非常感谢你的帮助.
Update: Object oriented ideas help a lot here (each node has a designated set of predecessor nodes of a certain node subtype, and each node has a likelihood function that computes its likelihood of different outcome states given the states of the predecessor nodes, etc.). OOP FTW!
I've got a background thread that is polling a server.
When there's data, i want to handle the data on the ui thread.
If I store the hwnd of the main window.
How can I get a particular method -- static void DataHandler(void*data) to be executed on the ui thread.
我认为创建一个传递hwnd和函数指针的计时器将起作用.
但有更好的方法吗?我可以使用postmessage以某种方式调用datahandler.
另外,我不是在编写ui代码,所以我没有能力修改消息循环中的任何内容.
我是Python的新手,我一直在玩它来完成简单的任务.我有一堆CSV需要以复杂的方式操作,但我为了学习Python而将其分解为更小的任务.
现在,给定一个字符串列表,我想删除字符串中任何名称的用户定义的标题前缀.包含名称的任何字符串将仅包含名称,带有或不带标题前缀.我有以下,它有效,但它感觉不必要的复杂.是否有更多的Pythonic方法来做到这一点?谢谢!
# Return new list without title prefixes for strings in a list of strings.
def strip_titles(line, title_prefixes):
new_csv_line = []
for item in line:
for title_prefix in title_prefixes:
if item.startswith(title_prefix):
new_csv_line.append(item[len(title_prefix)+1:])
break
else:
if title_prefix == title_prefixes[len(title_prefixes)-1]:
new_csv_line.append(item)
else:
continue
return new_csv_line
if __name__ == "__main__":
test_csv_line = ['Mr. Richard Stallman', 'I like cake', 'Mrs. Margaret Thatcher', 'Jean-Claude Van Damme']
test_prefixes = ['Mr.', 'Ms.', 'Mrs.']
print strip_titles(test_csv_line, test_prefixes)
Run Code Online (Sandbox Code Playgroud) 如何修改和构建Google Fusion Tables?我希望自定义人们上传数据的方式,数据在地图上的显示方式以及搜索查询返回的结果.我知道这个问题很普遍,但我应该从哪里开始,我应该先看看什么?(不要告诉我融合表文档,因为我已经阅读过,但我仍然对如何修改代码并将我的代码与Fusion table API集成感到困惑.)
我是初学程序员,所以不要以为我什么都知道.我更喜欢非常基本和详细的指示.
给定的程序是否定义良好?
#include <stdio.h>
int main()
{
int a=2,*f1,*f2;
f1=f2=&a;
*f2+=*f2+=a+=2.5;
*f1+=*f1+=a+=2.5;
printf("\n%d %d %d\n",a,*f1,*f2);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我需要为当前位置获取时区,例如-5或+3等等.我无法这样做.我使用的是datecomponents:
// Turn the date into Integers
NSInteger year = [dateComponents year];
NSInteger month = [dateComponents month];
NSInteger day = [dateComponents day];
Run Code Online (Sandbox Code Playgroud) 这里使用静态工厂模式的奇怪错误.我错过了什么?这是代码:
class subclass<T> extends immutablestruct<T>{
private immutablestruct f;
private T x;
//constructor
<T> subclass(T y, immutablestruct<T> f ){
this.x = y; //this is there the error is
this.f = f;
}
Run Code Online (Sandbox Code Playgroud) 我的应用引擎应用中有异常处理.代码在开发服务器上完美运行.但是当我在app引擎服务器上传文件时,出现语法错误.
这是追溯:
Exception in request:
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/core/handlers/base.py", line 68, in get_response
callback, callback_args, callback_kwargs = resolver.resolve(request.path)
File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/core/urlresolvers.py", line 162, in resolve
sub_match = pattern.resolve(new_path)
File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/core/urlresolvers.py", line 118, in resolve
return self.callback, args, kwargs
File "/base/python_runtime/python_lib/versions/third_party/django-0.96/django/core/urlresolvers.py", line 125, in _get_callback
self._callback = getattr(__import__(mod_name, {}, {}, ['']), func_name)
File "/base/data/home/apps/foundationofwikipedia/1-1.345018280774164953/src/views.py", line 6, in <module>
import search_list
File "/base/data/home/apps/foundationofwikipedia/1-1.345018280774164953/src/search_list.py", line 32
except Exception as error:
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我不明白这一点,因为代码在开发服务器中工作正常.这可能是微不足道的.救命!
在我使用的几个编译器(gcc
除了各种版本之外的所有版本)中,我得到一个C99 mode
错误,例如int i
在for循环表达式中而不是在它之前声明(如果我不使用该std=c99
选项).在这里阅读之后,我理解gcc
选项-ansi
,-std=c89
并且-std=iso9899:1990
都评估为ANSI C标准,但我不明白为什么/如果我应该选择c89
标准而不是更新的标准c99
(这是我假设的最新标准).
此外,我看到iso
C语言的类型标准的多个版本,其中第一个(根据我的理解)是ANSI标准的直接端口. 是否可以肯定地说iso
将更新他们的C标准,但C的原始ANSI标准将始终是相同的?
奖金问题:
我实际上可以自己弄清楚这一点,我还没有花时间去做,所以如果有人知道他们的头顶那么这很好,否则没什么大不了的,我以后会搞清楚的:)
我有一本相当新的书The C Programming Language (ANSI)
.我的书总是显示像这样的循环:
int i;
for(i = 0; i < foo; i++)
Run Code Online (Sandbox Code Playgroud)
但很多人(他们的小指中有大多数编程才能)都会像这样编写for循环:
(int i = 0; i < foo; i++)
Run Code Online (Sandbox Code Playgroud)
如果我以第一种方式编写循环然后i
应该可以访问整个函数是正确的,但是如果我以第二种方式编写它,那么i
只能访问for循环REGARDLESS我编译的标准是什么?另一种问同样问题的方法,如果我使用c89
标准进行编译,那么i
for循环的两个for循环都可以被整个函数访问,如果我使用c99
标准进行编译,i
那么整个函数可以访问第一个for循环i
.第二个for循环只能通过for循环访问?
我习惯为iPhone编程.在那里,我会将一个按钮连接到一个动作,然后通过创建方法来连接一个方法:-(IBAction) DoStuff{…}
.然后我会为按钮创建一个插座,然后在Interface Builder中创建实际按钮.然后我将按钮连接到插座,然后通过单击Touch Up Inside旁边的圆圈将按钮连接到操作,然后将其拖到文件所有者并选择我的操作.
我是Mac的编程新手,所以我试图从performClick拖到我想要的文件,但它不会让我建立连接.我是否必须以编程方式执行此操作?如何让我的按钮触发代码中的操作?
python ×3
c ×2
cocoa ×2
objective-c ×2
ansi-c ×1
asynchronous ×1
bayesian ×1
c++ ×1
django ×1
gcc ×1
java ×1
javascript ×1
macos ×1
php ×1
winapi ×1