展开

关键词

KNN:容易理解的分类算法

KNN是一种分类算法,其全称为k-nearest neighbors, 所以也叫作K近邻算法。该算法是一种监督学习的算法,具体可以分为以下几个步骤 1. 第一步,载入数据,因为是监督学习算法,所以要求输入数据中必须提供样本对应的分类信息 2. 第二步,指定K值,为了避免平票,K值一般是奇数 3. 在scikit-learn中,使用KNN算法的代码如下 >>> from sklearn.neighbors import KNeighborsClassifier >>> X = [[0], [1], 3) >>> neigh.fit(X, y) KNeighborsClassifier(n_neighbors=3) >>> print(neigh.predict([[1.1]])) [0] KNN算法原理简单

21510

【面试】容易被问到的N种排序算法

你都知道哪些排序算法,哪几种是稳定排序? 小明:这个我有总结! 关于排序稳定性的定义 通俗地讲就是能保证排序前两个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。 那插入排序是稳定排序? 如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。 所以,归并排序也是稳定的排序算法。 基数排序(又称桶子法) 基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。 ? 由上可得,基数排序基于分别排序,分别收集,所以其是稳定的排序算法。 所以,堆排序不是稳定的排序算法。 总结 不稳定的排序: 选择排序、快速排序、希尔排序、堆排序 稳定排序:冒泡排序、插入排序、归并排序、基数排序

29140
  • 广告
    关闭

    腾讯云+社区系列公开课上线啦!

    Vite学习指南,基于腾讯云Webify部署项目。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    容易的方式学会单链表(Python实现

    直观的感受如下图: ? chains.png 我们知道,C语言中有指针,指针通过地址来找到它的目标。如此说来,一个节点不仅仅有它的元素,还需要有一个它的下一个元素的地址。 节点定义与Python代码实现 节点,用于构建单链表的一部分,有两个成员:元素成员、指针域成员。 元素成员:引用一个任意的对象,该对象是序列中的一个元素,下图中的a1、a2、... element): self.element = element # 给定一个元素 self.next = None # 初始设置下一节点为空 那么,什么是单链表 单链表 简单的形式就是由多个节点的集合共同构成一个线性序列 具体有哪些基础操作是我实现的呢?如下(当然,还有更多的操作可能使我没想到的,希望你能在评论中提出来。) = element # 给定一个元素 self.next = None # 初始设置下一节点为空 class Singly_linked_list: """Python实现单链表

    18420

    史上简单!冒泡、选择排序的Python实现算法优化详解

    冒泡排序、简单选择排序、直接插入排序就是简单排序算法。 评价排序算法优劣的标准主要是两条:一是算法的运算量,这主要是通过记录的比较次数和移动次数来反应;另一个是执行算法所需要的附加存储单元的的多少。 2、简单排序之冒泡法Python实现优化 原理图 ? ? 2.1、基本实现 ? 2.2、优化实现 思路:如果本轮有交互,就说明顺序不对;如果本轮无交换,说明是目标顺序,直接结束排序。 ? ,n-1之和n(n-1)/2 最好的排序情况是,初始顺序与目标顺序完全相同,遍历次数n-1 时间复杂度O(n^2) 3、简单排序之选择排序Python实现优化 选择排序的核心:每一轮比较找到一个极值( 3.1、基本实现 ? 3.2、优化实现——二元选择排序 思路:减少迭代次数,一轮确定2个数,即最大数和最小数。 ? 还可能存在一些特殊情况可以优化,但是都属于特例的优化了,对整个算法的提升有限。

    1.1K40

    谁能想到,求值的算法还能优化

    其实不然,其中的细节操作十分精妙,渐进时间复杂度肯定是 O(n) 无法再减少,但如果深究算法的执行速度,仍然有优化空间。 接下来,我们想办法优化这两个算法,使这两个算法只需要固定的1.5n次比较。 最大值和最小值 为啥一般的解法还能优化呢?肯定是因为没有充分利用信息,存在冗余计算。 分治算法涉及递归,时间复杂度仍然是1.5n,和上面这个算法效率一样,这里就不实现了。下个问题来用分治算法递归实现,看完之后你应该可以自己用分治思想解决这个问题了。 最大和第二大元素 这个问题咋分治呢? 有很多方法,比如说高中学过的「特征方程」,或者算法分析常用的「主定理」等等,对于这个问题很容易解,这里就直接写答案了: 可见分治法解决这个问题的比较次数基本上是1.5n,比一开始的算法最坏情况下2n的比较次数要好一些 PS:其实这个分治算法可以再优化,比较次数可以进一步降到 n + log(n),但是稍微有点麻烦,所以这里就不展开了。

    6320

    两个容易被人忽略的基本代码优化技术 博客分类: 经典文章转载 算法Android编程D语言工作

    Dobb’s Blogger 的Walter Bright曾写了一篇博文《 Overlooked Essentials For Optimizing Code 》,为我们总结了两个容易被人忽略的基本代码优化技术 注意,这两个技术并不是避免时机不成熟的优化。并不是把冒泡排序变成快速排序(算法优化)。也不是语言或是编译器的优化。也不是把 i*4写成i<<2 的优化。 或是问我“如果我写下i*4,编译器会把其优化为左移位操作 ?”。这个时候,我都会建议他们看看编译器的汇编码。这样的回答是不是很粗暴和无用? 出乎意料 地,benchmark 和算法代码生成一点关系也没有,完全就是long型整数的除法的问题。这暴露了在dmd的运行库中的long型除法的实现很差。修正后就可以提高速度。 第一 个也是最重要的,如果你优化算法没没有参与到你程序性能中的算法,那么你优化他只是在浪费时间和精力,并且还转移了你的注意力让你错过了应该要去优化的 部分。

    25930

    性能优化|讲的清楚的垃圾回收算法

    结论:使用标记-清除算法,清理垃圾后会发现存活对象分布的位置比较零散,如果有有大对象需要分配的话,很难有连续的空间进行分配;缺点:效率低、空间碎片 复制算法 为了解决内存碎片问题,jvm大师们研究出了复制算法 ,复制算法的原理是将内存空间分为两块,当其中一块内存使用完之后,就会将存活对象复制到另外一块内存上,将之前的内存块直接清理掉,这样就不会产生内存碎片的问题了。 使用复制算法,内存前后对比 ? ? 结论:解决了内存碎片的问题,但是会导致内存空间缩减一半,适用于存活对象少的区域。 标记整理算法 标记整理算法的步骤和标记-清除是一样的,不过最后多加一步就是整理,用来整理存活对象造成的内存碎片,使用标记-整理后内存前后对比: ? ? 分代收集算法 分代收集算法主要就是将内存分为两个年代,一个是年轻代,一个是老年代,在年轻代中使用复制算法,因为年轻代存活的对象少,比较适合使用复制算法,老年代使用标记整理算法,因为老年代垃圾比较少,所以适用于标记整理算法

    18420

    用Numpy实现优化算法比较

    要比较的优化算法列表 a. Stochastic Gradient Descent (One Line) b. Momentum c. 以上你可以看到两种优化方法的cost values是非常接近的。 Interactive Code ? I moved to Google Colab for Interactive codes!

    36820

    Python粒子群优化算法实现(PSO)

    PSO(PSO——Particle Swarm Optimization)(基于种群的随机优化技术算法) 粒子群算法模仿昆虫、兽群、鸟群和鱼群等的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断改变其搜索模式 np.array(fitness) plt.plot(t, fitness, color='b', linewidth=3) plt.show() 注意pN是指初始种群,一般来说初始种群越大效果越好 dim是优化的函数维度 ,常见的初等函数和初等复合函数都是1维 max_iter是迭代次数 本文的优化函数是x^2-4x+3,显然这个函数在x=2时取最小值-1 验证: 迭代图像: ?

    1.3K40

    MATLAB粒子群优化算法实现(PSO)

    PSO(PSO——Particle Swarm Optimization)(基于种群的随机优化技术算法) 粒子群算法模仿昆虫、兽群、鸟群和鱼群等的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断改变其搜索模式 -最后给出计算结果   plot(yy) title(['适应度曲线 ' '终止次数=' num2str(MaxDT)]); xlabel('进化代数'); ylabel('适应度') %------算法结束 ---DreamSun GL & HF----------------------------------- 优化的函数为ackley函数: MATLAB % ackley.m   % Ackley's **************************************************') disp('函数的全局最优位置为:') Solution=gbest' disp('最后得到的优化极值为

    40610

    优化后的Levensthein distance算法实现

    在上一篇文章Levenshtein distance算法实现中,笔者已经讲解了一般最小编辑距离的算法。 该算法采用动态规划,时间复杂度是O(m*n),m,n分别为两个字符串的长度,而空间复杂度也是O(m*n),如果使用int作为矩阵元素的类型,则矩阵的占用空间大小为sizeof(int)*m*n,假如两个字符串的长度均为 参考一个快速、高效的Levenshtein算法实现,笔者重新实现了一遍Levenshtein distance算法,其主要思想就是利用两个列向量来代替矩阵,每次只保存当前状态和上一次运算状态,算法结束后并不能获得该两个字符串任意子序列之间的最小编辑距离 算法采用Python实现,代码如下: #! cost v2[j] = minValue for j in range(n + 1): v1[j] = v2[j] print v2[n] 由于内存分配减少了,所以算法的效率也能提高一点

    1K50

    BFGS优化算法的C++实现

    gradNorm;     };     // class BFGS     #include <bfgs-impl.h> } // namespace splab #endif // BFGS_H   实现文件

    28320

    #Python干货#python实现——最优化算法

    二分法 函数详见rres,此代码使该算法运行了两次 def asdf(x): rres=8*x**3-2*x**2-7*x+3 return rres i=2 left=0 right right) / 2 print("左极限=%s,右极限=%s,极小值x=%s"%(left,right,b)) 左极限=0.45,右极限=0.775,极小值x=0.6125 收获: 这是我第一个实现的代码 学习完该算法以后,逻辑框架基本上就有了,剩下需要明确的就是对应的python的语言。 2.坑的就是逻辑。一开始逻辑没理清楚,或者说在代码上有疏漏,导致我将left和right放在了循环体里,结果可想而知。 就在一个半小时前,我成功搞完了最优化六大代码,纯手打,无外力。开心! 这是我第一组自己实现的python代码,就是数学公式用python语言组装起来。

    20350

    空间索引 - GeoHash算法及其实现优化

    目前空间索引的实现有 R树和其变种GIST树、四叉树、网格索引等。 网格索引不再多提,使用普通的hash表存储地点和风格之间的映射来实现。 今天要介绍的GeoHash算法实现的空间索引,虽然是以B树实现,但我认为它也借用网格索引的一部分思想。 GeoHash 原理 GeoHash 算法的原理说起来是很简单的,如下图: ? 同样的前缀意味着可以使用 B树 索引查找有相同前缀的点作为附近的点,GeoHash 算法便是这些同样的前缀上面做文章。 墨卡托投影 墨卡托投影,是正轴等角圆柱投影。 如果我们把地理位置点和其GeoHash编码存入数据库的话,我们要查找 附近两米点的点,只需要限定条件 geo_code like '3OCO4XJ7%'就行了; 边界点问题 可是简版的 GeoHash 主要步骤如下: 代码实现 实现中我将 GeoHash 的最大精度设置为26位,此时它的距离精度为 0.3m。

    1K90

    深度学习中的优化算法实现

    现在,再来看看求解优化问题的challenge,我们知道,绝大数深度学习中的目标函数都很复杂。因此,很多优化问题并不存在解析解,所以,我们就需要通过基于数值方法的优化算法来找到目标函数的近似解。 试想:如果以相同的学习率走了很多步后,终于走到了上图中的最低点附近,那么是不是很容易就能走到最低点了呢? 答案 :不行的。 6.1 算法实现 其实,我们只要实现一个mini-batch的sgd就行了。 Adagrad 在前面讲过的这些优化算法中,基本都是使用同一个learning_rate来更新所有的参数。 总结 有关优化算法,大体上就按照Aston zhang的讲解介绍这么多,希望大家在理解了基本的概念以及每一个优化算法背后的原理后,在使用gluon的时候,就能“自信”的在trainer中设置自己想要的优化算法

    31841

    近端策略优化算法(PPO):RL经典的博弈对抗算法之一「AI核心算法

    作者:Abhishek Suran 转载请联系作者 提要:PPO强化学习算法解析及其TensorFlow 2.x实现过程(含代码) 在本文中,我们将尝试理解Open-AI的强化学习算法:近端策略优化算法 在一些基本理论之后,我们将使用TensorFlow 2.x实现PPO。 为什么PPO ? 因为PPO可以方便地克服以下两个问题。 算法的步骤 游戏n步,存储状态,动作概率,奖励,完成变量。 基于上述经验,应用广义优势估计方法。我们将在编码部分看到这一点。 通过计算各自的损失,训练神经网络在某些时期的运行。 call(self, input_data): x = self.d1(input_data) a = self.a(x) return a 行动选择: 我们定义代理类并初始化优化器和学习率 很多时候,实现是正确的,代码可以工作,但是代理没有学到任何东西,仅仅因为张量的形状是不正确的,并且当对那些张量进行操作时给出了错误的结果 相关资料 您可以在这里找到本文的完整代码:https://arxiv.org

    2.2K20

    优化算法之模拟退火算法的matlab实现【数学建模】

    1、现代优化算法的由来 在寻找最优解的过程中,我们常常想到简单,直接的办法是能不能把所有解全部求出,然后再从这些解中寻找最好的那一个。 可如果用贪婪算法来求解,得到的往往解往往只是局部最优,难以达到全局最优。在这种基础上就有人提出,能不能通过降低解的精度来达到减少计算量,找到一个近似最优解。这就是现代优化算法的由来。 2、模拟退火算法 2.1 模拟退火算法的基本原理 模拟退火算法出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。 算法上的优化过程:则是当前解内部不断进行重新排列,并逐渐排列成实现目标函数最小值的解。在不断优化解的过程中需要摆脱贪婪算法的局限性,能有一定的概率跳出局部最优,达到全局最优。 3.2 问题分析 模拟退火算法实现主要可分为:解空间、新解的产生和目标函数三部分。

    1K41

    朴素贝叶斯算法优化与 sklearn 实现

    '] 属于非侮辱类 ['stupid', 'garbage'] 属于非侮辱类 这显然是不正确的,本文,我们就来解决这个问题,同时对算法进行优化并使用 sklearn 来实现算法的实践。 在代数中,ln(a * b) = ln(a) + ln(b),同时,自然对数可以保证运算趋势的正确性: 因此我们通过对数运算优化训练函数 trainNB0 与测试函数 classifyNB: def 朴素贝叶斯算法的优缺点 通过上一篇日志的介绍和本文的优化,我们了解了朴素贝叶斯算法的原理和应用,他是一种基于概率的分类器算法,可以用来处理不相干因子的多分类问题,例如根据词频进行文本分类等问题。 算法原理和实现简单,通过概率分类 2. 对小规模数据表现很好,适合多分类增量式训练任务 4.2. 缺点 1. 对输入数据的表达形式很敏感 2. 需要计算先验概率,分类决策存在错误率 3. 使用 sklearn 实现朴素贝叶斯算法 sklearn 提供了朴素贝叶斯算法实现类 — sklearn.naive_bayes.MultinomialNB。

    3610

    R语言实现贝叶斯优化算法

    我们主要讲下这个贝叶斯优化算法。其算法可以转化为一个形式的方程式: x=argmaxf(x) x∈R 此方程的主要意思是获得f(x)最大时的x值,同时x是R中的一个子元素。 算法主要分为两种子形式:一种Prior Function(PF),当我们不知道目标函数曲线是什么样的时候,我们就只能猜(概率)。主要的方式有含参、不含参、线性、非线形等。 基本的流程就是给一个先验的参数进行不断的优化寻找其最优的参数点。我们下面就直接看下在R语言中是如何实现的,我们需要用到包rBayesianOptimization。 Init_points 在贝叶斯优化拟合高斯过程之前,随机选取的点的个数。 N_iter 重复贝叶斯优化的总次数。 Acq 设置AC的子函数。 复杂模型的实现: library(xgboost) data(agaricus.train, package ="xgboost") dtrain <-xgb.DMatrix(agaricus.train

    1.4K20

    相关产品

    • 腾讯云 TI 平台 TI-ONE

      腾讯云 TI 平台 TI-ONE

      智能钛机器学习平台是为 AI 工程师打造的一站式机器学习服务平台,为用户提供从数据预处理、模型构建、模型训练、模型评估到模型服务的全流程开发支持。智能钛机器学习平台内置丰富的算法组件,支持多种算法框架,满足多种AI应用场景的需求。自动化建模(AutoML)的支持与拖拽式任务流设计让 AI 初学者也能轻松上手。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券