图像
图像处理与分类 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值时需...
支持向量机
LR →SVM 在逻辑回归问题中,我们希望输入sigmod函数中的函数值离0越远越好,因为离0越远,我们判断的"把握"就越大。也就是说我们希望找到一个分类器使得待分类点距离分类的平面尽可能的远,换言之也是一样分类判断的把握尽可能大。这就延伸出了一种二分类模型-支持向量机 支持向量机就是一种二分类模型,其基本模型定义为特征空间上间隔最大的线性分类器,其学习策略就是间隔最大化。 The support-vector network combines 3 ideas: the solution technique from optimal hyperplanes (that allows for an expansion of the solution vector on support vectors), the idea of convolution of the dot-product (that extends the solution surfaces from linear to non-linear), and the notion of soft ...
回归分析实战
回归分析 线性回归 scikit-learn提供了广义线性模型模块sklearn.linear_model. 它定义线性模型为: linear_model模块提供用于线性回归的类: class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=1) 生成一个LinearRegression类的实例。 使用该实例调用fit()方法来拟合数组 X, y fit(X, y, sample_weight=None),其中X, y接收数组,分别代表训练集和目标。 将线性模型的系数w存储在其成员变量coef_中。 用户可通过访问coef_和intercept_观察拟合的方程中,各自变量的系数和截距。 使用predict()方法能够预测一个新的样本的回归值: predict(X),其中X是新的样本。 #ch7#例7-1 读取第5章产生的1元线性回归数据,进行回归分析,可视化回归结果import numpy as npimport matplotlib...
模型的保存与加载
保存和加载模型 在新版的python中,可以借助joblib库实现对训练得到的模型进行保存和加载。 对模型的保存需要利用到该库里的dump函数,加载的话则借助load函数:
Scrapy框架
Scrapy确实是提高爬虫效率很好的一个方法,但框架式的内容也对自身对爬虫技能的掌握程度提出了一个全新的要求,目前自身的爬虫技能仍有待进一步加强,相信以后会越做越好。 简单网页的爬取可以利用re模块,复杂网页的爬取对于内容的提取则会显得十分麻烦。Scrapy框架是python下的一个爬虫框架,因为它足够简单方便受到人们的青睐。 选择器(提取数据的机制) Scrapy提取数据有自己的一套机制。 它们被称作选择器(seletors),通过特定的XPath或者CSS表达式来“选择”HTML文件中的某个部分。XPath是一门用来在XML文件中选择节点的语言, 也可以用在HTML上。 CSS是一门将HTML文档样式化的语言。 选择器由它定义,并与特定的HTML元素的样式相关联。 Scrapy的选择器构建于lxml库之上, 这意味着它们在速度和解析准确性上非常相似, 所以看你喜欢哪种选择器就使用哪种吧, 它们从效率上看完全没有区别。 XPath选择器 XPath是一门在XML文档中查找信息的语言。 如果实在不想自己写的话可以借助edge浏览器的插件SelectorGadget 给自动生...
sklearn生成数据集
生成数据集 为了方便用户学习机器学习和数据挖掘的方法,机器学习库scikit-learn的数据集模块sklearn.datasets提供了20个样本生成函数,为分类、聚类、回归、主成分分析等各种机器学习方法生成模拟的样本集。 分类、聚类问题样本生成器 make_blobs()方法 sklearn.datasets.make_blobs(n_samples=100, n_features=2, centers=3, cluster_std=1.0, center_box=(-10.0, 10.0), shuffle=True, random_state=None) center_box表示中心由随机数产生时的随机数产生的上下界 random_state表示样本数据的随机数产生方法 sklearn.datasets.make_blobs()函数能够生成指定样本数量、特征数量、类别数量、类别中心、类别样本标准差的分类样本集。 from sklearn.datasets.samples_generator import make_blobsX, y = m...
机器学习入门
机器学习的定义: 以一种科普的视角,将发展史串联呈现出来 【中国工业与应用数学学会科普报告】西安交通大学孟德宇教授:《机器学习之道》-哔哩哔哩 A new AI spring 人工智能的定义 Artificial narrow intelligence (ANI):This specifies an AI agent that exceeds human-expert-level capabilities and skills in a narrow field. AlphaZero can be considered an ANI in the fields of Go, chess, and shogi. An algorithmic stock-trading AI agent that realizes a net return of consistently 100% per year (per anno) on the invested capital could be considered an ANI. Artificial general intellig...
爬虫入门
python爬虫书目推荐.xmind 基本内容 爬虫通俗来说就是一个模拟人类请求网站行为的程序。可以自动请求网页、并把数据抓取下来,然后使用一定的规则则提取有价值的数据。也可以理解为使用某种编程语言(这里当然是使用Python语言) 按照一定的顺序、 规则主动抓取互联网特定信息的程序或者脚本。 爬虫可以分为通用爬虫和聚焦爬虫 各大搜索引擎是通用爬虫一个很好的例子,通用爬虫在爬取内容时并不会对网页内容进行筛选,将网页的全部内容给爬取下来。 聚焦爬虫则是只爬取网页上自己需要的内容。 使用语言: php:多线程异步处理能力弱 C/C++:学习成本高,运行速度快但学习和开发成本高 Java:生态圈完善,python爬虫的最大竞争对手。但Java语言本身笨重,代码量大。重构成本搞(有的网站会更新网页编码的规则,需要不断重构来匹配规则) python:语法优美,代码简洁,开发效率高。相关的HTTP请求模块和HTML解析模块非常丰富。还有Scrapy和Scrapy-redis框架让我们开发爬虫变得异常简单。 http协议 HTTP协议:全称是HyperText Transfer Proto...
神经网络学习
发展 1958年,计算科学家Rosenblatt提出了由两层神经元组成的神经网络,并将之命名为“感知器”(Perceptron)。 感知器有两个层次:输入层和输出层。 输入层里的“输入单元”只负责传输数据,不做计算。 输出层里的“输出单元”则需要对前面一层的输入进行计算。 感知器是当时首个可以学习的人工神经网络。Rosenblatt现场演示了其学习识别简单图像的过程。 按照不同的连接方式,神经网络可以分为: 感知器模型 多层感知机模型 前向多层神经网络 Hopfield神经网络 动态反馈网络 自组织神经网络等。 1986年,Rumelhar和Hinton等人提出了反向传播(Back Propagation,BP)算法,解决了两层神经网络所需要的复杂计算量问题,从而带动了使用两层神经网络研究的热潮。 两层神经网络除了包含一个输入层,一个输出层以外,还增加了一个中间层。 中间层和输出层都是计算层。 理论证明,两层神经网络可以无限逼近任意连续函数。 面对复杂的非线性分类任务,带一个隐藏层的两层神经网络可以取得很好的分类结果。 2006年,Hinton在《Science》和相关期刊...
