scrapy框架基础(一)
前言
最近在学Scrapy,所以边学边总结吧
Scrapy 是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架
速度很快,使用起来不算麻烦
01-Scrapy框架的安装
可以直接pip 安装
pip/pip3 install scrapy
但是一般网络情况不好的情况下会安装失败,也可以安装.whl本地安装,这个网上教程很多,这里不做赘述
02-Scrapy框架的运行流程
我们之前的爬虫差不多都是这个流程
scrapy和上面的流程差不多
但是将一些操作抽象了出来,如下图
流程描述如下
爬虫中起始的url构造成request对象–>爬虫中间件–>引擎–>调度器
调度器把request–>引擎–>下载中间件—>下载器
下载器发送请求,获取response响应---->下载中间件---->引擎—>爬虫中间件—>爬虫
爬虫提取url地址,组装成request对象---->爬虫中间件—>引擎—>调度器,重复步骤2
爬虫提取数据—>引擎—>管道处理和保存数据
scrapy ...
2020再见
前言
现在已经是2020最后一天了
今年发生的事情有很多,但是这些也都是过去的事情了,上半年基本就是在家待着,待着也是在给国家做贡献了,下半年正常上课,虽然是正常上课,但是这几年以来,参加比赛的我也没上过几节课,现在都要毕业了,感觉这几年的学费有点白交的感觉,而且虽然是参加比赛,但是那么久以来也就这个学期拿了几个奖,今年下半年过的还算不错吧~,部门终于可以放手了,也该让她们自己去成长了,参加的比赛也都拿了奖,考的证也都过了,虽然2020过的很难,但是毕竟过去了
希望在2021自己定的目标能够完成,能遇到更有意思的人,加油呀
有感
有感
感觉很快就到要毕业的时候,心情有一些复杂
走在校园里已经没有课了,看着学弟学妹去教室上课,同级的人离开校园前往天南地北去实习,挺伤感的
感觉时间过的真的很快,刚进学校的情景现在还能在脑子回想起来,结果现在都要毕业了
感觉也没学会什么,就毕业了
有些人可能这次分别就再也见不到了
祝我们前程似锦,未来可期
金砖比赛后感
金砖比赛后感
比赛也算过去了,拿了二等奖,40多个队伍拿到了第11名,感觉也还算不错吧,虽然还有遗憾,自己机器学习的部分可能并没有做的很好,也是自己的能力水平问题,与其他的队伍的差距也是很明显的,学习的道路还很长呢,继续走下去吧.
机器学习-api汇总
前言
本文旨在为前面学过的api做一个汇总,用于复习
1.K-近邻算法API
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)
代码demo
from sklearn.neighbors import KNeighborsClassifierx=[[1],[2],[0],[0]]y=[1,1,0,0]estimator=KNeighborsClassifier(n_neighbors=2)estimator.fit(x,y)ret=estimator.predict([[1]])print(ret)
运行结果:
[1]
特征预处理API
from sklearn.preprocessing import MinMaxScaler(归一化)
from sklearn.preprocessing import StandardScaler(标准化)
因为归一化的数据处理机制,如果数据集中异常点过多,处理结果的鲁棒性较差,并不是很适合现代的大型数据集
所以我们一般都是使用标准化处理数据
代码demo:
from sklea ...
机器学习-集成学习
前言
集成学习通过建立几个模型来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测。
集成学习中boosting和Bagging
只要单分类器的表现不太差,集成学习的结果总是要好于单分类器的.
Bagging集成原理
目标:把下面的圈和方块进行分类
实现过程:
1.采样不同数据集
2.训练分类器
3.平权投票,获取最终结果
4.主要实现过程小结
随机森林构造过程
在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。
随机森林 = Bagging + 决策树
例如, 如果你训练了5个树, 其中有4个树的结果是True, 1个树的结果是False, 那么最终投票结果就是True
随机森林够造过程中的关键步骤(用N来表示训练用例(样本)的个数,M表示特征数目):
1)一次随机选出一个样本,有放回的抽样,重复N次(有可能出现重复的样本)
2) 随机去选出m个特征, m <<M,建立决策树
随机森林api介绍
sklearn.ens ...
机器学习-决策树(特征处理和算法API)
前言
本文承接上文 决策树
特征提取
将任意数据(如文本或图像)转换为可用于机器学习的数字特征
注:特征值化是为了计算机更好的去理解数据
特征提取分类:
字典特征提取(特征离散化)
文本特征提取
特征提取API
sklearn.feature_extraction
字典特征提取
作用:对字典数据进行特征值化
sklearn.feature_extraction.DictVectorizer(sparse=True,…)
DictVectorizer.fit_transform(X)
X:字典或者包含字典的迭代器返回值
返回sparse矩阵
DictVectorizer.get_feature_names() 返回类别名称
demo如下:
from sklearn.feature_extraction import DictVectorizerdef dict_demo(): data = [{'city': '北京', 'temperature': 100}, ...
机器学习-决策树
前言
决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-else结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法
决策树介绍
决策树:是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果,本质是一颗由多个判断节点组成的树。
而决策树的关键是:信息熵,信息增益
信息熵
熵是衡量系统混乱度的数值
系统越有序,熵值越低;系统越混乱或者分散,熵值越高。
信息理论:
1、从信息的完整性上进行的描述:
当系统的有序状态一致时,**数据越集中的地方熵值越小,数据越分散的地方熵值越大。
2、从信息的有序性上进行的描述:
当数据量一致时,系统越有序,熵值越低;系统越混乱或者分散,熵值越高。
1948年香农提出了信息熵(Entropy)的概念。
假如事件A的分类划分是(A1,A2,…,An),每部分发生的概率是(p1,p2,…,pn),那信息熵定义为公式如下:(log是以2为底,lg是以10为底)
信息增益
信息增益:以某特征划分数据集前后的熵的差值。熵可以表示样本集合的不确定性,熵越大,样本的不确定性就越大。因此 ...
机器学习-逻辑回归
前言
逻辑回归就是解决二分类问题的利器
逻辑回归
逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。
逻辑回归的特点
1、通过公式计算,能够得出样本对应目标值的概率值;
2、逻辑回归仍然会有过拟合问题;也有自己的权重值;也有自己的损失函数(ps:虽说与线性回归原理相同,但是由于是分类问题,损失函数不一样,所以其损失函数只能通过梯度下降求解)。
3、逻辑回归预测的概率为样本中占少数的类别的概率,此时此类别为正例。(这样是方便模型构建,如果预测为样本多数类别的概率,那么参与计算的数据就会更多)
逻辑回归的原理
想知道其原理,我们需要明白逻辑回归中的输入值是什么
输入
逻辑回归的输入值其实是我们上文线性回归中的输出
激活函数
sigmoid函数
回归的结果输入到sigmoid函数当中
输出结果:[0, 1]区间中的一个概率值,默认为0.5为阈值
逻辑回归最终的分类是通过属于某个类别的概率值来判断是否属于某个类别,并且这个类别默认标记为1( ...
机器学习-模型加载和保存
前言
sklearn模型的保存和加载API
from sklearn.externals import joblib
保存:joblib.dump(estimator, ‘test.pkl’)
加载:estimator = joblib.load(‘test.pkl’)
但是目前我电脑上的sklearn中已经移除了from sklearn.externals import joblib这个导入方法
sklearn.externals.joblib在0.21中已弃用,在0.23中被删除
现在保存和加载模型的api是单独的库
现在使用import joblib来导入api
dump与load
具体使用可以看下面的代码
代码举例:
保存模型
from skimage.metrics import mean_squared_errorfrom sklearn.datasets import load_bostonfrom sklearn.linear_model import RidgeCV, Ridgefrom sklearn.model_selection import trai ...