Dinever's Blog


Accidentally on purpose


写给Django开发者看的速查卡

家住突尼斯的外国友人Oussema Cherni最近总结了一份Django速查卡,简单看了一下,总结得很不错,主要涉及TemplateFormModelModelAdmin的内容:

Django速查卡

继续阅读 →

如何生成泊松过程中的随机时间

本文译自Jeff Preshing的博客

什么是泊松过程

每当我们需要模拟在随机时间发生的一串独立事件,且从宏观来看,这些事件有着一定的平均发生速率时,我们就要用到泊松过程了。

比如说,USGS估算每年世界上都会发生约13000起强度四级以上的地震。这些地震发生的时间分散在一整年中,这就是泊松过程的一个实例。

在统计学中,前人已经为我们建立好了很多用来为泊松过程建模的方程与公式。接下来我将在文章中展示其中的一种,并通过编写一个仿真程序来演示它。

继续阅读 →

Python之lambda, filter, map, reduce

前段时间去搜狐面试,整个面试过程非常愉快,不过中间前辈问了我关于filter函数的问题,由于自己之前也没玩过这几个函数所以没答上来,回来之后赶紧总结了一下,发到这里。

Lambda操作符

lambda操作符用来在Python中创建匿名函数,匿名函数可以理解为一种不带函数名且用后即焚的函数,由于其没有函数名,我们只能在创建它的地方使用它,lambda操作符经常被用来与filter()map()reduce()三个函数配合使用。

一个lambda操作符的简单例子如下:

>>> g = lambda x, y: x + y
>>> g(1, 2)
3

需要注意的是,用lambda操作符声明的函数是没有return语句的,因为它总是会返回冒号后面的语句。

>>> def func(x):
...     return x*2
...
>>> print func(8)
16
>>> lambda_func = lambda x: x**2
>>> print lambda_func(8)
16

来个更酷一点的例子:

>>> def add_together(n):
...    return lambda x: x + n
...
>>> a = add_together(5)
>>> b = add_together(6)
>>> print a(10), b(10)
15 16
>>>
>>>print add_together(15)(16)
31

上面的例子中我们创建了一个add_together函数,并在函数中创建并返回了一个匿名函数,这样一来我们便可以创建多个add_together函数,他们在使用时也互不影响。

继续阅读 →

什么是回调函数

初学编程,尤其是以Javascript作为入门语言的人,一定会被回调这一特性困扰许久,基于Javscript是异步编程语言这一状况,回调在Javascript中简直无处不在。当然,回调函数并不是Javascript的专利,只是通过js,我们更容易理解为什么需要回调函数。

这篇文章中,我试图以最简单的语言来讲解什么是回调函数。

为什么很多人无法理解回调

我个人认为很多初学者无法理解回调,原因之一就是回调这个名字取得太抽象了,很难通过其字面意思理解其内在含义。

为什么回调这个名字抽象呢?因为它的英文名Callback就取得很抽象,但是没办法,我也想不出更好的名字。

我们举个例子:

小明和亲朋好友若干人去吃火锅,一进门,服务员告诉小明今天顾客太多了,估计得等等,于是小明给服务员登记了个电话号码,回头(Back)空出位置了,服务员会给小明打电话(Call)。

这就是回调,也就是Callback,我在例子中注明了为什么这一特性被称为Callback。

再来一个Stackoverflow上的经典例子:

Guy 1 to Guy 2: hey dude I wanna do something when a user clicks in there, call me back when that happens alright?

Guy 2 calls back Guy 1 when a user clicks here.

看完这两个例子,一般会对回调有一个初步的概念,接下来让我们用编程语言实现。

继续阅读 →

什么是模式识别

这篇文章翻译自宾夕法尼亚州立大学的Pattern Recognition课程讲义,同时也是我的一次模式识别课后作业。

figure1

通俗来讲,模式就是由一个实体中的多个实例形成的公分母。比如,如果我们有一组指纹图案,那么这些指纹的共同点就组成了一个指纹模式。John Doe的左手食指指纹图案组成了"John的左手食指模式"(见图一,图一展示了一组相同食指的指纹图案,图二展示了一组任意不同手指的指纹图案)。 因此,模式可以是一张指纹图案、一个手写草体字、一张人脸、一段语音信号、一个条形码、或是互联网上的一个网页。(见图三)。 通常情况下,我们可以通过不同模式之间共有的那些属性将他们划分为不同的类别,得到的类别也是一个模式,这种模式经常被称为模式类。模式识别是一种观察(感知)周围环境、尝试通过事物背景(如动物来自草原、森林、天空、海洋等)区分出同类事物,并对模式或模式类作出一个合理抉择的科学。

figure2

导言

从小时候起,我们就一直在观察身边事物(如玩具、花朵、宠物、面孔)的模式。对模式的理解也会因为掌握了语言而加强。大多数孩子在5岁时就可以辨认出字母与数字了。无论是小号或大号字母、手写或机打字母、不同颜色不同方向字母或是部分遮挡的字母,都可以被大部分孩子轻易辨认出来。我们一直将这种能力视作理所应当,直到有一天我们突然发现我们需要面对如何让教学计算机识别出字母的问题。尽管已经经过了五十余年的努力,通用机模式识别的设计依然是一个可望不可及的目标。

figure3

虽然我们并不清楚自己到底是怎么识别模式的,但在大多数情况下,人类依然是模式识别的最佳工具。Ross(1998)曾强调过诺贝尔奖获得者Herbert Simon的核心发现。Herbert Simon曾发现模式识别在人类制定决策时是至关重要的:“你掌握的模式越多,你制定出的决策就更可靠”。

对于人工智能的追随者来说,这是一个令人欣喜的消息。因为我们完全可以教会计算机进行模式识别。事实上,目前很多优秀的计算机程序都是在某种程度上基于模式识别的,例如帮助银行为信用卡申请者做出评分的程序、帮助医生诊断患者病情的程序或是协助飞行员降落飞机的程序。

我将详细描述模式识别中的领域,并探讨一些模式分类中更受限制的问题,其次我将介绍自动模式识别系统。具体而言,我将描述一些用来概括的方法,比如:如何才能得到可以适用于新的观察的决策结果。其次,我们也将探讨一些在人类日常生活中充当重要角色的学习模式的某些方面。最后将介绍一些已经广泛应用在社会各界的应用程序。

继续阅读 →


About

丁培轩,北京邮电大学在读本科生,将于2014年毕业。我记性有时不太好,所以这里会记录一些我玩电脑时遇到的问题,希望对你也有所帮助。本站点所有内容未经声明则采用知识共享署名-非商业使用-相同方式共享 3.0 Unported 许可协议进行许可。




Rencent Comments