[原创] 用人话解释机器学习中的Logistic Regression(逻辑回归)

友情提示:如果觉得页面中的公式显示太小,可以放大页面查看(不会失真)。

Logistic Regression(或Logit Regression),即逻辑回归,简记为LR,是机器学习领域的一种极为常用的算法/方法/模型。
你能从网上搜到十万篇讲述Logistic Regression的文章,也不多我这一篇,但是,就像我写过的最优化系列文章一样,我仍然试图用“人话”来再解释一遍——可能不专业,但是容易看得懂。那些一上来就是几页数学公式什么的最讨厌了,不是吗?
所以这篇文章是写给完全没听说过Logistic Regression的人看的,我相信看完这篇文章,你差不多可以从无到有,把逻辑回归应用到实践中去。

阅读更多

[原创] 为树莓派添加 DS1302 实时时钟(硬件时钟)/ Add a DS1302 RTC for RPi

『1』软硬件环境
本文适用于:
Raspberry Pi:Model B/B+(已测),其他型号理论上也可以,只不过可能要修改一下后面说到的shell脚本中的端口号
OS:Arch Linux ARM

『2』实时时钟与树莓派的关系
树莓派为了节约成本以及减小体积,没有板载的实时时钟(real-time clockRTC),或者叫硬件时钟,因此,如果你没有配置过树莓派自动从网络同步时间的话,或者就算你配置好了自动从网络同步时间、但没有网络可用的话,那么,你设置好的系统时间,在重启树莓派之后就会丢失。而我们家用的电脑之所以在开机之后时间仍然正确,是因为电脑主板上有实时时钟。

阅读更多

[原创] 在Github上添加SSH key

如果你在Github上有一个项目,为了能让这个项目可以在多台计算机上开发,需要把目标计算机的SSH key添加到你的Github账户中,否则你以SSH方式git clone时会提示无权限,例如你可以试试:

git clone git@github.com:codelast/raspberry-pi.git

会输出类似于这样的错误信息:

Permission denied (publickey).

文章来源:http://www.codelast.com/
所以下一步就要在Github中添加SSH key,让你可以在目标计算机上进行开发以及代码提交。
其实Github上已经有完整的教程了,只不过我记性不好,每次都要去翻Github教程,所以特地写下来。

检查SSH key是否已经存在
检查文件 ~/.ssh/id_rsa.pub 是否存在,如果存在,就不用生成一个新的SSH key了,直接跳到下面的第3步。
如果该文件存在,但你不想使用它的话,那么就按下面的做法另外生成一个文件也可以(例如 ~/.ssh/id_rsa_github.pub)。
文章来源:http://www.codelast.com/
 生成一个新的SSH key
如果第1步中的SSH key不存在,则需要生成:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

其中,your_email@example.com要修改成你的邮箱地址。
回车后输出如下:

Generating public/private rsa key pair.
Read More

[原创] 让ThreadPoolExecutor的workQueue占满时自动阻塞submit()方法

使用Java的ThreadPoolExecutor可以并发地执行一些任务,它的基本用法是:
(1)创建一个 ThreadPoolExecutor 对象

ThreadPoolExecutor executor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(workQueueSize));

阅读更多

[原创] 使用ThreadPoolExecutor产生的 OutOfMemoryError: unable to create new native thread 错误

最近,在使用Java的ThreadPoolExecutor来实现一个并发功能的时候,发现程序刚执行起来不久,就提示了错误:

OutOfMemoryError: unable to create new native thread

并且服务器立即陷入类似于“无响应”的状态,无法用Ctrl+C结束掉我的Java程序,按Ctrl+C的时候,命令行只是不断地打印出类似于下面的消息:

Exception java.lang.OutOfMemoryError occurred dispatching signal SIGINT to handler- the VM may need to be forcibly terminated

阅读更多

[原创] Protocol Buffers的Emacs语法高亮

让Emacs支持Protocol Buffers文件的语法高亮,很简单,首先下载这个文件:

wget https://raw.githubusercontent.com/dylanvaughn/emacs/master/lib/protobuf-mode.el

阅读更多

[原创] 树莓派出现在科技美剧《Mr. Robot》中


科技美剧《Mr. Robot》(黑客军团)第1季第4集里,第一次出现了树莓派的身影,虽然我不是一个美剧达人,但这还是我第一次看到树莓派被用在了剧情里,深感好莱坞的编剧们真是紧跟时代潮流啊。

[原创] 如何用Apache Pig输出压缩格式的SequenceFile

查看更多Apache Pig的教程请点击这里

SequenceFile是Hadoop API提供的一种二进制文件,它将数据以<key,value>的形式序列化到文件中。

如果你要用Apache Pig读取这种类型的数据,可以用 PiggyBank 中的SequenceFileLoader——我没有用过,但肯定是没问题的。

[原创] 树莓派视频教程

我为极客学院录制了一个系列的树莓派视频教程,总共有6节大课。
该系列课程内容是基于树莓派Model B+型号的,而本站里我以前写过的很多树莓派文章是基于树莓派Model B型号(较老)的,因此,我录制的这些课程内容更“新”一些,适合于初学者学习。
由于是商业用途的课程,所以极客学院只把每节大课的第一课时设置为可以免费观看的,并且由于有协议约束,我也不能把教学视频发布到其他任何一个网站上,在这里我要向大家说抱歉,希望大家能支持极客学院。
但是,作为一个知识共享的拥护者,我希望每个人都能得到尽可能多的知识,因此,如果有时间的话,我会在本站写一些类似的技术文章出来。并且,本系列教程中的所有代码,都上传到了Github,你可以到这里下载。

阅读更多

[原创] gnuplot调教记

gnuplot是命令行绘图的极佳选择之一。用它画出一副简单的图极其容易,但是对画出的图进行微调却很令人抓狂,这主要“得益”于gnuplot超级强大的功能,以及无穷无尽纷繁复杂的说明文档,通常让人没时间去细细研究。
如果你经常有gnuplot的使用需求,那么可以仔细研读一下它的文档,否则,还是像我一样,现学现用吧。
我折腾了一天多时间,把我想要的一副图给画出来了,里面涉及到了很多图像的微调过程,有些解决方案很难搜到,但我运气稍好,终究还是弄出来了,在此,作为一个使用案例来分析一下。因此,本文并不是gnuplot的使用教程,而是用gnuplot绘图时,对某些奇怪问题的解决办法的分享。

本文基于gnuplot版本:4.4,系统:RHEL 5.3

阅读更多

[原创] 解决找不到emacsclient命令的问题 / Solve the emacsclient: command not found problem

用daemon模式运行Emacs,并且用emacsclient连接上这个已经启动的server的话,那么Emacs启动速度真是如光速一般。不过,在我的一台计算机上,竟然找不到emacsclient命令,于是我挖了一番,解决了这个问题,于是写下来。

阅读更多

[原创] 如何用「归纳假设法」求归并排序的时间复杂度

分析归并排序算法的时间复杂度,可以根据算法的逻辑,分析每一个步骤的最坏情况,然后得到总体的时间复杂度;也可以利用数学中的『归纳假设法』,用几乎纯数学的方式来得到它的时间复杂度。而后者比前者好理解得多,所以,我认为要推导归并排序的时间复杂度的话,归纳假设的方法是不二之选。

阅读更多