爬取豆瓣各类别书籍及处理数据(全流程)
1 前言
豆瓣作为爬虫手们的入手网站,十分的受欢迎。这次我使用xpath这个简单的技术进行爬取。目的就是为了给数据库大作业–图书管理系统做铺垫。本次代码大概花了我4个小时,主要是中间处理数据的时候失误了,有时是标点错误,以及忘记错误处理这种好方法,最终我们爬取了将近12000本书,处理之后得到6983本书,足够我们使用。
使用工具如下:
windows 11
python 3.9
Microsoft Edge
pandas(数据处理)
math(数学计算)
time(时间库,休眠用防封IP)
requests(请求库)
lxml.etree(html文本转化)
所爬取网站(按顺序)为:
豆瓣图书标签 (douban.com)
豆瓣图书标签: 小说 (douban.com)
2 引入相关库
123456789import requests from lxml import etreeimport pandas as pdimport mathimport timeheaders = {'User-Agent': 'User-Agent:Mozill ...
pymysql操作
Python进阶知识全篇-MySQL(PyMySQL) - 知乎 (zhihu.com)
什么是 PyMySQL?
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
PyMySQL 安装
在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。
PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。
如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:
1$ pip3 install PyMySQL
如果你的系统不支持 pip 命令,可以使用以下方式安装:
1、使用 git 命令下载安装包安装(你也可以手动下载):
$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL/
$ python3 setup.py install
2、如果需要制定版本号,可以使 ...
全球反恐状况分析
0 实验内容
根据一项调查,每年约有2.18亿人受到自然和人为灾害的影响,每年约有68000人失去生活。地震、火山等自然灾害的频率基本保持不变,但在此期间恐怖活动的数量有所增加。
本实验的目的是探索世界各地的恐怖事件。我们将探讨恐怖主义的趋势、恐怖主义多发地区等。
1 开发准备
1.1 数据集准备
数据地址
数据集有1个,名字叫globalterrorismdb_0617dist.csv。原数据集记录了1970.1.1 2017.1.27之间的恐怖主义事件,由于原数据集太大,本实验的数据集截取了2016.1.1 2017.1.27之间的恐怖主义事件。
1.2 数据集解释
数据集存储的是恐怖主义事件的数据,包含恐怖事件发生的时间、国家、地区、攻击类型、目标人群、死亡人数、受伤人数、动机、城市、经度、维度等共135个字段。
由于数据集有135个字段,无法展示。后面的步骤会从数据集中筛选重要的字段,并展示数据集的前5行数据,同学们可以通过它了解数据集。
1.3 导入包和数据集
导入包和数据集,代码如下:
123456789# import librariesimport numpy as n ...
天池汽车竞品分析攻略
一、赛题内容
数据分析达人赛:汽车产品聚类分析
实验环境:天池notebook
赛题背景
赛题以竞品分析为背景,通过数据的聚类,为汽车提供聚类分类。对于指定的车型,可以通过聚类分析找到其竞品车型。通过这道赛题,鼓励学习者利用车型数据,进行车型画像的分析,为产品的定位,竞品分析提供数据决策。
竞品:指产品在同领域的竞争对手。如肯德基与麦当劳。
赛题数据
数据源:car_price.csv,数据包括了205款车的26个字段
1
Car_ID
每个观测值的唯一 ID(英格)
2
Symboling
其分配的保险风险评级,值为+3表示汽车有风险,-3表示它可能非常安全。(分类)
3
CarName
汽车公司名称(分类)
4
fueltype
汽车燃料类型,即汽油或柴油(分类)
5
aspiration
汽车中使用的吸气(分类)
6
doornumber
汽车车门数(分类)
7
carbody
车身(分类)
8
drivewheel
驱动轮类型(分类)
9
enginelocation
汽车发动机的位置(分类)
10
wheelbase
汽车底座 ...
Titanic生存预测攻略
一、前言
泰坦尼克号作为Kaggle经典项目,被拿来做考核或者实验非常多,也是机器学习入门的一个很好的项目。我们机器学习的老师也是直接用这个项目来做考核。
他分工分成了数据处理、模型搭建、PPT制作和文档制作,但是鄙人认为,数据处理与模型搭建密不可分的,比如说在决策树模型中,是不在乎数据实际差值的,但是SVM逻辑回归等算法,如果不用较好的数据变换,基本是没准确度的。
基本上数据处理用了2个小时基本就搞定了,也参考了很多别人的题解,不过我都是自己再写了一遍,代码量不大很好处理。模型搭建其实也就是调用一下sklearn库,我自己认为对于这种比较难以估计的真实情况,而且数据特征、样本量都比较少。把注意力花在调参上,没有什么大的突破。所以我只是为了学习操作流程,把各个模型拿出来,意思意思过一下罢了。菜不行,再怎么烹饪,也煮不出东西来。
本质上这个项目,就是一个入门项目,学习机器学习/数据挖掘的一个过程。差不多得了hhhh。
二、环境搭建
本次实验使用的是
window11(操作系统)
python 3.9(python语言)
jupyter notebook(编辑器很方便)
copy(用来复 ...
python模拟缓冲区进度条
实验步骤
点击【桌面连接】进入实验环境。
1 开发准备
1.1 打开编程IDE-Spyder
双击桌面上的【LXTerminal】打开终端
切换到root用户
1sudo su
紧接着粘贴student用户的密码,方法参见4.1小节。
敲入如下命令启动Spyder:
1spyder
将Spyder的工作目录设置为/root(默认为/root),如下图所示:
图1 Spyder工作目录
1.2 再打开一个新的终端
我们编写程序是在IDE(比如Spyder)下实现,但是我们运行程序一般都是在终端运行的,即命令行模式下运行。原因很简单,把程序部署在服务器后,程序总不能在Spyder里面跑,一定是在命令行模式下跑。
在本实验中,编写代码在Spyder环境下,运行程序在终端环境下。
再打开一个终端的步骤如下:
双击桌面上的【LXTerminal】打开终端
切换到root用户
1sudo su
紧接着粘贴student用户的密码。
进入到代码所在目录
1cd /root
后面我们称这个终端叫新打开的终端。
2 原理探究
我们都知道电影的原理,连续的画面是由一帧帧 ...
集成学习
集成学习
集成学习(Ensemble Learning)是机器学习中的一种思想,通过多个模型的组合形成一个精度更高的模型。
参与组合的模型为弱学习器(Weak Learner)。在预测时使用这些弱学习器模型联合进行预测。集成学习模型在训练时需要用训练样本依次训练出这些弱学习器。
集成学习在各个规模的数据集上都有很好的策略。
数据集大:划分成多个小数据集,学习多个模型进行组合
数据集小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合
voting投票机制
思路
投票机制(voting)是集成学习里面针对分类问题的一种结合策略,基本思想是融合多个数据来降低误差。
对于回归模型:投票法最终的预测结果是多个其他回归模型预测结果的平均值。
对于分类模型:硬投票法的预测结果是多个模型预测结果中出现次数最多的类别,软投票对各类预测结果的概率求和,最终选取概率之和的最大的类标签。
原理分析
投票法是通过多个模型的集成降低方差,从而提高模型的鲁棒性。
对于分类投票法,根据输出的两种类型:输出类标签和输出类概率,将前者称为硬投票(Majority/Hard votin ...
K折交叉验证
K折交叉验证
K-Fold Cross Validation K折交叉验证,将原始数据分成K组(一般是均分),将每个子集数据分别做一次测试集,其余K-1组子集数据作为训练集。这样可得到K个模型/
用这K个模型最终在验证集的评估指标分数(如准确率、R2)平均数作为偏差,评估指标分数的标准差作为方差。
静态的「留出法」对数据的划分方式比较敏感,有可能不同的划分方式得到了不同的模型。「k 折交叉验证」是一种动态验证的方式,这种方式可以降低数据划分带来的影响。具体步骤如下:
将数据集分为训练集和测试集,将测试集放在一边
将训练集分为 k 份
每次使用 k 份中的 1 份作为验证集,其他全部作为训练集。
通过 k 次训练后,我们得到了 k 个不同的模型。
评估 k 个模型的效果,从中挑选效果最好的超参数
使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终模型。
1.使用 train/test split 进行模型评估的缺点
Train/test split 是将原始数据集划分为训练集/测试集,避免了为了追求高准确率而在训练集上产生过拟合,从而使得模型在样本外的数据上预测准 ...
超参数
超参数
【1】超参数的“学院派”定义:
在机器学习的过程中,
超参= 在开始机器学习之前,就人为设置好的参数。
模型参数=通过训练得到的参数数据。
通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果
【2】怎么决定超参数?
定义关于模型的更高层次的概念,如复杂性或学习能力。
不能直接从标准模型培训过程中的数据中学习,需要预先定义。
可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定
【3】超参数的“通俗”定义:
超参数也是一种参数,它具有参数的特性,比如未知,也就是它不是一个已知常量。
是一种手工可配置的设置,需要为它根据已有或现有的经验,指定“正确”的值,也就是人为为它设定一个值,它不是通过系统学习得到的。
【4】超参数的一些示例:
聚类中类的个数
话题模型中话题的数量
模型的学习率
.深层神经网络隐藏层数的数量或树的深度
矩阵分解中潜在因素的数量
k均值聚类中的簇数
模型优化本质
模型优化就是通过调整模型超参数使得模型性能打到最优。
手动调参
网格搜索法(Grid Search):穷举搜索指定参数值,将尝试每个参数的 ...
损失函数补充
损失函数–定义函数模型的好坏
损失函数(Loss Function)
摘要:
本文主要介绍几个机器学习中常用的损失函数,解释其原理,性能优缺点和适用范围。
目录:
什么是损失函数?
为什么要用损失函数?
有哪些损失函数?
基于距离度量的损失函数
均方误差损失函数(MSE)
L2损失函数
L1损失函数
Smooth L1损失函数
huber损失函数
基于概率分布度量的损失函数
KL散度函数(相对熵)
交叉熵损失
softmax损失函数
Focal loss
如何选择损失函数?
参考资料
1. 什么是损失函数?
一言以蔽之,损失函数(loss function)就是用来度量模型的预测值f(x)与真实值Y的差异程度的运算函数,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。
2. 为什么使用损失函数?
损失函数使用主要是在模型的训练阶段,每个批次的训练数据送入模型后,通过前向传播输出预测值,然后损失函数会计算出预测值和真实值之间的差异值,也就是损失值。得到损失值之后,模型通过反向传播去更新各个参数,来降低真实值与预测值 ...