每月档案: 2013年六月

蟒蛇中真正简单的多处理–然后链接到MongoDB

蟒蛇中的多处理非常简单!您可以使用 泳池()  class.

1
2
3
4
5
6
7
8
9
10
11
多处理 进口 泳池
 
定义 add_one(至_what):
    "A trivial function 至 在crement an 整型eger"
    返回 至_what + 1
 
池子 = 泳池(流程=4) #spawn 4个进程
数字 = [1,2,3,4] #这是我们的测试数据
结果 = 池子.地图(add_one,数字) #发送函数和每个数字1
池子.() #杀死过程
打印 结果 #将返回[2,3,4,5]

在这里,我们生成了4个进程,并使用map()函数向每个进程发送曾夫人论坛数字。

这是曾夫人论坛简单的示例,但是当每个进程执行诸如建立远程连接之类的操作时,它会变得更加强大:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
多处理 进口 泳池
pymongo 进口 连接
 
定义 多少(server_number):
    “返回集合中有多少个文档”
    c = 连接(“ 192.168.0。” + server_number) #连接到远程数据库
    返回 c.我的数据库.我的收藏.计数()
 
池子 = 泳池(流程=4)
伺服器 = [1,2,3,4]
结果 = 池子.地图(多少,伺服器)
池子.()
 
打印 “您在所有MongoDB服务器上都有{0}个文档!”.格式((结果))

用Python简化Markov Transition Matrix平衡

作为马尔可夫模型的复习,我’ve been watching 斯科特·E·佩奇教授’s 优秀的 YouTube上的视频。他用手完成所有计算– 和 now I’已经编写了一些代码以更快地执行它。

在视频2中,我们给了曾夫人论坛假设学生在教室中从警觉到无聊的转换矩阵:

提醒:t 无聊:t
提醒:t + 1  0.8  0.25
无聊:t + 1  0.2  0.75

可以在Python中表示为:

1
2
矩阵  = [[0.8, 0.25],
           [0.2, 0.75]]

学生的向量又是曾夫人论坛简单的列表:

1
students_vector = [1,0]

让’s计算曾夫人论坛阶段:

1
2
3
4
5
6
7
8
9
定义 markov_stage(矩阵, 向量):
    “计算马尔可夫过程的一次迭代”
    v1 = [] #空白列表存储下曾夫人论坛阶段
    对于 x Xrange((矩阵)): #对于矩阵的每一行
        #将行中的每个元素乘以vector和sum的每个元素
        #“ 压缩”功能非常适合
        v1.附加(([一种*b 对于 a,b 压缩(矩阵[x],向量)]))
    打印 v1
    返回 v1

调用产生:

1
2
3
4
5
>>> student_vector = markov_stage(student_vector)
[0.8, 0.2]
>>>
>>> student_vector = markov_stage(student_vector)
[0.6900000000000002, 0.31000000000000005]

或者,让’尝试通过循环找到平衡状态  markov_stage 直到值基本上停止变化(达到一定的小数位数精度)为止:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
定义 马尔科夫均衡(矩阵, 向量, acc):
    “试图找到马尔可夫过程的平衡。
      接受矩阵[i,j],向量[v1,v2,vx ..]和
      精确到任意小数点”
 
    #“它” =迭代
    #我们必须至少执行2次迭代才能判断
    #看起来是否稳定(基本上只是比较两者)
    它的 = [markov_stage(矩阵, 向量)] #输入第一次迭代
    它的.附加(markov_stage(矩阵, 它的[-1])) #追加另曾夫人论坛
 
    #now循环,条件是四舍五入时,向量不相同
    #和以前一样
    ([回合(x,acc) 对于 x 它的[-1]] != [回合(x,acc) 对于 x 它的[-2]]):
        它的.附加(markov_stage(矩阵, 它的[-1])) #我们可以调用该函数
                                                  #从以前
 
    结果 = “马尔可夫过程经过{0}个阶段才能达到{1} d.p.平衡”
    打印 结果.格式((它的), acc) #输出曾夫人论坛不错的结果

产生的精度设置为小数点后2位:

1
2
3
4
5
6
7
8
9
10
>>> 马尔科夫均衡(矩阵,student_vector,2)
[0.8, 0.2]
[0.6900000000000002, 0.31000000000000005]
[0.6295000000000002, 0.37050000000000005]
[0.5962250000000002, 0.4037750000000001]
[0.5779237500000002, 0.42207625000000015]
[0.5678580625000003, 0.4321419375000002]
[0.5623219343750003, 0.4376780656250002]
[0.5592770639062503, 0.44072293609375024]
马可夫 处理 8 阶段 达到 2 d.p. 平衡

我可能本可以用Numpy编写的–它将使用较少的内存(并且可能具有用于向量矩阵行乘法的内置函数)来更快地进行计算,但是这样做很有趣。一世’尝试扩展 马尔科夫均衡  给出一些更详细的统计信息,例如“churn”正如佩奇教授所提到的。

蟒蛇中带有Lambda的自定义DefaultDicts,用于创建详细的频率表或其他任何内容

在Python中,有字典数据类型。这基本上是曾夫人论坛查询表:

1
2
3
d = {}
d['你好'] = '你好' #曾夫人论坛字符串
d[“世界”] = ['蒙德', u“世界”] #字符串列表

让’尝试尽管为单词创建频率表:

1
2
3
4
5
6
7
8
定义 make_frequency_table(物品清单):
     = {}
    对于 项目 物品清单:
        尝试:
            [项目] + = 1
        KeyError:
            [项目] = 1
    返回

这个错误的代码最终将返回包含以下内容的字典:

事情: 多少_times_it_occurred

但是,如果密钥不存在,我们必须执行try-except语句’不存在。 Defaultdicts通过返回空白条目(0,空字符串,空列表)来摆脱此阶段,这真是太棒了!

1
2
3
4
5
6
7
馆藏 进口 定义aultdict
 
定义 make_frequency_table(物品清单):
     = 定义aultdict(整型)
    对于 项目 物品清单:
        [项目] + = 1
    返回

如果钥匙没有’t已经存在于我们的查询表中,则defaultdict返回曾夫人论坛<int>写下新的价值!这个 定义aultdict(整型)  可以替换为 定义aultdict(清单)  or any data type.

现在到了帖子的症结!我们可以用lambda代替此变量类型,如下所示:

1
= 定义aultdict(拉姆达: {'频率':0, 'last_seen_at':0 })

现在,当钥匙没有’如果不存在,字典将在其中创建曾夫人论坛新字典!因此,我们可以将另曾夫人论坛指标引入分析中:

1
2
3
4
5
6
7
8
馆藏 进口 定义aultdict
 
定义 make_frequency_table(物品清单):
     = 定义aultdict(拉姆达: {'频率':0, 'last_seen_at':0 })
    对于 位置, 项目 枚举(物品清单):
        [项目]['频率'] + = 1
        [项目]['last_seen_at'] = 位置
    返回

现在,我们的函数将返回曾夫人论坛字典,该字典不仅使您知道某件事发生了多少次,而且还知道了它最后一次发生的时间!使用以下数据进行尝试:

1
资料集 = [1,1,1,1,2,2,2,2,2,5,5,5,1,4,5,6,8,9]

 

两项快速修复使您的网络浏览更加匿名

使浏览更加安全的两种非常简单的方法是在Google Chrome中安装以下两个扩展程序:

  • 幽灵 –阻止跟踪脚本 
  • AdBlock – blocks advertising

为什么?

  • 这些阻止(通常是第三方)组件使公司可以记录您的浏览数据。看看 串通扩展 看看谁知道。 这试图阻止公司轻松地做类似的事情 (据称)机票价格上涨 and 酒店价格 根据您的浏览历史记录。
  • 曾夫人论坛不错的副作用是,由于页面加载的第三方组件较少,因此页面加载速度可能更快。通常,网站会在所有其他页面元素之前将这些组件添加到页面的开头,以确保优先于实际页面内容加载广告。 

注意事项:

  • 你仍然可以 容易 monitored 上 an ISP level, 通过 a 至olbar or if the website is selling off 整型ernally logged data.
  • 使用这些阻止组件可能“break”通过删除必要的页面格式样式表和脚本来删除某些网站。
  • 阻止来自您喜欢的网站的广告可能会减少其广告收入,并且不会因其流量/工作量而获得回报。 

伪善:

  • 我用“statcounter”在这个网站上,我可以看到有多少浏览量。 StatCounter还将其所有客户数据汇总到曾夫人论坛 very 整型eresting 上市 全球统计页面。我认为,它比Google Analytics(分析)更有用和更值得信赖。您可以屏蔽它’d like. 
  • 是的,我意识到作为一名数据科学家,他处理的数据与这些跟踪脚本收集的数据没有什么不同,’这样可以减少我要分析的数据量并使自己失业。但是,出于道德上的考虑,为了我自己的内心平静,发布可以选择退出的事实,并谴责诸如 这荒谬的文章.

在Python中读取非常大的文件

有很多方法可以读取python中的文件,这有点不直观并且违反了 PEP-8准则。但是,这是最好的:

蟒蛇
1
2
3
打开(“ my_large_file.txt”, “ r”) f:
    对于 线 f:
        ( 这里)

它创建曾夫人论坛生成器,一次只将一行读入内存。一世’我们使用此代码轻松处理了多个千兆字节的文件。使用   很有用,因为它会在紧跟其后的代码结束后自动关闭文件。

人们经常会犯以下错误:

  • 对于 线 f.()  –这将立即加载整个文件并按字符读取
  • 对于 线 f.阅读线()  – this loads the entire file 整型o a 清单 在 memory