8个学习pandas数据分析的超级资源

转自:Top 8 resources for learning data analysis with pandas

我最近发布了一系列关于“pandas”的视频,pandas是一个流行的python数据分析,控制和可视化的库。但是对于想要学习pandas的小伙伴,我已经准备了我的推荐列表:

    1. pandas数据结构入门: 这是Greg Reda的经典pandas教程三部曲的第一部, 第二部和第三部戳这里:第二部, 第三部 。它非常易读,对入门非常有益, 而且有很多有用的例子。
    2. Pandas简介 / 用Pandas折腾数据/ Pandas作图: 三个比较长但是写的很好、很好读的Jupyter notebook笔记,出自范德堡大学的Chris Fonnesbeck写的高级统计计算教程。 如果你想深入了解Pandas的细节和强大功能,这些笔记不容错过。

    继续阅读8个学习pandas数据分析的超级资源

    PyCon 2016 你不容错误过的演讲

    小伙伴们, 一年一度的PyCon 2016盛宴错过了吗? 有没有去俄勒冈的波特兰瞻仰一下Python大神们的风采?

    如果没有, 现在是机会享受视频回播啦, 如果你会翻墙, 请戳: Youtube PyCon 2016 视频集锦 . 如果你还苦于翻墙, 请戳我们的翻墙教程 .

    如果你懒得翻墙, 请看我们为你搬到墙内的视频:

    1. PyCon 2016 大会 python创始人Guido van Rossum演讲 – Python Language
    2. pycon 2016 – Diving into Machine Learning through TensorFlow

    有机会我们会出一期Blog专门讲一下TensorFlow.

    #3 集成学习–机器学习中的群策群力 !

    背景:

    总览

    机器学习方法在生产、生活和科研中有着广泛应用,而集成学习则是机器学习的热门方向之一。
    集成学习是使用一系列学习器进行学习,以某种规则把各个学习结果进行整合,从而获得比基学习器有更好学习效果集成学习器.

    今天, 我们在分析讨论集成学习和多类集成学习的同时, 提出目前多类集成学习的一些问题, 供大家参考。

    集成学习图例

    sss

    研究现状

    理论丰富

    二类集成学习已有较成熟理论基础。多类集成理论基于二类集成。

    国际成果

    Bagging (Leo Breiman, 1994,Technical Report No. 421.)

    Boosting (Schapire, Robert E,1990 ,“The Strength of WeakLearnability”. Machine Learning (Boston, MA: Kluwer Academic Publishers)

    AdaBoost (Yoav Freund and Robert Schapire,2003)

    AdaBoost.MH, SAMME, PIBoost, GentleBoost, AdaCost

    国内成果:

    南大周志华等人提出选择性集成理论,于2001年在国际人工智能

    顶级会议IJCAI上发表。另周志华等人提出了二次学习的思想,将集成学习用作预处理,在IEEE Trans. Information Technology in Biomedicine(2003)上发表。 继续阅读#3 集成学习–机器学习中的群策群力 !

    不容错过的Python小贴士—技巧, 风格和最佳实践

    — 改编自 Python: Tips, Tricks and Idioms

     

    1. Dict的for循环中避免使用低效的iteritems() 和 keys()

    In [1]:
    a = {}
    for i in xrange(0, 1000000):
        a[i] = i
    print(type(a))
    print(len(a))
    <type 'dict'>
    1000000
    
    In [2]:
    def for_func1():
        for x in a:
            pass
    
    def for_func2():
        for x in a.keys():
            pass
    
    def for_func3():
        for x,v in a.iteritems():
            pass
    In [3]:
    import timeit
    print(timeit.timeit(for_func1, number=100))
    print(timeit.timeit(for_func2, number=100))
    print(timeit.timeit(for_func3, number=100))
    1.22459793091
    2.30621099472
    2.17837190628
    

    是不是快多了?

     

    2. for循环中获得index神器: enumerate

    In [4]:
    students = ('James', 'Andrew', 'Mark')
    In [5]:
    for i, student in enumerate(students):
        print i, student
    0 James
    1 Andrew
    2 Mark
    
    In [6]:
    students = {'James': 'male', 'Andrew':'male', 'Alice':'female'}
    In [7]:
    for i, student in enumerate(students):
        print i, student
    0 James
    1 Andrew
    2 Alice
    

    3. 想确定for循环完整结束, 用else吧…

    In [8]:
    for ele in ['a', 'b', 'c']:
        if ele == 'b':
            break
    else: # no break
        print('for循环完整结束')
    In [9]:
    for ele in ['a', 'b', 'c']:
        if ele == 'd':
            break
    else: # no break
        print('for循环完整结束')
    for循环完整结束
    

    4. 迭代工具之chain连接器

    继续阅读不容错过的Python小贴士—技巧, 风格和最佳实践

    Brief History of Machine Learning 机器学习简史

    My subjective ML timeline
    My subjective ML timeline

    Since the initial standpoint of science, technology and AI, scientists following Blaise Pascal and Von Leibniz ponder about a machine that is intellectually capable as much as humans. Famous writers like Jules

    Pascal’s machine performing subtraction and summation – 1642
    Pascal’s machine performing subtraction and summation – 1642

    Machine Learning is one of the important lanes of AI which is very spicy hot subject in the research or industry. Companies, universities devote many resources to advance their knowledge. Recent advances in the field propel very solid results for different tasks, comparable to human performance (98.98% at Traffic Signs – higher than human-).

    Here I would like to share a crude timeline of Machine Learning and sign some of the milestones by no means complete. In addition, you should add “up to my knowledge” to beginning of any argument in the text.

    First step toward prevalent ML was proposed by Hebb , in 1949, based on a neuropsychological learning formulation. It is called Hebbian Learning theory. With a simple explanation, it pursues correlations between nodes of a Recurrent Neural Network (RNN). It memorizes any commonalities on the network and serves like a memory later. Formally, the argument states that;

    Let us assume that the persistence or repetition of a reverberatory activity (or “trace”) tends to induce lasting cellular changes that add to its stability.… When an  axon  of cell  A is near enough to excite a cell  B and repeatedly or persistently takes part in firing it, some growth process or metabolic change takes place in one or both cells such that  A’s efficiency, as one of the cells firing  B, is increased.[1]

    Arthur Samuel
    Arthur Samuel

    In 1952 , Arthur Samuel at IBM, developed a program playing Checkers . The program was able to observe positions and learn a implicit model that gives better moves for the latter cases. Samuel played so many games with the program and observed that the program was able to play better in the course of time.
    继续阅读Brief History of Machine Learning 机器学习简史

    [转] Ubuntu14.04LTS安装TensorFlow

    1. Pip

    如果已经安装过pip,可以跳过这里的安装步骤。

    $ sudo apt-get install python-pip python-dev python-setuptools build-essential
    $ sudo pip install --upgrade pip
    $ sudo pip install --upgrade virtualenv

    为了检测是否安装好,可以查看pip的版本:

    $ pip --version
    pip 8.1.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)

    2. Tensorflow

    接下来,就可以按照Tensorflow Download and Setup中的Pip Installation开始安装,命令如下:

    # Ubuntu/Linux 64-bit, CPU only:
    $ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
    继续阅读[转] Ubuntu14.04LTS安装TensorFlow

    #2 大话机器学习中的贝叶斯 Bayesian

    这一期, 我们来谈一谈机器学习中的贝叶斯. 概率论中贝叶斯理论, 作为概率的一种“思考方式”, 十分通用. 当机器学习应用中, 贝叶斯的强大理论提现在多个领域, 包括超参数贝叶斯, 贝叶斯推断, 非参贝叶斯等等…

    入门

    机器学习中的贝叶斯, 首先要区分概率中频率学派和贝叶斯学派的. 网上有各种各样的解释, 其实, 我们可以从机器学习的角度去解释.

    机器学习问题可以总结为: 找到一个好的 \(\theta\) 代表一个模型, \(\theta\) 表示这个模型的所有参数, 而这个模型就是我们能够训练出的最好模型(至少我们认为是最好的).  什么是最好的模型? 假设有未知数据集 \(X_{unknown}\) , 如果 \(P\left(X_{unknown}\middle|\theta\right) = 1\) , 那么这个模型就是最好的. 当然这是不可能的, 也许只有上帝才能对所有的未知100%准确预测. 但我们一定是希望 \(P\left(X_{unknown}\middle|\theta\right)\) 越大越好, 趋向于1.

    如何做到使得 \(P\left(X_{unknown}\middle|\theta\right)\) 越大越好 ? 这就引出了概率论中的两大学派: 传说中的”频率学派”和”贝叶斯学派”. 两大学派区别在哪里? 看下面这个公式:

    \(P\left(\theta\middle|X_{train}\right) = \frac{P\left(X_{train}\middle|\theta\right)P\left( \theta\right)}{P\left(X_{train}\right)} \)

    没错! 这就是大名鼎鼎的贝叶斯公式 ! 机器学习中, \( X_{train} \) 是真实的训练数据或者抽样数据 . \(P\left(\theta\middle|X_{train}\right)\) 是后验概率(posterior)分布 . \(P\left(X_{train}\middle|\theta\right)\)是似然概率(likelihood).  \( P\left( \theta\right) \)是先验概率分布(prior). \(P\left(X_{train}\right)\)是归一化”证据”(evidence)因子.

    “频率学派”认为, 后验概率和先验概率都是不存在的, 模型 \(\theta\) 不论简单复杂, 参数已经是上帝固定好了的, 只要根据大数定理, 当训练数据足够大, 我们就能找到那个最好的 \(\theta\) . 于是公式变为:

    \( P\left(X_{train}\right) = P\left(X_{train}\middle|\theta\right) \)

    无论有没有 \(\theta\) , 抽样数据\( X_{train} \)出现的概率都是一样的, 因为任何数据都是从上帝指定的模型中生成的. 于是我们找到 \(\theta\) 的任务就很简单, 最大化 \(P\left(X_{train}\middle|\theta\right)\) 似然概率就行了. 数据量越大, 模型拟合度越高, 我们越相信得到的 \(\theta\) 越接近上帝指定的那个 \(\theta\). 所以”频率学派”预测投硬币正反的概率的方法就是, 投10000次硬币吧, 看看正面出现多少次. 这种基于统计的预测有很多缺点, 首先它指定了一个固定概率, 如果上帝指定的模型不是固定的呢? 另外, 如果数据量不足够大, 预测会不会非常不准确? 当数据维数增大时, 实际计算量也会变得非常大.

    “贝叶斯学派”认为, 人类的知识是有限的, 我们不知道上帝的安排, 就先假设一个先验(我们已有的知识), 再根据训练数据或抽样数据, 去找到后验分布, 就能知道模型最可能是个什么样子. 继续阅读#2 大话机器学习中的贝叶斯 Bayesian