sklearn
介绍
Scikit-learn项目始于scikits.learn,这是David Cournapeau的Google Summer of Code项目。它的名称源于它是“ SciKit”(SciPy工具包)的概念,它是SciPy的独立开发和分布式第三方扩展。原始代码库后来被其他开发人员重写。2010年费边Pedregosa,盖尔Varoquaux,亚历山大Gramfort和Vincent米歇尔,全部由法国国家信息与自动化研究所的罗屈昂库尔,法国,把该项目的领导和做出的首次公开发行在二月一日2010在各种scikits中,scikit-learn以及scikit-image在2012年11月被描述为“维护良好且受欢迎” 。Scikit-learn是GitHub上最受欢迎的机器学习库之一。
scikit-learn.pdf
8 Scikit Learn 速查表.pdf
Python数据科学速查表 - Scikit-Learn.pdf
回归分析
在实际中,常常希望根据已有数据,确定因变量(数值变量)与自变量(可以是类别变量)的关系,在此关系的基础上对未知数据进行预测。这种方法叫回归分析。
一般情况下可以按照模型的形式分为线性回归和非线性回归两种形式。
分类
线性模型
线性回归是在研究相关关系时优先考虑(最为直观)的一种模型,它假定所有解释变量对被解释变量的影响是线性叠加的,一般假设总体存在如下关系(矩阵形式):
\begin{equation}
\boldsymbol{Y}=\boldsymbol{X} \boldsymbol{\beta}+\boldsymbol{\mu}
\end{equation}
在统计学习的视角下,不同的线性模型则是从不同的假设出发建立不同的目标函数/约束条件,进而求解得到不同的估计结果,常见的线性模型有最小二乘法、岭回归、套索回归、弹性网络回归等。对于线性回归的线性也可以从多个角度理解,通过适当放松线性条件则可以得到其它的回归方法,如多项式回归(变量非线性)、
OLS
最小二乘法是用于拟合回归线最常用的方法。对于观测数据,它通过最小化每个数据点到线的垂直偏差平方和来计算最佳拟合线。
在计算总偏差时 ...
强化学习
强化学习(reinforcement learning.)是指智能系统在与环境的连续互动中学习最优行为策略的机器学习问题。假设智能系统与环境的互动基于马尔可夫决策过程(Markov decision process).,智能系统能观测到的是与环境互动得到的数据序列。强化学习的本质是学习最优的序贯决策。
Counter
Counter 是字典类的一个子类可以用来统计可以查数目的对象中元素个数的。
c = Counter() # a new, empty counterc = Counter('gallahad') # a new counter from an iterablec = Counter({'red': 4, 'blue': 2}) # a new counter from a mappingc = Counter(cats=4, dogs=8) # a new counter from keyword args
对于没有的元素进行查询时会返回 0 而不会报错。
如果要想把一个元素从计数器中移出,要使用del
与字典对象相比,计数器对象还有三个额外的方法:
elements():返回一个和统计结果完全一致的列表。
c = Counter(a=4, b=2, c=0, d=-2)list(c. ...
分类方法
线性分类方法
感知机和线性判别分析/Fisher分析是非常经典的硬分类线性模型,模型提出都比较早。
感知机
感知机是二类分类的线性分类模型。
感知机只在求出线性可分的分类超平面,通过梯度下降法对损失函数极小化建立感知机模型。
感知机1957年由Rosenblatt提出,是神经网络和支持向量机的基础
模型
输入空间是实例向量组成的空间,输出空间是-1和+1(正负两类)。建立如下函数:
\begin{align*}
f(x)&=sign(\omega \cdot x+b)\\
\omega&:weight\quad or\quad weight\quad vector\\
b&:bias
\end{align*}
策略
感知机学习算法是错误驱动的,刚开始提出时以误分类样本点数量为损失函数,但因为该函数不连续,所以后来变成了最小化样本点到直线的距离。
算法(原始形式)
具体采用随机梯度下降法(SGD)。
收敛性
Novikoff定理告诉我们线性可分数据集经过有限次迭代可以得到一个将训练数据集完全正确划分的分离超平面及感知机模型。当训练集线性不可分时,感知机学 ...
爬虫注意
大多数浏览器都支持对网页的审查,在对我们提取的数据的位置进行定位时往往需要借助网页的开发者工具。鼠标右键选择对网页“检查”即可打开该功能
检查浏览器DOM时的注意事项
当我们查看网页的DOM时,我们看到的并不是原本的html文件,而是浏览器清理和执行过Java代码的网页。例如火狐会给网页中的表格元素添加元素,但如果这样的东西出现在我们的xpath语句中,则不能提取出任何东西。
在对网页审查在开发者模式下禁用JavaScript(或者可以右键查看页面源代码)
不要使用包含全部路径的Xpath的语句(避免包含/tbody)使用相对路径或者比较大的搜索语句
动态网页抓取
在抓取网页时,有的页面是经过几次连续的请求才抓取成功的,这个时候我们可以借助检查工具中的“网络”来对网页加载的请求进行一个查看。拿https://quotes.toscrape.com/scroll网站举一个例子,打开该网站发现,该网站的页面加载功能是当我们将页面滚动到最下面之后自动加载出来的。这个时候就需要用到Net-work Tool了。打开对应的网页:
注意选定保留日志选项,防止日志被自动清楚。打开该窗口我们选择 ...
神经网络
神经网络
scikit-learn提供了MLPClassifier()和MLPRegression()两个类,分别用于神经网络分类和回归任务。
多层感知器(MLP) 的监督学习算法,通过在数据集特征 X = {x1, x2, …, xm} 和标签y上训练来学习函数:MLPClassifier():
class sklearn.neural_network.MLPClassifier(hidden_layer_sizes=(100, ), activation='relu', solver='adam', alpha=0.0001, batch_size='auto', learning_rate='constant', learning_rate_init=0.001, power_t=0.5, max_iter=200, shuffle=True, random_state=None, tol=0.0001, verbose=False, warm_start=False, momentum=0.9, ...
图像
图像处理与分类
Python有很多的数字图像处理相关的包,像PIL, Pillow, OpenCV, scikit-image等等。
其中PIL和Pillow只提供最基础的数字图像处理,功能有限。
OpenCV实际上是一个c++库,只是提供了Python接口。
scikit-image是基于SciPy的一款图像处理包,它将图片作为NumPy数组进行处理,与matlab处理方法类似**。(对图像的简单处理如截取、擦除、改变RGB某一通道的值或者拼接只需要对对应的数组进行操作即可)**
skimage包的全称是scikit-image SciKit (toolkit for SciPy),它对SciPy.ndimage进行了扩展,提供了更多的图片处理功能。
它由Python语言编写,由SciPy 社区开发和维护。skimage包由许多的子模块组成,各个子模块提供不同的功能。
io——读取、保存和显示图片或视频;
data——提供一些测试图片和样本数据;
color——颜色空间变换;
filters——图像增强、边缘检测、排序滤波器、自动阈值等;
draw—— 操作于NumPy数组上的基本 ...
聚类实现
聚类分析
scikit-learn的sklearn.cluster模块提供了多种聚类方法
K-means聚类
仿射传播聚类
均值漂移聚类
谱聚类
凝聚聚类
密度聚类
高斯混合聚类
层次聚类
K-means聚类分析
K-means聚类分析可以使用KMeans()类和k_means方法。
使用KMeans类进行聚类
KMeans()类的格式如下:
class sklearn.cluster.KMeans(n_clusters=8, init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='auto', verbose=0, random_state=None, copy_x=True, n_jobs=1, algorithm='auto')
KMeans()类的主要参数:
KMeans()类的主要属性有:
KMeans()类提供了fit(), predict()等8个方法供数据拟合、预测等使用。
在利用肘部法则确定K值时需要建立 ...