支持向量机
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 mar ...
回归分析实战
回归分析
线性回归
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.py ...
模型的保存与加载
保存和加载模型
在新版的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 = make ...
机器学习入门
机器学习的定义:
以一种科普的视角,将发展史串联呈现出来
【中国工业与应用数学学会科普报告】西安交通大学孟德宇教授:《机器学习之道》-哔哩哔哩
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 intelligenc ...
爬虫入门
python爬虫书目推荐.xmind
基本内容
爬虫通俗来说就是一个模拟人类请求网站行为的程序。可以自动请求网页、并把数据抓取下来,然后使用一定的规则则提取有价值的数据。也可以理解为使用某种编程语言(这里当然是使用Python语言) 按照一定的顺序、 规则主动抓取互联网特定信息的程序或者脚本。
爬虫可以分为通用爬虫和聚焦爬虫
各大搜索引擎是通用爬虫一个很好的例子,通用爬虫在爬取内容时并不会对网页内容进行筛选,将网页的全部内容给爬取下来。
聚焦爬虫则是只爬取网页上自己需要的内容。
使用语言:
php:多线程异步处理能力弱
C/C++:学习成本高,运行速度快但学习和开发成本高
Java:生态圈完善,python爬虫的最大竞争对手。但Java语言本身笨重,代码量大。重构成本搞(有的网站会更新网页编码的规则,需要不断重构来匹配规则)
python:语法优美,代码简洁,开发效率高。相关的HTTP请求模块和HTML解析模块非常丰富。还有Scrapy和Scrapy-redis框架让我们开发爬虫变得异常简单。
http协议
HTTP协议:全称是HyperText Transfer Protoco1 ...
神经网络学习
发展
1958年,计算科学家Rosenblatt提出了由两层神经元组成的神经网络,并将之命名为“感知器”(Perceptron)。
感知器有两个层次:输入层和输出层。
输入层里的“输入单元”只负责传输数据,不做计算。
输出层里的“输出单元”则需要对前面一层的输入进行计算。
感知器是当时首个可以学习的人工神经网络。Rosenblatt现场演示了其学习识别简单图像的过程。
按照不同的连接方式,神经网络可以分为:
感知器模型
多层感知机模型
前向多层神经网络
Hopfield神经网络
动态反馈网络
自组织神经网络等。
1986年,Rumelhar和Hinton等人提出了反向传播(Back Propagation,BP)算法,解决了两层神经网络所需要的复杂计算量问题,从而带动了使用两层神经网络研究的热潮。
两层神经网络除了包含一个输入层,一个输出层以外,还增加了一个中间层。
中间层和输出层都是计算层。
理论证明,两层神经网络可以无限逼近任意连续函数。
面对复杂的非线性分类任务,带一个隐藏层的两层神经网络可以取得很好的分类结果。
2006年,Hinton在《Science》和相关期刊上发表 ...
聚类分析
聚类是一种无监督学习,聚类的方法几乎可以应用于所有对象。
聚类分析根据聚类算法将数据或样本对象划分成两个以上的子集。
每一个子集称为一个簇,簇中对象因特征属性值接近而彼此相似。不同簇对象之间则彼此存在差异。
把相似的对象归于统一组,不同对象归于不同组。需要一种相似度的计算方法
相似度的计算方法
Manhattan Distance(曼哈顿距离)(l1范数)
Euclidean Distance(欧式距离),距离测度中简单直观的适合于二、三维的距离测度(l2范数):
d=∑i=1n(xi−yi)2d=\sqrt{\sum_{i=1}^n(x_i-y_i)^2}
d=i=1∑n(xi−yi)2
Minkowski Distance(闵可夫斯基距离),可以理解为n维空间的欧式距离:
d=∑i=1n(xi−yi)qqd=\sqrt[q]{\sum_{i=1}^n(x_i-y_i)^q}
d=qi=1∑n(xi−yi)q
Cosine Distance(余弦距离)(n维向量夹角)
Mahalanobis Distance马氏距离
聚类分析方法
划分法(Partit ...
产生和加载数据集
速查表pdf
文本数据读写
python 读取文件常用的一种方式是 open()函数,open 里写文件的路径,读取后返回一个文件对象,借助 file_obj.read()函数可以调取出文件对象的数据(返回字符串),这种情况下要记得使用 close 函数把读取的文件关闭,以免造成损害。
另外一种读取文件的方法是利用 with 关键词来打开文件建立对象,打开的文件对象会在 with 区块内跳出时关闭文件对象。
逐行读取文件
逐行读取的第一种方法是直接通过循环对文件对象进行操作,每次读取出的一行行末的换行符可通过 restrip()函数删除
第二种方法是直接调用文件对象的 readline()方法,该方法将会返回一个字符串组成的列表,列表中每一个字符串包含一行,且有结尾换行符。通过对返回列表的操作可以实现对数据的组合
file_obj=open("D:/test.txt")data=file_obj.read()print(data)for line in file_obj: print(line) #print(line.strip())#pri ...