。。。本来文章都快写好了,360莫名其妙退出,还没有自动保存为草稿,又敲一遍。
最近没怎么整理笔记,一直在看一个时序数据库的东西,C++工程难啃,头疼的一笔。
其实感觉我们的编码和外国人相比还是有很多困难的,比如匈牙利命名法的简写,包括一些注释习惯,对于不是native speaker来说,都有不小的障碍。比如下面这段注释。
// Adds a value to a bit string. `bitsInValue` specifies the number
// of least significant bits that will be added to the bit
// string. The bits from `value` will be added from the most
// significant bit to the least significant bit.
static void addValueToBitString(
uint64_t value,
uint64_t bitsInValue,
folly::fbstring& bitString,
uint32_t& numBits);
将value值添加到位串,`bitsInValue`指定了添加到位串的最低有效位的位数。‘value’中的bits将从最高有效位(更准确来说应该是MSB 最高有效字节)至最低有效位(LSB 最低有效字节)逐步被添加到bitString。可以看到在原文的注释中,和我翻译的不太一样,是因为我是在看过源码的基础上翻译过来的。这意味着一个初次看注释的人基本上不知道这个注释在说什么。。艰难困苦,玉汝于成。愿与诸君共勉。
另外在看吴恩达老师的机器学习,同步在学ORelly的动物书,《Python机器学习基础教程》。这本书真心犀利,干货满满,同时由浅入深,层次也非常清晰,值得学习。只是有以下几点需要注意:
1.书里面有不少画图和数据科学包的api反复用到,下篇文章整理下,不然忘了又需要去查。
2.书中不少代码是重复的,只是修改了参数以期读者自行对比深入理解,足够熟练的话没必要那样,直接zip和subplots叠加复用就可以了。注意:zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。可迭代对象是为了优化内存使用。如果只有一个参数,不要使用zip,直接元组即可。例如用for i in ('a', 'b', 'c'),而不是使用for i in zip(['a', 'b', 'c']),后者返回的是[('a',), ('b',),('c',)]。
3.书中有几处存在一些问题,在本文中记录。
勘误列表
P51:将In[50]的第一条语句放到最后一句执行,不然画图会出现留白。
P114: 将In[23]的 if (i+1)% 3 == 0的3改为2,因为enumerate()函数所给出的索引默认是从0开始的,也可以在enumerate()函数处加参数start=1.
P187:In[52]的strftime("%s")的入参比较少见,开始搜官网都没有搜到,是将date类型的数据(单独/数组/列式数据)转换为秒级时间戳。但是这个函数在Windows系统运行有问题,只转换成了字符串,我环境是Win7,在虚拟机上可以正确运行(Ubuntu 18.04)。也可以自己写个函数去处理,因为在书中是列式数据,处理麻烦一些,就没做尝试。
P221:In[50]报错,不能tuple//int,暂未解决。
P226:In[57]:加上 from sklearn.metrics import f1_score