作者文章归档:王半仙
核密度估计(kernel density estimation,简称KDE)是核平滑对概率密度估计的应用,即一种以核为权重估计随机变量概率密度函数的非参数方法。由Rosenblatt (1955)和Emanuel Parzen(1962)提出,又名Parzen窗(Parzen window)
核密度估计的实现:
- 假设$(x_1,x_2,...,x_n)$是来自同一个单变量未知分布中的独立样本
- 核密度估计可以根据这些样本推测出该分布的概率密度函数:
$$\hat{f}_h(x)=\frac{1}{n}\Sigma_{i=1}^nK_h(x-x_i)=\frac{1}{nh}\Sigma_
贝叶斯优化是一种通用的黑盒优化算法,不需要计算梯度便可快速解决最优化问题,贝叶斯优化适合处理目标函数计算成本高或求导困难的情况。贝叶斯优化最常用的场景是超参搜索(尤其是神经网络类算法,计算成本高,超参数还多)
1 贝叶斯优化与代理模型
贝叶斯优化(Bayesian Optimization,BO)
目的是要找到一组最优的超参组合x,能使评价/目标函数f(x)达到全局最优
由于评价/目标函数f(x)计算成
1 读写文本格式的数据
常见读取函数:
| 函数名称 | 简单描述 |
| ---------------- | ------------------------------------------------------------- |
| read_csv | 从文件、URL、文件型对象中加载带分隔符的数据,默认分隔符为逗号 |
| read_fwf |
pandas是后续数据清理和分析的重要工具
pandas是基于numpy构建的,但支持异构的数据(不同于numpy,pandas中不同列的类型可以是多样化的,比如日期、数值、字符串等)。pandas的功能定位可以对标Excel,但相比于Excel会更加地灵活强大
1 pandas数据结构介绍
pandas包含两个主要数据结构:Series和DataFrame
Series是一种类似于一维数组的对象,包含了列表、字典或一维numpy数组的很多特性;每个Series都是由一个名称(name)、一组index和一组values构
NumPy(Numerical Python)是Python用于数值计算的基础包
- 内置高效的多维数组
ndarray,提供快速向量计算和灵活的广播机制 - 具备常见的数学计算函数(线性代数、傅里叶变换等)和读写数据的能力
- 在一个连续的内存块中存储数据,节省内存并且计算效率高
- 提供动态、易用的接口,也很方便与其他常用编程语言对接
关于广播机制可参阅1.3 广播机制
1 多维数组
ndarray数组是一个通用的同构数据多维容器,即所有元素的类型应该是相
1 数据结构和序列
元组tuple,小括号定义,固定长度,不可变的Python序列对象
在Python的函数中,参数传入以及结果返回都是以元组的形式实现的
列表list,方括号定义,长度可变,内容可变的Python序列对象
常用的序列函数
enumerate()示例:for i, value in enumerate(tuple_or_list)sort():对序列或字符串进行排序zip():对多个序列进行成对地组合(最终长度取决于最短的输入序列)reversed():生成器,从后向前地迭代一个序列
字典dict(重要),大括号定义,以键值对
提示:本书定位是专注于数据处理与分析的工具书,不涉及类和面向对象编程等概念
所以作者也推荐了三本进阶书籍:《Python Cookbook》《Fluent Python》《Effective Python》
此处加一个 #待补充 方便以后提醒自己阅读这三本书
1 Python解释器
打开解释器:在终端输入python(没反应请检查一下环境变量配置)
退出解释器:输入exit()或快捷键ctrl+D
执行python脚本:python xxxxx.py
2 IPython基础
交互式编程:在终端输入ipytho
前言
《利用Python进行数据分析》第一版使用python2.7,出版于2012年
本书第二版使用python3.6,编写于2016年~2017年,针对pandas库的新特征进行更新
目前的笔记依赖于第三版,编写于2022年,并对pandas库的新特征进行更新
第三版在项目上尽可能与前两版保持一致,但是在细节有一些优化;同时第三版最大的一处变化是开放了在线版本,并通过git版本控制进行持久维护,查缺补漏(给作者点个赞)。
本书中所有涉及的代码和数