MySQL之高级处理
1. 窗口函数
1) 窗口函数的概念
窗口函数也称为OLAP函数,OLAP 是 OnLine Analytical Processing 的简称,意思是对数据库数据进行实时分析处理。窗口函数(Window Function)是 MySQL 8.0 新增的一个重要的功能,可以为数据分析提供强大的支持,例如计算分组排名、累积求和、同比/环比增长率等。
常见的聚合函数,包括 AVG、COUNT、MAX、MIN、SUM,它的作用就是对一组数据行进行汇总计算,并且返回单个分析结果。窗口函数和聚合函数类似之处在于它也是对一组数据进行分析;但是,窗口函数不是将一组数据汇总为单个结果;而是针对查询中的每一行数据,基于和它相关的一组数据计算出一个结果,如下图所示:
2) 窗口函数的使用
窗口函数的使用方法如下:
12345window_function ( expr ) OVER ( [PARTITION BY ...] [ORDER BY ...] [frame_clause])
其中,window_function是窗口函数的名称;expr是参数,有些函数不需要参 ...
MySQL之集合运算
1 集合运算
在数据库中, 所有的表以及查询结果都可以视为集合, 因此对它们进行一些集合运算。在标准SQL中, 可以使用求并集(UNION)、求交集(INTERSECT)、求差集(EXCEPT)运算。
1) 求并集(UNION)
UNION的具体用法:
12345SELECT product_id, product_name FROM product UNIONSELECT product_id, product_name FROM product2;
UNION等集合运算符通常都会除去重复的记录。上述查询是对不同的两张表进行求并集运算. 对于同一张表, 实际上也是可以进行求并集的。
使用UNION对两个查询结果取并集,与在一个查询中使用WHERE子句然后使用OR谓词连接两个查询条件,能够得到相同的结果。但要将两个不同的表中的结果合并在一起, 就不得不使用UNION了。而且,即便是对于同一张表, 有时也会出于查询效率方面的因素来使用UNION。
有些情况下需要不去重地进行并集, 那么只需要在UNION后面添加ALL关键字就可以保留重复行。
保留重复行的UNI ...
MySQL之进阶查询
1 视图
1) 什么是视图
MySQL视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。
数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变。
视图无非就是存储在数据库中并具有名字的SQL语句,或者说是以预定义的SQL查询的形式存在的数据表的成分。
视图可以从原有的表上选取对用户有用的信息,那些对用户没用或者用户没有权限了解的信息,都可以直接屏蔽掉,作用类似于筛选。这样做既使应用简单化,也保证了系统的安全。
如果经常需要从多个表查询指定字段的数据,可以在这些表上建立一个视图,通过这个视图显示这些字段的数据。
2) 视图的优点
视图与表在本质上虽然不相同,但视图经过定义以后,结构形式和表一样,可以进行查询、修改、更新和删除等操作。同时,视 ...
MySQL之基础查询与排序
1 SELECT查询语句
当我们需要从数据表中查询和选择数据的时候就需要用到SELECT语句,返回的数据存储在结果表中,称为结果集。
1) 基本语法
基本SELECT语句包含了SELECT和FROM两个子句(Clause):
12SELECT 列名1, 列名2, 列名3, ... FROM 表名;
其中,SELECT子句中列举了希望从表中查询出的字段的名称,而FROM子句则指定了数据表的名称。
2) 进阶查询
如果要查询表中可用的所有字段,可以使用下面的查询(*代表全部的字段): 1SELECT * FROM 表名; 如果查询的字段是在某些条件下的,可以增加WHERE子句: 123SELECT 列名1, 列名2, 列名3, ... FROM 表名 WHERE 条件表达式; 例子: 123SELECT product_name FROM product WHERE product_type = '衣服'; 如果想要获得查询的行不重复,可以使用SELECT DISTINCT: 123-- 使用DISTINCT删除product_type列中重复 ...
MySQL环境搭建与入门
1 MySQL环境搭建
采用MySQL数据库系统来使用SQL。下面是在Windows系统上安装MySQL的流程记录。
1) MySQL下载
首先到MySQL官网上下载社区版软件,下载地址:here,选择“mysql-installer-community-8.0.28.0.msi”对应的download,如下图。
然后,选择No thanks, just start my download.直接开始下载。(不用登录)
好像在官网下载很慢很慢(我的就很慢),去datawhale的百度网盘链接中下载吧:link,提取码:80lf。
2) MySQL安装
点击msi安装文件,选择full模式安装,然后进行下图所示的步骤:
finish之后就直接next继续完成下面的步骤:
点击execute进行安装就好了。
接下来一路默认,直到Type and Networking部分,勾选上Show Advanced and Logging Options,继续。在Authentication Method部分采用第二种认证方式,如下图:
接下来一路执行下去(默 ...
条件随机场(CRF)
条件随机场(CRF)
什么是条件随机场?
条件随机场(Conditional Random Field, CRF)是一种条件概率分布模型,也就是给定一组输入序列的条件下得到其输出序列的模型。
具体的解释参考简单且易懂的文章: * 传送门,参考其中的第一个回答以及下面的高赞回答。
CRF应用于序列标注
CRF模型常用于序列标注任务,比如命名实体识别(NER)、词性标注(POS)等等。
字符串
字符串
收录字符的相关编程。
1 打印一个字符串全部子序列,包括空字符串
python实现如下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768## 给定字符串s,找出它所有的子序列def sub_string(s): result = [] tmp = [] process(s, 0, tmp, result) return result## 给定字符串s,对于当前位置i,进行一个选择和不选择。当前的结果是tmp,所有结果集合为resultdef process(s, i, tmp, result): if i == len(s): result.append(''.join(tmp)) return ## 选择当前字符 tmp.append(s[i]) process(s, ...
堆
堆
1 什么是堆?
堆是一种有自己规则的树,分为最大堆和最小堆。堆从上往下数值增加或者减小,分别对应最小堆和最大堆。
最大堆:
最小堆:
堆不仅仅可以是二叉树,还可以是多叉树。但它得是完全(complete)树(除了倒数第一层外,其余层需要完全填充)。不同类型的树,堆的搜索、插入、删除有很大的不同。
下面以最大堆(完全二叉树)为例来看堆的操作。
2 堆的搜索
从堆头开始,依次往下比较。
放一个简单的最大堆在这,并在最大堆中搜索2:
这种情况属于最差的情况,需要搜索整颗树。所以最差时间复杂度是O(n)。
如果在最大堆中搜索8,那么直接在堆头就可以返回结果:没有。因为堆头为最大值,而8大于堆头。这种情况属于最好的情况,时间复杂度为O(1)。
如果在最大堆中搜索6,情况如下: 搜索一半左右的节点后发现它大于某个节点的值,那么便不用往下再去搜索了,因为当前节点的值大于其孩子节点的值。这种情况属于平均情况,时间大约是O(n/2),也就是O(n)。
3 python实现堆
3.1 利用heapq模块
实际上,虽然python中没有独立的堆模块,但是拥有 ...
Stacking集成学习案例二:蒸汽量预测
蒸汽量预测
案例来源:天池大赛——工业蒸汽量预测传送门。
1 赛题背景
火力发电的基本原理是:燃料在燃烧时加热水生成蒸汽,蒸汽压力推动汽轮机旋转,然后汽轮机带动发电机旋转,产生电能。在这一系列的能量转化中,影响发电效率的核心是锅炉的燃烧效率,即燃料燃烧加热水产生高温高压蒸汽。
锅炉的燃烧效率的影响因素很多,包括锅炉的可调参数,如燃烧给量,一二次风,引风,返料风,给水水量;以及锅炉的工况,比如锅炉床温、床压,炉膛温度、压力,过热器的温度等。
2 赛题描述
经脱敏后的锅炉传感器采集数据(采集频率是分钟级别),根据锅炉的工况预测产生的蒸汽量。
3 数据说明
数据分成训练数据(train.txt)和测试数据(test.txt),其中字段”V0”-“V37”,这38个字段是作为特征变量,”target”作为目标变量。我们需要利用训练数据训练出模型,预测测试数据的目标变量,排名结果依据预测结果的MSE(mean square error)—— 评价指标。
4 案例分析和解决方案
4.1 导入包
123456789101112131415161718import warning ...
Stacking集成学习案例一:幸福感预测
幸福感预测
本案例基于天池大赛上的:“快来一起挖掘幸福感”,比赛链接:传送门
1 赛题背景
在社会科学领域,幸福感的研究占有重要的位置。这个涉及了哲学、心理学、社会学、经济学等多方学科的话题复杂而有趣;同时与大家生活息息相关,每个人对幸福感都有自己的衡量标准。如果能发现影响幸福感的共性,生活中是不是将多一些乐趣;如果能找到影响幸福感的政策因素,便能优化资源配置来提升国民的幸福感。目前社会科学研究注重变量的可解释性和未来政策的落地,主要采用了线性回归和逻辑回归的方法,在收入、健康、职业、社交关系、休闲方式等经济人口因素;以及政府公共服务、宏观经济环境、税负等宏观因素上有了一系列的推测和发现。
赛题尝试了幸福感预测这一经典课题,希望在现有社会科学研究外有其他维度的算法尝试,结合多学科各自优势,挖掘潜在的影响因素,发现更多可解释、可理解的相关关系。
2 赛题说明
赛题使用公开数据的问卷调查结果,选取其中多组变量来预测其对幸福感的评价,包括:
个体变量(性别、年龄、地域、职业、健康、婚姻与政治面貌等等);
家庭变量(父母、配偶、子女、家庭资本等等);
社会态度(公平、信用 ...