Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。 一,函数参数 ? ? ? ? ? ? 二,递归函数 ? 三,闭包函数 闭包函数:函数内定义了子函数,并最终return子函数 ? ? 四,匿名函数 lambda 匿名函数的一般语法是 : func = lambda 参数序列:返回值 ? 其功能是 将联系人的 name, phone_number, city ,birthday, job 等信息作为参数构造一个字典并打印之。 设置 name和 phone_number为位置参数。
学习此部分的目的:发现在没有单独的行动可以解决问题的时候,机器如何找到一个行动序列达到他的目标;在这部分中,通过讨论一些无信息的通用搜索算法,来比较各部分算法的优缺点; 1;问题求解的智能体 当智能体能够采用一个目标并针对这个目标得到满足而去行事 那么,我们如何去定义一个问题以及他的解? 一个问题其实可以形式化的定义为四个部分: 1:在起始的时候的初始状态。比如我们现在在北京,要导航去上海。我们现在在北京的这个状态,就可以是初始状态。 2:对于机器可采纳行动的可能行动的描述:最常见的一个形式就是定义一个后继函数。后继函数可以简单的理解为就是你这个行动可以达到的一个状态。比如说你去上海,起始函数是北京,那么后继函数就可以是上海。 3:目标测试:用来确定给定的状态是不是目标状态,有的时候可能得目标状态集合是非常明显的,测试只需要简单的检查给定的状态是否是目标状态的集中之一即可。 上述定义了一个问题,可以把他们集合在一起成为一个单一的数据结构。作为问题的求解算法的输入。问题的解就是从初始状态到目标状态的路径。最优解就是由路径的损耗函数进行度量。
细细一看,我们就明白了为什么这样写的! //int[] arr = new int[]{2,4,3,1}; //倒叙排序 //choiceSort(arr); //bubbleSort(arr); //顺序排序(java中已经定义好的一种排序方式 arr[j] = arr[j+1]; arr[j+1] = temp; } } } System.out.println("冒泡排序"); } } 折半算法 class IndexSort { public static void main(String[] args) { int[] arr = new int[]{2,4,5,7,9,23,43}; int index = binarySearch(arr,8); System.out.println(index); } //折半插入算法 public static int binarySearch
AI 本身就是软件, 作为 AI 时代的软件工程师,了解一些 AI 知识是很有必要的。 前面简单了解了大模型和专业模型的区别: 简单了解 GPT 模型 今天简单了解下机器学习的定义。 ,就可以使得这个定义变得形象。 比如“人机对弈”,机器学习采用每步落子位置对全局胜率的影响(度量P)来评价系统性能,在每一次对弈(任务T)中,基于机器学习算法的人机对弈软件,是根据历史棋局的对局数据(经验E),来修正用于根据棋盘局面推算每一步的最优落子位置的模型 在李航老师的《统计学习方法》一书中,就提出机器学习由“模型”“策略”和“算法”三个要素构成: 机器学习=模型+策略+算法 ● 模型是指机器学习所要产出的内容,它一般会以一个可被计算的决策函数或者条件概率分布函数的形式存在 ● 算法是指如何依靠历史数据,把正确的模型中涉及的未知参数都找出来。在确定寻找最优模型的策略后,机器学习的问题便归结为寻找出模型最优参数的优化的问题。
在Flask中定义简单的get和post路由 1. 定义接口 设定GET方法返回基于当天日期的随机词汇样本,POST方法接受一个日期参数,返回基于该日期参数的随机词汇样本: from flask import Flask, jsonify, request : app.run(host='0.0.0.0', debug=True) 两个路由: /vocab/daily 基于当前日期进行抽样(使用GET方法) /vocab/by-date 根据提供的日期进行抽样 flask run 访问 localhost:5000/vocab/daily 可以得到JSON响应 curl localhost:5000/vocab/daily 使用curl发送一个包含date参数的JSON sqlite:///vocab.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) # 定义数据库模型
iterable) { dynamicMessageBuilder.addRepeatedField(fieldDescriptor, entry); } };} 定义局部变量 final定义局部变量final向程序提示该变量不能被重新分配,这通常会导致更好的代码质量并有助于避免错误。 因此,推荐使用完全限定的导入语句,这样可以:明确代码中使用的类和成员的来源。避免命名冲突和意外的行为。提高代码的可读性和可维护性。 以后:完全限定的导入语句是指导入特定类或成员时使用完整的类名或成员名称。 import java.util.ArrayList;import java.util.List;这里的导入语句完全限定了要导入的类(ArrayList和List),并且清晰地表明了代码中使用的类的来源
目标函数:y=sin(x),求最大值 算法:基因遗传算法 语言:Python 思路: 使用二进制代表十进制,类似于使用[100100,111100]代表十进制的[36,60] 染色体交叉为:设置随机数, 单点交叉如[101100,110100],这就是上面两个染色体单点交叉的结果,第二个数字起 突变:0变为1,1变为0 选择下一代:轮盘赌,哪个个体适应度函数高,被选择的机会就更大 ? 个个体的二进制基因型种群 #本质为创造一个列表,其中嵌套列表 #species_origin_np,species_origin_list功能一样 #下面是创造种群的两种方式一种是使用np一种是使用list (十进制) temporary=translation(population) #一个基因代表一个决策变量,其算法是先转化成十进制,然后再除以2的基因个数次方减1(固定值)。 tmp_population = list(itertools.combinations(new_population, 2)) #产生交叉点的随机列表 tmp_point=[
第一步创建一个新的项目 APPLICATIONNAME : 表示创建子项目 ? 第二步:找到主项目的url 进行 include 分发式url 简单的说,就是将app里边的url放在这里。 在下来一步就是在app里边的url里写url一定要注意,导入app下边的views ? url配置好了,接下来就进行写views里边的函数了。 写函数时,后边一定要注意,添加一个request参数,应为前端传过来的 参数全部让request获取到了。接下来写函数里边的简单的登录验证返回子字符串的方法喽。 HTML一定要写进templates里边应为直接写进去,app的views里边的html会自动去templates里边去找。 ? Django简单一个验证就完成了。 method: 请求中使用的HTTP方法的字符串表示,(全部大写表示) GET: 包含所有Http GET参数的类字典对象。
一、机器学习中的参数估计问题 image.png 二、EM算法简介 在上述存在隐变量的问题中,不能直接通过极大似然估计求出模型中的参数,EM算法是一种解决存在隐含变量优化问题的有效方法。 EM算法是期望极大(Expectation Maximization)算法的简称,EM算法是一种迭代型的算法,在每一次的迭代过程中,主要分为两步:即求期望(Expectation)步骤和最大化(Maximization 三、EM算法推导的准备 image.png ? 注:若函数 ? 是凹函数,上述的符号相反。 3、数学期望 image.png 四、EM算法的求解过程 image.png image.png image.png 五、EM算法的收敛性保证 image.png 六、利用EM算法参数求解实例 //www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html) 2、数学期望(http://wenku.baidu.com/view/915a9c1ec5da50e2524d7f08
其实这背后隐含的原理就是关联分析,简单来讲就是啤酒和尿布之间存在着某种关联关系。关联关系时指从大规模的数据集中寻找物品之间的隐含关系,有时关联分析也可以称为关联规则学习。 的规则。 3、支持度 支持度是指数据集中包含某个项集的记录所占的比例。如项集 ? 的支持度为 ? 。 4、可信度 可信度是针对一条关联规则的,如关联规则 ? 的可信度为“支持度 ? 三、Apriori算法 1、Apriori算法 Apriori算法是关联分析的重要算法,Apriori算法主要是来寻找频繁项集,采用的方法是查找出所有的可能,如下图: ? 这里就会出现一个问题,如果物品的数目变大,这种组合是呈现指数级的增长的: ? ,其中 ? 为物品的数目,如何避免这样的指数增长对于Apriori算法的成功具有很重要的意义。 (摘自《机器学习实战》) 四、使用Apriori算法发现频繁项集 在理解了上面的过程后,我们不难发现计算过程就是不断查找项集。首先,定义一个被称为最小支持度的量,当成阈值使用。
一、机器学习中的参数估计问题 在前面的博文中,如“简单易学的机器学习算法——Logistic回归”中,采用了极大似然函数对其模型中的参数进行估计,简单来讲即对于一系列样本 ? 二、EM算法简介 在上述存在隐变量的问题中,不能直接通过极大似然估计求出模型中的参数,EM算法是一种解决存在隐含变量优化问题的有效方法。 EM算法是期望极大(Expectation Maximization)算法的简称,EM算法是一种迭代型的算法,在每一次的迭代过程中,主要分为两步:即求期望(Expectation)步骤和最大化(Maximization 三、EM算法推导的准备 1、凸函数 设 ? 是定义在实数域上的函数,如果对于任意的实数 ? ,都有 ? 那么 ? 是凸函数。若 ? 不是单个实数,而是由实数组成的向量,此时,如果函数 ? //www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html) 2、数学期望(http://wenku.baidu.com/view/915a9c1ec5da50e2524d7f08
一、关联分析 最初接触到数据挖掘的朋友肯定都听说过这样的一个案例:啤酒和尿布。大意是将啤酒和尿布放在一起的销售会提高。 其实这背后隐含的原理就是关联分析,简单来讲就是啤酒和尿布之间存在着某种关联关系。关联关系时指从大规模的数据集中寻找物品之间的隐含关系,有时关联分析也可以称为关联规则学习。 image.png 三、Apriori算法 1、Apriori算法 Apriori算法是关联分析的重要算法,Apriori算法主要是来寻找频繁项集,采用的方法是查找出所有的可能,如下图 image.png 2、Apriori原理 如何避免指数级增长,我们应该尽量去减少一些不必要的结点,Apriori原理是说如果某个项集是频繁的,那么他的所有子集也是频繁的。 其逆否命题为:如果一个项集是非频繁的,那么他的所有超集也是非频繁的。使用这个原理就可以避免指数级增长,原理如下图所示: ? 四、使用Apriori算法发现频繁项集 image.png ?
算法是基础,小蓝同学准备些总结一系列算法分享给大家,这是第9篇《散列表》,非常赞!希望对大家有帮助,大家会喜欢! 前面系列文章: 归并排序 #算法基础#选择和插入排序 由快速排序到分治思想 算法基础:优先队列 二分查找 二叉树查找 平衡查找树概述 平衡树之红黑树 散列表是我们比较简单的一种查找算法,是用这种建议方法的扩展并能够处理更加复杂的类型的键 我们可以通过算数操作将键转化为数组的索引来访问数组中的键值对。 使用散列表的查找算法分为两步 第一步用散列函数将被查找的键转化为数组的一个索引。 基于线性探测法来处理碰撞问题,开放寻址法中最简单的是线性探测法:当碰撞发生时即一个键的散列值被另外一个键占用时,直接检查散列表中的下一个位置即将索引值加1,这样的线性探测会出现三种结果: 命中,该位置的键和被查找的键相同 三、应用 散列表的应用是使用最广泛的算法之一 信息安全领域: Hash算法 可用作加密算法。
前言基本的一些使用已经了解,那么就做个简单的加法来练手吧!界面设计控件添加在工具箱中选择Edit control和Static Text两个控件,分别设置为数据输入、符号“+、=”、数据显示框。 添加变量设置好简单的控件,需要给控件定义变量名称。鼠标右击控件,选择添加变量。将我们需要输入、输出显示的控件进行变量名称命名。这一步是为了程序后台内部绑定。添加事件鼠标右击控件,选择添加事件。 这里用到CEdit 是提供了标准编辑控件的功能,可以获取控件的指针,对文本控件进行输入和显示编辑。通过CEdit 的GetWindowText就是在对应的控件获取对应的字符串,也就是我们的输入。 通过CEdit 的SetWindowText就是放置对应的字符串在对应的控件中,也就是我们的输出。 总结简单的一个加法器把控件、消息映射等基本功能用起来,后期可以开发更多新玩意!
在学习了ArrayList之后,我们可以通过写一个洗牌算法来练习练习。 一副扑克牌是由花色和数字及字母组成,我们这里用1~13的数字来代替所有字母和数字 我们用一个Card类来定义一个简单的扑克牌模型,包含两个成员变量来表示花色和数字,一个成员方法重写了toString方法 } @Override public String toString() { return "{" + suit + rank + '}'; } } 再定义一个 cardList.set(j,tmp);//把牌i(tmp)放到牌j的位置 } 扑克牌洗好之后,我们就可以玩牌了,我们制定一个简单规则,三个人玩牌,轮流抽一张牌,各抽5张: :"+hand.get(i)); } System.out.println("剩下的牌:"+cardList); } } 运行效果: 通过这个简单的洗牌算法,让我更好理解到了如何在程序中引入随机性
2013年4月10日 php /* * 周期串,确定一个周期串的最小周期 */ $str = "abcabcabcabcabc";//PHP中字符串可以直接用作数组 $len = strlen($str > 2013年4月28日 php /* * a,b两个数字相加,计算出a+b中进位的次数 */ $a = 9999; $b = 72292228; $num = 0; $length[] = $b); $len = max($length); $c = 0; for ($i = 0; $i < $len; $i++) { $c = $a % 10 + $b % 10 + $c > 9
注意 (1)文中4.6.3的随机快排算法的链接在这里生成随机数(关于快速排序) (2)第一份代码中return randSelect(A, p + 1, right, K-M)为什么是K-M? 首先,题目要找第K大的数,因此randSelect的第四个参数可能是K,但同时第二个参数是p+1(也即主元后一个位置),因此第四个参数为了匹配第二个参数需要减去M,即K-M。 (3)更正:第二份代码中p的定义最后少加一个括号,即...left)); 版权所有:可定博客 © WNAG.COM.CN 本文标题:《简单随机算法》 本文链接:https://wnag.com.cn/
思想: 依次遍历数组的每一个元素,在该元素之后寻找一个比其小/大的一个最小值/最大值,记录下标。退出循环时进行交换。 注意点: 不稳定的排序算法 代码: #include <stdio.h> typedef int bool; #define true 1 #define false 0 void swap(int swap(&a[minIndex], &a[i]); } } } int main() { int a[] = {3, 1, 2, 4, 7, 0, 5, 8, 6, 9}
作者:TeddyZhang,公众号:算法工程师之路 Day 9, Python知识点走起~ 1 编程题 【剑指Offer】树的子结构 输入两棵二叉树A,B,判断B是不是A的子结构。 struct TreeNode *right; 6 TreeNode(int x) : 7 val(x), left(NULL), right(NULL) { 8 } 9} 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 思路: 这个使用递归的思路就很简单,一般二叉树用递归的方法很多,比如二叉树的遍历也可以使用递归的方法。 我们首先交换左右子树的位置,因此使用tmp用于转换存储,然后递归转换就可以了!并且递归最重要的就是终止条件,这里的终止条件也很简单,递归到叶节点的儿子,则return,结束递归!
是一种只能定义类型,而不能产生对象的类,所以定义了抽象类则必须有子类的出现. 抽象类的好处在于能够明确地定义子类需要覆写的方法 抽象类需要使用abstract声明. 抽象类里可以实现抽象方法,该方法特征在于:只有声明,并没有方法体(所以子类必须全部覆写,并且子类不能为抽象类) 比如图形(Shape)类, 就是一个抽象的概念,因为我们无法计算这个“图形”的面积,所以它的成员函数 area()是空的。 static void main(String args[]) { //Shape s = new Shape(); //如果定义抽象类 : 抽象类可以存在构造方法,用来初始化抽象类的属性, 抽象类不能使用final定义, 2.抽象内部类定义 在java中,如果我们抽象类的子类只有一个的话,则可以将它封装为抽象内部类里,从而为用户隐藏了这个无需知道的类