自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 问答 (1)
  • 收藏
  • 关注

原创 神经网络与深度学习——第14章 深度强化学习

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第14章 深度强化学习深度强化学习强化学习(Reinforcement Learning,RL),也叫增强学习,是指一类从与环境交互中不断学习的问题以及解决这类问题的方法,强化学习可以描述为一个智能体从与环境交互中不断学习以完成特定目标(比如取得最大奖励值)。和深度学习类似,强化学习中的关键问题也是贡献度分配问题(即一个系统中不同的组件(component)对最终输出结果的贡献或影响),每一个动作并不能直接得到监督

2024-05-29 15:49:22 632

原创 Pytorch入门需要达到的效果

都是常用的激活函数,

2024-05-28 20:04:31 370

原创 torch.matmul()的用法

【代码】torch.matmul()的用法。

2024-05-28 18:24:28 105

原创 Pytorch深度学习快速入门——P14-P33

本文参考小土堆教程视频。

2024-05-28 17:28:58 39

原创 PyTorch深度学习快速入门——P1-P13

当报错的时候移到那里,快捷修复,没导入包的时候好用想查看属性和方法的时候移过去按住,点击,即可跳转想查看方法要输入什么参数的时候使用读取图片,演示了一下的做法,继承了之后实现和方法,图片文件加目录为Tensorboard的使用在输入以下指令查看,可以自己定义文件夹名和端口号:均是在利用处理图片,然后用查看中间结果。Pycharm的断点失灵这个问题还没解决,不知道为什么断点无效,错误信息如下:是没问题的,但不知道为什么不行。

2024-05-26 19:37:49 929

原创 数据分析案例——电商平台数据集

数据来源于阿里云天池,为淘宝app平台在2014年11月18日-12月18日的数据。

2024-05-24 10:54:41 583

原创 第14章 数据分析案例——2012联邦选举委员会数据库

美国联邦选举委员会发布了有关政治竞选赞助方面的数据。其中包括赞助者的姓名、职业、雇主、地址以及出资额等信息。我们对2012年美国总统大选的数据集比较感兴趣。该DataFrame你可能已经想出了许多办法从这些竞选赞助数据中抽取有关赞助人和赞助模式的统计信息。我将在接下来的内容中介绍几种不同的分析工作(运用到目前为止已经学到的方法)。不难看出,该数据中没有党派信息,因此最好把它加进去。通过unique现在,通过这个映射以及Series对象的map这里有两个需要注意的地方。由于和。

2024-05-23 11:23:46 775

原创 第14章 数据分析案例——1880-2010年间全美婴儿姓名

2007年,一名婴儿姓名研究人员在她自己的网站上指出():近百年来,男孩名字在最后一个字母上的分布发生了显著的变化。sex year# 设置 seaborn 的默认风格sns.set()可以看出,从20世纪60年代开始,以字母"n"结尾的男孩名字出现了显著的增长。有了这个时间序列的DataFrame之后,就可以通过其plot。

2024-05-22 13:03:48 1151

原创 第14章 数据分析案例——MovieLens 1M数据集

本文介绍数据分析案例——MovieLens 1M数据集GroupLens Research(http://www.grouplens.org/node/73)采集了一组从20世纪90年末到21世纪初由MovieLens用户提供的电影评分数据。这些数据中包括电影评分、电影元数据(风格类型和年代)以及关于用户的人口统计学数据(年龄、邮编、性别和职业等)。基于机器学习算法的推荐系统一般都会对此类数据感兴趣。虽然我不会在本书中详细介绍机器学习技术,但我会告诉你如何对这种数据进行切片切块以满足实际需求。数据集含有来自

2024-05-21 22:09:17 959

原创 279. 完全平方数 & 322. 零钱兑换(最少硬币找零问题)

这个问题是动态规划中的“最小硬币找零问题”,其中目标是找到组成特定金额的最小硬币数量,每种硬币可以无限次使用。完全平方数是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。的完全平方数的最少数量。

2024-05-21 20:28:30 147

原创 0-1背包和完全背包问题

0-1背包是一个组合优化问题,在这个问题中,给定一组物品,每个物品都有一个重量和一个价值,在不超过背包重量限制的前提下,选择一些物品放入背包,以使得背包中物品的总价值最大,0-1背包问题中每个物品只能选取一次。

2024-05-21 20:11:32 229

原创 第13章 Python建模库介绍

是Python进行拟合多种统计模型、进行统计试验和数据探索可视化的库。包含许多经典的统计方法,但没有贝叶斯方法和机器学习模型。线性模型,广义线性模型和健壮线性模型线性混合效应模型方差(ANOVA)方法分析时间序列过程和状态空间模型广义矩估计下面,我会使用一些基本的工具,探索Patsy公式和对象如何使用模型接口。是一个广泛使用、用途多样的Python机器学习库。它包含多种标准监督和非监督机器学习方法和模型选择和评估、数据转换、数据加载和模型持久化工具。

2024-05-21 15:51:28 955

原创 第12章 pandas高级应用

和其它许多开源项目一样,pandas仍然在不断的变化和进步中。和本书中其它地方一样,这里的重点是放在接下来几年不会发生什么改变且稳定的功能。为了深入学习pandas的知识,我建议你学习官方文档,并阅读开发团队发布的文档更新。我们还邀请你加入pandas的开发工作:修改bug、创建新功能、完善文档。

2024-05-21 10:50:11 821

原创 第11章 时间序列

函数使你能够在移动窗口上应用自己设计的数组函数。唯一要求的就是:该函数要能从数组的各个片段中产生单个值(即约简)。比如说,当我们用计算样本分位数时,可能对样本中特定值的百分等级感兴趣。与前面章节接触的数据相比,时间序列数据要求不同类型的分析和数据转换工具。在接下来的章节中,我们将学习一些高级的pandas方法和如何开始使用建模库和。

2024-05-20 22:06:47 612

原创 第10章 数据聚合与分组运算

掌握pandas数据分组工具既有助于数据清理,也有助于建模或统计分析工作。在第14章,我们会看几个例子,对真实数据使用groupby。在下一章,我们将关注时间序列数据。

2024-05-20 16:26:29 583

原创 347. 前 K 个高频元素(用优先队列直接实现堆)

我们首先遍历原数组,并使用哈希表记录出现次数,每个元素需要。输入: nums = [1,1,1,2,2,3], k = 2。随后,我们遍历「出现次数数组」,由于堆的大小至多为。输入: nums = [1], k = 1。,请你返回其中出现频率前。:你所设计算法的时间复杂度。,因此每次堆操作需要。

2024-05-20 14:23:54 175

原创 215. 数组中的第K个最大元素(快速排序、堆排序)

快速排序的思路是先选取一个基准值,然后把小于基准值的放到基准值左边,把大于基准值的放到基准值右边,这样就会变成三部分(基准值左边部分、基准值、基准值右边部分),对基准值左右再递归进行这个步骤。代码分三部分:快速排序辅助分区部分、排序部分和主函数,分区部分就是把比基准值小的放左边,比基准值大的放右边,然后把基准值放中间,排序部分就是递归排序。以大根堆为例,这是一颗完全二叉树,父节点的值大于子节点的值,下标为。个最大元素的问题,事实上,在堆排序取最大值的过程中,已经体现出来了,在第一次取。

2024-05-19 22:47:19 1267

原创 第09章 绘图和可视化

本章的目的是熟悉一些基本的数据可视化操作,使用pandasmatplotlib,和seaborn。如果视觉显示数据分析的结果对你的工作很重要,我鼓励你寻求更多的资源来了解更高效的数据可视化。这是一个活跃的研究领域,你可以通过在线和纸质的形式学习许多优秀的资源。下一章,我们将重点放在pandas的数据聚合和分组操作上。

2024-05-19 11:54:10 1126

原创 第08章 数据规整:聚合、合并和重塑

现在你已经掌握了pandas数据导入、清洗、重塑,我们可以进一步学习matplotlib数据可视化。我们在稍后会回到pandas,学习更高级的分析。

2024-05-18 22:06:10 623

原创 第07章 数据清洗和准备

高效的数据准备可以让你将更多的时间用于数据分析,花较少的时间用于准备工作,这样就可以极大地提高生产力。我们在本章中学习了许多工具,但覆盖并不全面。下一章,我们会学习pandas的聚合与分组。

2024-05-18 19:25:41 853

原创 第06章 数据加载、存储与文件格式

访问数据通常是数据分析的第一步。在本章中,我们已经学了一些有用的工具。在接下来的章节中,我们将深入研究数据规整、数据可视化、时间序列分析和其它主题。

2024-05-18 15:41:02 345

原创 第05章 pandas入门

要使用pandasSeries和DataFrame。虽然它们并不能解决所有问题,但它们为大多数应用提供了一种可靠的、易于使用的基础。在下一章,我们将讨论用pandas读取(或加载)和写入数据集的工具。之后,我们将更深入地研究使用pandas进行数据清洗、规整、分析和可视化工具。

2024-05-18 09:51:09 405

原创 NumPy 矩阵库(Matrix)、线性代数

NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。一个m*n的矩阵是一个由m行(row)n列(column)元素排列成的矩形阵列。矩阵里的元素可以是数字、符号或数学式。

2024-05-17 20:03:58 698

原创 NumPy 迭代数组、数组操作

NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式。迭代器最基本的任务的可以完成对数组元素的访问。接下来我们使用 arange() 函数创建一个 2X3 数组,并使用 nditer 对它进行迭代。以上实例不是使用标准 C 或者 Fortran 顺序,选择的顺序是和数组内存布局一致的,这样做是为了提升访问的效率,默认是行序优先(row-major order,或者说是 C-order)。这反映了默认情况下只需访问每个元素,而无需考虑其特定顺序。

2024-05-17 17:06:54 589

原创 NumPy——切片和索引、高级索引、广播

ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。以上实例中,我们首先通过 arange() 函数创建 ndarray 对象。然后,分别设置起始,终止和步长的参数为 2,8 和 2。(终止部分和python的slice一样,默认是开区间)

2024-05-17 10:52:13 896

原创 NumPy数组

本章节我们将来了解 NumPy 数组的一些基本属性。NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。

2024-05-17 09:58:03 1088

原创 NumPy——Ndarray对象和数据类型

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。ndarray 对象是用于存放同类型元素的多维数组。ndarray 中的每个元素在内存中都有相同存储大小的区域。ndarray 内部由以下内容组成:一个指向数据(内存或内存映射文件中的一块数据)的指针。数据类型或 dtype,描述在数组中的固定大小值的格子。一个表示数组形状(shape)的元组,表示各维度大小的元组。

2024-05-16 21:42:20 811

原创 NumPy 介绍和安装

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。一个强大的N维数组对象 ndarray。

2024-05-16 21:03:13 494

原创 正则表达式

字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。所以我们判断一个字符串是否是合法的Email的方法是:创建一个匹配Email的正则表达式;

2024-05-16 20:40:16 823

原创 进程和线程

很多同学都听说过,现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。什么叫“多任务”呢?简单地说,就是操作系统可以同时运行多个任务。打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务,至少同时有3个任务正在运行。还有很多任务悄悄地在后台同时运行着,只是桌面上没有显示而已。现在,多核CPU已经非常普及了,但是,即使过去的单核CPU,也可以执行多任务。

2024-05-16 20:00:11 1413 1

原创 Python——IO编程

IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。比如你打开浏览器,访问新浪首页,浏览器这个程序就需要通过网络IO获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要首页的HTML,这个动作是往外发数据,叫Output,随后新浪服务器把网页发过来,这个动作是从外面接收数据,叫Input。所以,通常,程序完成IO操作会有Input和Output两个数据流。

2024-05-15 21:13:58 947

原创 错误、调试和测试

在程序运行过程中,总会遇到各种各样的错误。有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的。有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种错误可以通过检查用户输入来做相应的处理。还有一类错误是完全无法在程序运行过程中预测的,比如写入文件的时候,磁盘满了,写不进去了,或者从网络抓取数据,网络突然断掉了。这类错误也称为异常,在程序中通常是必须处理的,否则,程序会因为各种问题终止并退出。

2024-05-15 19:54:03 838

原创 面向对象高级编程

数据封装、继承和多态只是面向对象程序设计中最基础的3个概念。在Python中,面向对象还有很多高级特性,允许我们写出非常强大的功能。我们会讨论多重继承、定制类、元类等概念。

2024-05-15 15:55:23 537

原创 面向对象编程

面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。

2024-05-15 11:14:48 857

原创 Python的模块

我们推荐直接使用Anaconda,这是一个基于Python的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库,我们装上Anaconda,就相当于把数十个第三方模块自动安装好了,非常简单易用。下载后直接安装,Anaconda会把系统Path中的python指向自己自带的Python,并且,Anaconda安装的第三方模块会安装在Anaconda自己的路径下,不影响系统已安装的Python目录。第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;

2024-05-14 21:42:50 870 2

原创 函数式编程——返回函数、匿名函数、装饰器、偏函数

因为它是一个decorator,所以接受一个函数作为参数,并返回一个函数。本质上,decorator就是一个返回函数的高阶函数。,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,所以,闭包用起来简单,实现起来可不容易。的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。在上面的例子中,每次循环,都创建了一个新的函数,然后,把创建的3个函数都返回了。

2024-05-14 21:42:24 686 2

原创 函数式编程——高阶函数

直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。作用在list的每一个元素并把结果生成一个新的list”,所以,`map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的。是惰性计算的序列,所以我们可以用Python表示“全体自然数”,“全体素数”这样的序列,而代码非常简洁。从上述例子可以看出,高阶函数的抽象能力是非常强大的,而且,核心代码可以保持得非常简洁。key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。

2024-05-14 16:47:22 983

原创 Python的高级特性

而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?generator是非常强大的工具,在Python中,可以简单地把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator。这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代,比如。

2024-05-14 14:39:45 997 1

原创 Python的函数

自定义一个求绝对值的my_absif x >= 0:return xelse:return -x在Python交互环境中定义函数的时候,会出现...的提示,定义结束后要按两次回车重新回到>>>... else:...9如果把my_abs()函数定义保存为abstest.py文件,那么,可以在该文件的当前目录下启动Python解释器,用来导入my_abs()函数,abstest是文件名(不含.py扩展名)9。

2024-05-13 22:45:53 856

原创 循环、使用dict和set

set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错。这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。所以,对于不变对象来说,调用对象自身的任何方法,也不会改变对象自身的内容,相反,这些方法会创建新的对象并返回,这样就保证了不可变对象永远是不可变的。

2024-05-13 19:34:50 704

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除