最近入坑黄佳老师的《AI应用实战课》,记录下我的学习之旅,也算是总结回顾。 今天是我们的第8站,一起了解下降维算法基本概念 以及 通过降维算法辅助商品品类分析的案例。 其中,最常见的用于降维的线性算法是PCA。 Step2 使用PCA算法进行降维 这里我们使用sklearn提供的PCA算法来将4个特征 降维到 2个特征,便于我们后续做可视化。 font.sans-serif']=['SimHei'] # 用来正常显示负号 plt.rcParams['axes.unicode_minus'] = False # 创建一个新的图形,设置大小为12x8 plt.figure(figsize=(12, 8)) # 在图上绘制降维后的数据点 plt.scatter(reduced_data[:, 0], reduced_data
一些关键点: 不稳定的排序算法 初始状态待排序序列基本有序,快速排序的时间复杂度为O(n^2),性能非常差 空间复杂度与递归树的高度成正比,平均来看是O(log2n) 划分函数的选择非常重要 优化,随机划分 QuickSort(a, l, p - 1); QuickSort(a, p + 1, r); } int main() { int a[] = {3, 1, 2, 4, 7, 0, 5, 8,
作者:TeddyZhang,公众号:算法工程师之路 Day 8, C/C++知识点走起~ 1 编程题 【剑指Offer】翻转链表 输入一个链表,反转链表后,输出新链表的表头。 nullptr; return newHead; } }; 如果不使用额外的空间的话,我们可以使用两个指针pre和next, 对链表相邻的两个节点进行交换调整,这才是面试官想要看到的算法
AI算法分类如下: 一、机器学习算法 监督学习 1、回归算法:线性回归和逻辑回归。 线性回归:进行直线或曲线拟合,一般使用“最小二乘法”来求解。 无监督学习 7、K均值算法核心:把样本分配到离它最近的类中心所属的类,类中心由属于这个类的所有样本确定。k均值算法是一种无监督的聚类算法。 二、深度学习算法 神经网络:监督学习 8、人工神经网络在本质上是一个多层的复合函数,它实现了从向量x到向量y的映射。由于使用了非线性的激活函数f,这个函数是一个非线性函数。 和其他类型的神经网络一样,循环神经网络是一个判别模型,既支持分类问题,也支持回归问题,并且支持多分类问题 三、大数据算法 数据挖掘&数据分析 推荐算法 四、一些算法本身并不算是一个机器学习算法 ,而是为了解决某个子问题而诞生的机器学习算法的子算法,如深度学习的神经网络的训练一般采用反向传播算法,梯度下降法。
感谢大家的观看 聚类算法概念 聚类算法是一种无监督学习方法,用于将数据集中的对象划分为若干个簇,使得同一个簇内的对象之间具有较高的相似性,而不同簇的对象之间具有较大的差异性。 聚类算法的应用场景: 商业选址:通过分析用户的地理位置信息,聚类算法可以帮助企业确定新店铺的最佳位置,以最大化覆盖潜在客户。 选择合适的聚类算法和参数对于解决特定问题至关重要。这类方法通常需要预先指定簇的数量,并通过迭代优化来找到最佳的数据划分。典型的划分方法包括K-means算法、K-medoids算法等。 代表性的算法有AGNES(自底向上的聚合算法)和DIANA(自顶向下的分裂算法)。 =8) n_clusters:开始的聚类中心数量 estimator.fit(x) estimator.predict(x) estimator.fit_predict(x)# 相当于先调用fit
有看过我上篇算法博客并且去做过的铁子们,对这道题的话应该就不会那么陌生了,因为这两道题 的解题思路有着异曲同工之妙~ -----------------------------------------begin ------------------------------------- 题目解析: 跟三数之和就多了一数,看过的铁子还是很容易理解的~ 讲解算法原理: 同三数之和一样,暴力算法肯定不得行的~ 所以就直接在暴力算法的基础上 ,我们借助在三数之和的算法原理来多加一层循环,便解决这道四 数之和啦~ 编写代码: class Solution { public: vector<vector<int>> fourSum(vector
常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。 本文将依次介绍上述八大排序算法。 算法一:插入排序 算法二:希尔排序 算法三:选择排序 算法四:冒泡排序 算法五:归并排序 算法六:快速排序 算法七:堆排序 算法八:基数排序 ---- 算法一:插入排序 ? ---- 算法二:希尔排序序 ? 希尔排序示意图 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 ---- 算法三:选择排序 ? 选择排序示意图 选择排序(Selection sort)也是一种简单直观的排序算法。 ---- 算法五:归并排序 ? 归并排序示意图 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。
量化的核心思想是将神经网络中的权重参数和计算从 FP32 转换为低精度的整型数,例如 FP16/FP8/INT8。通过这种转换,计算速度和内存利用效率得到了显著提升。 是一个 8 位无符号整数,和 q[i]一样。 对计算进行划分 虽然 QNNPACK 利用了像其他 BLAS 库一样的 PDOT 微内核,但其对具有 8 位元素的量化张量和移动 AI 使用案例的关注带来了非常不同的性能优化视角。 一般 M × N 的尺寸在量化神经网络中是 4 × 4、4 × 8 以及 8 × 8。 可以看到间接卷积算法性能会明显优于其他算法的性能。
牌的识别 识别和过滤,即要知道牌是什么牌,还要过滤出那几张牌是需要的牌 sequence = ['3', '4', '5', '6', '7', '8', '9', '10', it[1].count(4)>=1 or (it.count(len(sequence)-1)==1 and it.count(len(sequence)-2)==1): return 8
一、题目 1、算法题目 “将给定的字符串中的数字提取出来。” 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 但是最好还是使用算法去解决这道题,比如使用状态机去解决字符串的不同状态下的处理问题。
算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。 算法适用于少量数据的排序,是稳定的排序方法。 (算法见代码)将两部分算法合并到一起。 因此可以看出,归并排序算法比较占用内存,但却是效率高且稳定的排序算法。 不是稳定的排序算法。
需要通过 4 次乘法操作与 4 次加法操作,然后基于计算好的 m_1 ,m_2 ,m_3 ,m_4 的值,需要通过使用 4 次加法操作得到结果,所以这里一共需要 4 次乘法操作和 8 由于乘法操作比加法操作消耗的时间多,因此 Winograd 的 4 次乘法和 8 次加法是要比一般的矩阵乘法的 6 次乘法和 4 次加法要快的。 } & k_{2} & k_{3} & k_{5} & k_{6} & k_{7} & k_{9} & k_{10} & k_{11} \\ k_{4} & k_{5} & k_{6} & k_{8} & k_{15} \\ \end{bmatrix}\begin{bmatrix} w_0\\ w_1\\ w_2\\ w_3\\ w_4\\ w_5\\ w_6\\ w_7\\ w_8\ \\g_2\end{bmatrix}= \begin{bmatrix}r_0 \\r_1\end{bmatrix}\end{align*} 当然,变成了这样的形式就可以使用前文的推导方法,推导到出式(8)
算法是面试考察的重点,基础算法更是基础,只有打好了基础才可能在此之上深入学习。这里总结了最常见的排序算法,每个都进行了详细分析,大家可以好好研究吸收。 在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。 但希尔排序是非稳定排序算法。 所以shell排序是不稳定的排序算法。 关于稳定性: 稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序 不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序
ma.count(t)) ret += ma[t]; ma[sum]++; } return ret; } }; 4.运行结果 总结 今天是算法练习的第 8天。
8皇后问题是高斯提出来的一个问题,在一个8*8棋盘上,8个棋子不在同一行同一列,和同一个对角线上的摆放方式有几种,我们一般才有回溯加剪枝的方法求解。回溯剪枝法也是很多公司笔试题中简单题经常考的。 include <cstdio> #include <vector> #include <cstring> #include <cmath> using namespace std; int arry[8] [8]; //打印数组用的 int t = 0; //计算总共次数 void search_answer(unsigned char flag[],int n) { if(n == 8) ; memset(arry,0,sizeof(arry)); t++; } else { for(int i = 0; i < 8; search_answer(flag,n+1); } } } } } int main() { unsigned char flag[8]
以前 MySQL 的 join 算法只有 nested loop 这一种,在 MySQL8 中推出了一种新的算法 hash join,比 nested loop 更加高效。 小结 hash join 算法先选一个小表,放入内存的 hash table,然后扫描另一个表,与 hash table 匹配出结果数据。 参考资料: https://mysqlserverteam.com/hash-join-in-mysql-8/
常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。 本文将依次介绍下述八大排序算法。 算法一:插入排序 ? 算法二:希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 算法三:选择排序 ? 选择排序示意图 选择排序(Selectionsort)也是一种简单直观的排序算法。 算法五:归并排序 ? 归并排序示意图 归并排序(Mergesort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(DivideandConquer)的一个非常典型的应用。 1 算法八:基数排序 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。
关注:决策智能与机器学习,深耕AI脱水干货 ? Athalye等提出了EoT算法来解决第一个问题。 启发式防御算法由研究者通过实验获得,它们在实践中可以做到对一些特定的对抗攻击算 法具有良好的防御性能,但没有对防御性能给出理论性保障;可证明式防御通过理论证明,可以计算出在特定对抗攻击算法攻击下模型的最低准确度 Goodfellow等首先提出对抗训练,他们使用良性样本和通过FGSM算法生成的对抗样本一起训练神经网络,用于增强神经网络的鲁棒性;接着,提出了使用由PGD算法生成的对抗样本进行对抗训练的方法。 这主要是因为,攻击算法只要针对某一类防御生效即可, 然而一个有效的防御算法则需要去防御所有可能的攻击手段。 结束语 近两年来,针对深度学习算法的对抗攻击和防御技术迅速发展。
下面是6种负载均衡算法: 1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动删除。 fair(第三方) 可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配,Nginx本身默认是不支持fair的,如果需要使用这种调度算法 url_hash(第三方) 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率,Nginx本身默认是不支持url_hash的,如果需要这种高度算法 例如: 在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法 upstream backend { server
我们已经在本系列文章中已经学习了7种算法,其中一种是查找算法,六种是排序算法。本篇文章是基础算法系列的最后一章,我们将学习最后一个排序算法——归并排序。 让我们话不多说,开始学习吧~ ---- 归并排序 归并排序是一种效率较高的排序,它用到了我们算法设计方法里面的分治算法(在后面的新主题文章会讲述),在处理大量排序数据时,归并排序的效率比我们之前所学的冒泡排序 ,直接插入排序等算法要快很多。 所以我们可以在算法中预先定义一个temp数组,让每次合并的时候都共享这个数组。 它用到了我们算法设计方法里面的分治算法(将在新主题文章中讲述,敬请期待~)。你是否get到了呢~ヾ(◍°∇°◍)ノ゙