2016 Week 46 Review

编程学习方面,不完全看完了《利用 Python 进行数据分析》,感觉光看没有进行练习的话很难一次记住那么多用法,所以这本书最好还是最 NumPy、Pandas 这几个库用过一段时间之后再看。之后开始看《集体智慧编程》,目前才看了两章,内容写得还是挺好的,不过很多代码不是很规范(比如命名、缩进什么的),还有就是可能书已经比较老了,很多例子中使用的 API 已经挂掉了,所以不得不自己找数据集下来测试。不知道别人看书是怎样的,反正我看书不把书中每个例子测试一下就感觉书好像没看过,所以看书的速度还是挺慢的,昨天和今天花了两天的时间把第2章的东西总结了一下,写了篇博客。

朋友说我现在才开始学习机器学习并且想要以此为以后的职业简直在玩火(并且还不打算读研究生的情况下),说得也是,毕竟现在已经大三了,按照道理,应该刷刷题准备下学期的实习面试的。不过既然跳进这个火坑里了,就不能半途而废,至少先学习几个月看看情况再变更计划。如果实在不行,到时候再去做 Web 开发还是可以的。

前几天在登录 iPad 上的 Evernote 的时候,突然提示我登录的设备超过了两台,需要开通会员(之前开通过一年的会员,后来没有续费),总觉得为了这个再开通会员有点不值得,并且之前 Evernote 在 Mac 上使用就有很多诟病,所以打算换 OneNote 了。更新了一下 Mac 上 OneNote,发现竟然支持手写了,果断用用用。不过 OneNote 最开始的字体问题到现在还没有解决……

下周五就可以玩上 Pokemon Moon 了,激动不已,虽然破解党们早已二周目通关……

另外,发现番茄工作法挺好用的,现在也没有什么课了,每天就直接到图书馆里来,打开番茄钟,然后无脑干活就好了。

2016/11/13 posted in  Life

2016 Week 45 Review

已经第 45 周了啊,再过 10 周 2016 年就要过去了。今天大连下起了雪,似乎冬天就这么不知不觉得来了,记得上一次下大雪的时候去了一次海边,可惜 Photos 在一次事故中数据全部丢失了。作为一个南方人当初决定来北方的时候其实是对雪有一种很强烈的期待的,不过来了大连之后发现其实这里也不怎么下雪,偶尔下一次的雪也不是很大,这在一定程度上有点令人失望。

上周在读《挪威的森林》这本书,第一次读的时候大概是在初中的时候,当时没看懂里面写的是什么,纯属当做一本小黄书来读的。这次读的时候依旧有好多东西没明白。有一天听着 Thirteen Senses 的专辑猛地读到了 50%,感觉特别压抑,说不出来的压抑,所以就暂时放下了,顺便把翻拍的电影看了一遍,说实话,电影拍得不是很好,剧情的跳跃度有些大了,让没读过小说的人看得莫名其妙。

学习方面感觉上周特别颓废,什么事情都不相干,每天就窝在宿舍里,果然宿舍是一个让人堕落的地方,甚至连门都不想出去了,吃饭全部叫外卖。还好今天周一强迫自己来了图书馆,希望能做些东西吧。

这学期的课程基本结束了,免修了两门课,除了上机可能会去一下,其他时间都是空余的了,有大块的时间可以用来做自己想要做额事情了。

看了一眼窗外,雪似乎已经停了,耳机里放着坂本龙一的「A Flower Is Not A Flower」。

2016/11/7 posted in  Life

2016 Week 44 Review

  • Coding - 本周主要在看《利用 Python 进行数据分析》,大概看了有一半的样子,下周应该能够结束掉。接下来的打算可能是先不看书,而是把What should I learn in data science in 100 hours?这个问题下面的回答内容实践一遍。
  • Japanese - 日语已经落下好久了,大概还有1个月的时间考试,虽然只是报了一个三级试试水,但是不去考试总感觉白费报名费了,当初以为交了钱就会好好学,然而想多了。另外,日语现在并不是刚需的语言,之前决定学习是为了玩游戏,现在基本想玩的游戏都出了中文,《怪物猎人》玩了几个小时,发现不适合我这种手残。所以到底要不要继续学习日语还有待商榷……
  • English - 英语自从到了大学以来就没有刻意地学过,除了准备托福的那段时间背了一些单词,然后其他都是直接用,导致了现在听说读写水平参差不齐,听力和阅读还算可以(至少能听懂和读懂技术相关的内容),口语基本就是没有说过,写作也没怎么练过,写一些基本的句子也要查语法(靠语感来写作结果就是一堆语法错……)。相比较日语来说,英语还算一个刚需的技能,尤其是写作和口语部分,还需要加强训练。接下来的一段时间内也会把英语学习提到日程上来,暂时的计划还没有想好,先加到 TODO 中。
  • Reading - 发现这学期都没有读过几本书,上学期还能保持基本每周都读一本书,现在 Kindle 都吃灰了。下周先把《挪威的森林》这本书看完吧……
  • Game - 等《精灵宝可梦 日月》发售,还有20天的样子,没有预定,直接买现货或者买下载版吧。
2016/10/30 posted in  Life

搭建 Python 科学计算环境

最近在看《Python for Data Analysis》(利用 Python 进行数据分析)这本书,贴一点笔记,这一篇是关于环境搭建的。另外吐槽一下,书中还是有不少错误的,语法错误就发现了好多处,大概读完了之后会整理出一份勘误表出来,可能是因为写书的时候是 14 年,两年过去了,pandas 库也有了一些变化。

安装虚拟环境

不想把系统的 python 库搞得乱乱的(其实已经很乱了),所以还是建一个独立虚拟环境专门来做科学计算吧。具体的方法我在virtualenv 相关笔记这篇博客中已经详细写了,建议将启动虚拟环境的命令添加到终端的配置文件中去(使用alias),这样就避免每次一打开就输入一长串命令了。

因为科学计算社区的一些库还是基于 Python 2.x 版本的,所以这里我们使用的 Python 版本为 2.7。

然后使用以下命令一键安装所需要的库:

sudo pip install numpy pandas matplotlib jupyter scikit-learn

安装不上的请检查是不是需要翻墙。

IPython

熟悉 Python 的同学应该对这个解释器不陌生,自带的 Python 解释器实在是太弱了。它与传统的“edit-compile-run”(编辑-编译-运行)方式的区别在于,它鼓励使用“execute-explore”(执行-探索),所以特别适合用在计算和数据分析领域,可以方便得使用「试错法」和「迭代法」进行开发。这里主要介绍它基于 Web 的交互式笔记本功能(命令行中大同小异)。

开启 IPython Notebook

使用以下命令来打开 IPython Notebook:

(ENV2.7)$ jupyter notebook

这样 server 就启动了,浏览器会自动打开一个目录树。

Note:记住在启动了虚拟环境的状态下使用这条命令,要不然就会使用系统的 IPython 版本来运行。

然后我们新建一个 IPython Notebook 用作演示:

14776647413275

In [1] 中的命令是为了能让我们直接在 IPython Notebook 中集成显示 matplotlib 画的图片,所以如果是用作科学计算的话,首先先执行以下这条命令再说。

内省

在变量的前面或后面加上一个 ? 就可以将有关该对象的一些通用信息显示出来。

14776649884990

基本上什么都能看。

%run 命令

使用 %run 可以运行本地的 Python 脚本,并可以在 IPython 中访问脚本中定义的所有变量。

如果想要脚本能够访问 IPython 中的命名空间,可以使用 %run -i 命令。

测试代码的执行时间

使用 %time%timeit 可以用来测试代码的执行时间。

14776653395450

Example

下面使用一个具体的例子来演示 IPython Notebook 的使用。

使用到的数据可以在Beyond the Top 1000 Names下载到,这是一份包含1880-2015年每年出生婴儿姓名出现次数的数据表。

由于该数据按年份被分割成了好多文件,所以第一步我们需要把所有数据组装到一个 DataFrame 中去。

14776659007521

不知道这些 Python 代码没关系,因为这里只是用来演示 IPython Notebook。

然后我们按照性别和年度统计总出生数:

14776660937109

然后绘制出表格:

14776661445090

2016/10/28 posted in  Python

2016 Week 42-43 Review

连续两周没写周总结了,41周的周总结因为涉及到一些私事所以还是删掉了(当然感兴趣的还是可以在我的 repo 里面找到之前的 commit)。

过去两周还是发生了很多事情的,一件一件来说吧。

10.15-10.17 去上海参加了 HACKxFDU,这也是第一次参加 Hackathon,最后抱了大腿队友水到了一个微软的万物互联奖,不过奖品就两套物联网套件,根本不够四个人分(╯°□°)╯。在上海大概玩了一个礼拜,去了趟迪士尼(人多,体验差,项目无聊)就回学校了。然后上一周基本上没做什么事情,一是要准备大创项目的中期检查答辩,二是要复习软件工程的考试。

最近做出比较重要的一个决定就是确定了以后将要从业的方向,以前基本上都是按照兴趣来学,什么都做过一些,但都不是很深入,也没有想好以后工作想要干嘛。最近不知道怎么突然对数据挖掘和机器学习产生兴趣了,正好之前做的一个大创项目也是和这个有关的(虽然项目内容都是在划水),所以还算对这方面有点经验。

但是要解决的问题还是有很多的,比如说如何找到工作的问题,搜索了一下,机器学习/数据挖掘的岗位都需要有研究生学历,作为一个辣鸡学校的本科生,能不能找到工作就是一个问题。跟一个朋友说了一下想法,他说我在玩火……当然,实际上这方面倒不是太担心,如果有普通研究生能力的话找到一个工作还是不难的。

另外一个就是需要系统得学习这一套东西了,包括微积分、线性代数、概率论、统计学、机器学习,大部分内容是数学,现在有点后悔大一大二的时候没有好好学数学了,高数那些课基本就是划水过去的,欠下来的债还要还的。

现在基本的计划就是:

  1. 看《利用 Python 进行数据分析》,把 Python 的几个科学计算库用熟练;
  2. 复习一下数学的知识,看《程序员的数学》系列的三本书,有基础的话应该挺快就能看完;
  3. 看李航的《统计学习方法》;
  4. 看《集体智慧编程》;
  5. 看周志华的《机器学习》;

上面就是初步的入门计划,应该看完了对数据挖掘/机器学习有一个基本的了解了,可以顺便去 Kaggle 上打打比赛,虽然不一定能够能拿到好名次,积累一些经验总是好的。另外 Ng 的课和台大的《机器学习基石》也可以看一下。

其他一些资源:

这周和下周的计划就是把《利用 Python 进行数据分析》这本书看完。

ps:买了《文明6》,感觉时间还是挺紧的(╯▽╰)

2016/10/26 posted in  Life