如何快速学习新技术

技术人员的快速学习能力是非常重要的,以前觉得这个可能更多的体现在刚毕业的学生身上,但慢慢我发现对于各个阶段的技术人,这个能力都很重要,甚至级别越高这个能力越重要。想想一个公司的CTO,事情应该是很多的(而且很多可能还都是非技术方向的),但作为公司的技术风向标,对于技术的掌握,特别是宽度一定要是非常OK的,否则如果方向错了,下面的人再怎么努力,也是事倍功半的。这一点在我的上一份工作中真的是感受颇深。这次要讨论的如何快速学习是一个非常大的话题,相信每个人都有自己的看法;而且在我看来也没有一个适用于所有人的方法,毕竟人是个复杂的动物,个体差异太大。本文谈的都是我自己的一些心得体会,仅供参考,欢迎讨论

再说保险

昨天发了保险的文章后,没想到感兴趣的人还挺多,也有一些疑惑,所以我打算再写一篇,就我所知道的和我的一些观点进行表述,仅供参考。写之前,老习惯,先说明下:这篇文章依旧不是技术文章,只想看技术文章的略过此文。我没有转行卖保险,我现在唯一的工作还是技术,主要做大数据,有做这方面的朋友欢迎交流,后面我也会多发这方面的技术文章。想尽量在这篇文章里面把我的观点和我所知道的表述完全,后面不再写这个方面的了,所以本文可能会比较长。转变思维今天和一些朋友交流后,发现不太懂的人主要还是对保险的定位没有搞清楚,所以这里再说明一下。保险最主要的作用是用自己还能承受的钱转移自己不能承受的风险。比如,你能承受每年花几千块

我竟然来劝你买保险了

关于这篇文章先说明几个问题:本文不是技术文章,但我觉得对不了解保险的人来说比极大多数(其实我想说全部的)技术文章更有用处。本文不是广告,没有任何套路(整个公众号里面都没有)。如果你对保险已经了解了,不用往下读浪费时间了(其实读一下也没坏处);但如果你还不了解,甚至你听到这个就比较反感,那建议你一定一定要看一下。本文说的保险是和人相关的保险,不包含车险等其它的。为什么想写这篇文章其实我原来就是上面说的那种不了解保险,而且对这个东西有点反感的人,其实现在看来之所以会反感主要有两个原因:1. 自己不了解。 2. 老有各种烦人的推销。那我现在态度为什么转变了呢?因为去年有了娃,看别人说要给娃买保险。可

修改Logstash的@timestamp字段为业务时间

Logstash在处理数据的时候,会自动生成一个字段@timestamp,默认该字段存储的是Logstash收到消息/事件(event)的时间。很多时候我们用ELK是处理日志的,日志里面一般都是有时间的。而且很多时候我们只关注日志里面的时间,而不关注Logstash收到这条日志的时间。这个时候,一种方法是再增加一个字段,用来存储日志里面的时间,这种很简单;另一种方法是使用日志中的时间替换掉@timestamp字段默认的时间。本文介绍第二种方法并总结一些关键知识点。现在有如下一条日志:2018-02-26 15:48:32.708-[INFO ] main RestfulApiProvider

scikit-learn的ColumnTransformer和OneHotEncoder

本文介绍scikit-learn 0.20版本中新增的sklearn.compose.ColumnTransformer和有所改动的sklearn.preprocessing.OneHotEncoder。ColumnTransformer假设现在有这样一个场景:有一个数据集,每个样本包含n个数值型(numeric)特征,m个标称型(categorical)特征,我们在使用这个数据集训练模型之前,需要对n个数值型特征做归一化,对m个标称型特征做one-hot编码?这个要如何实现?其实这个不难,但挺麻烦的。一般的方式是把数值型的特征数据列和标称型数据分别拿出来,然后分别做预处理,处理完之后再拼在一

Logistic Regression算法

在之前的《常见线性回归模型》一文中,介绍了机器学习中比较简单但又非常常用的线性回归模型,今天来介绍另外一个模型:Logistic Regression,这又是机器学习中用的非常多的一个模型。虽然Logistic Regression(后简称LR)里面带了回归字样(Regression),但它实际是一个分类模型(关于回归和分类的区别见《机器学习介绍》),更准确的说是一个二分类模型(0、1或者true、false之类,当然通过一些手段也可以实现多分类),比如预测一份邮件是不是垃圾垃圾邮件、一个人是否患了某种病等。它的基本思想是:假设一份邮件为垃圾邮件的概率为$p$,我们根据一些特征计算出这个$p

Hive的分桶和采样

Hive除了有分区(Partition),还有分桶(Bucket),上一篇文章《Hive的分区》中介绍了分区,本文接着介绍分桶,以及和分桶经常一起使用的采样(Sampling)。其实不管是分区还是分桶都是为了更好的管理数据。分区将表的数据分到不同的目录存储,从而在查询的时候可以通过where条件过滤一部分数据,减小查询的数据量从而提高性能。但分区的这种机制往往在数据符合以下条件时才会表现的比较好:分区数目为有限个:一般也不能太大,不然太多的文件和目录对于HDFS的NameNode会造成比较大的内存压力。各个分区的数据量比较均衡:这个好理解,如果90%的数据跑到一个分区去,那分区的意义就不是很大

Hive的分区

Hive提供了分区的概念,对应到后台就是不同的目录,主要是为了在查询的时候可以提高性能。而分区分为两种:静态分区(Static Partition,以下简称SP):用户指定分区列的值,数据中不包含分区列的值,所以分区与数据没有关系。举个例子比如分区名字为ds=20180922,并不代表分区内的数据都是这天的,这个需要由用户自己保证。静态分区在编译阶段确定。动态分区(Dynamic Partition,以下简称DP):分区列的值从数据中获取,所以数据列中包含分区列的值。比如数据中有一列数据为日期,如果指定该列为分区列的话,那将根据该列的值创建分区。动态分区在运行阶段才可以确定。今天就来介绍这两种