全球反恐状况分析
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. 为什么使用损失函数?
损失函数使用主要是在模型的训练阶段,每个批次的训练数据送入模型后,通过前向传播输出预测值,然后损失函数会计算出预测值和真实值之间的差异值,也就是损失值。得到损失值之后,模型通过反向传播去更新各个参数,来降低真实值与预测值 ...
定量变量与定性变量的转换
定量变量和定性变量的转换(Transform of Quantitative & Qualitative Variables)
定量变量(Quantitative Variables):也称为数值型变量(Numerical Variables),可以用连续值或离散值表示。比如:气温(连续值),学生人数(离散值)。
为什么要对定量变量进行转换?大多数情况下,我们可以直接使用定量变量。但是有时候,特征和目标之间不呈线性关系。比如说年龄和收入之间的关系,当人年轻时,收入通常会稳步上升,但到了一定年纪之后,收入便开始降低。我们当然可以用非线性模型来拟合数据,但是这样会把模型弄得很复杂。因此比较好的做法是在数据准备的阶段就对定量变量做分箱处理(Binning,也称为分区间)。在对定量变量分箱处理之后,还要再将其转换为虚拟变量或对其进行WOE转换(参见:https://zhuanlan.zhihu.com/p/30026040)。
将定量变量转换为定性变量的方法为:分区间(Binning),包括等宽分区间以及自适应分区间。
等宽分区间(Fixed-Width Binning):可以用p ...
决策树算法补充
四类常见的机器学习算法:
ID3算法 : 信息增益
C4.5算法: 信息增益率
C5.0
CART: 基尼系数
首先我们先简单介绍一下决策树,
决策树算法在“决策”领域有着广泛的应用,比如个人决策、公司管理决策等。其实更准确的来讲,决策树算法算是一类算法,这类算法逻辑模型以“树形结构”呈现,因此它比较容易理解,并不是很复杂,我们可以清楚的掌握分类过程中的每一个细节。
if-else原理
想要认识“决策树算法”我们不妨从最简单的“if - else原理”出发来一探究竟。作为程序员,我相信你对 if -else 原理并不感到陌生,它是
条件判断
的常用语句。下面简单描述一下 if -else 的用法:if 后跟判断条件,如果判断为真,也即满足条件,就执行 if 下的代码段,否则执行 else 下的代码段,因此 if-else 可以简单的理解为“如果满足条件就…,否则…”
if-else 有两个特性:一是能够利用 if -else 进行条件判断,但需要首先给出判断条件;二是能无限嵌套,也就是在一个 if-else 的条件执行体中,能够再嵌套另外一个 if-else,从而实现无限循环嵌套 ...