10分钟入门Pandas
原文地址,是官网的《10 Minutes to pandas》翻译,代码中添加了个人的一些注释。
通常来说,我们像下面这样来引入包:
In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: import matplotlib.pyplot as plt
原文地址,是官网的《10 Minutes to pandas》翻译,代码中添加了个人的一些注释。
通常来说,我们像下面这样来引入包:
In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: import matplotlib.pyplot as plt
什么是kNN?kNN(k-Nearest Neighbors)是机器学习中处理分类问题的一种简单明了的算法。核心精髓就是老祖宗几百年前留下的言语"物以类聚,人以群居”。忘记从哪里看到的一个说法:“你身边最好的6个朋友的平均薪资,就是你的薪资水平。“这就是kNN算法的一个应用了吧,另外我觉得之前几篇给验证码降噪用的连通域算法,分割用的滴水算法,都有kNN的味道在里面。
之前一直有个疑惑,为什么要使用numpy?更本质的说,为什么要使用矩阵?矩阵是什么?意味着什么?关于关于矩阵的问题,这里推荐一个系列视频,讲的非常非常好。至于为什么用numpy,从程序的角度来讲,我认为最大的好处就是减少代码量以及提高效率(恩,写此文的时候觉得这是一句废话,但确实困扰了我一阵……)
比如,在学习KNN算法时需要计算欧式距离,公式如下:
$$d=\sqrt{ {({A_0}-{B_0})^2}+{({A_1}-{B_1})^2}+{({A_2}-{B_2})^2}+{({A_3}-{B_3})^2}+… }$$
这里用2维为例,公式变成:
$$d=\sqrt{ {({A_0}-{B_0})^2}+{({A_1}-{B_1})^2} }$$
这货貌似是已知直角三角形直角边求斜边长啊?
上篇文章记录了2种分割验证码的方法,此外还有一种叫做"滴水算法”(Drop Fall Algorithm)的方法,但本人智商原因看这个算法看的云里雾里的,所以今天记录滑动验证码的处理吧。网上据说有大神已经破解了滑动验证码的算法,可以不使用selenium来破解,但本人能力不足还是使用笨方法吧。
基础原理很简单,首先点击验证码按钮后的图片是滑动后的完整结果,点击一下滑块后会出现拼图,对这2个分别截图后比较像素值来找出滑动距离,并结合selenium来实现拖拽效果。