- 博客(25)
- 收藏
- 关注
原创 物以类聚,人以群分的KNN算法(上)
有天,你想着把你另外一套房子租出去,这样还能减轻一下生活的负担。但是你却不知道把房租定为多少比较合适。这时候你就在业主群里加了几个房子已经出租的房主,分别询问了他们的楼层高度、房屋面积、采光率等因素以及他们出租的价格。然后你找到两三个跟你房间差不多情况的,得知他们的出租价格都在a元左右,你就想着:得了,我的房子出租价格也定为a元吧。这种“根据相似房屋价格确定自己房屋价格”的思维方式,就是K近邻(K-Nearest Neighbors,KNN)算法的核心思想!
2025-12-17 13:38:07
670
原创 给数据“减肥”的魔法PCA
小明开了一家超市,但是呢效益却不怎么好。因为经常不是这个商品A进多了剩下,就是那个商品B进少了,给客户影响不好。这时候他想起来他有个朋友小军是数据分析师,就想让他帮忙看看到底是咋回事?小军听完情况说,你这是没有找到哪些是影响人们购物的关键因素啊。小明说太多了,我也不知道看哪个,有 商品价格、促销折扣、天气、季节。。。好几十个指标呢。这时小军说,其实很多因素都是相关的。比如天热,冰淇淋、扎啤销售都比较好,节假日时,包装纸、礼盒又销售很多。你只要找到几个少量的“超级变量”,它们可以捕捉数据中的大部分信息。
2025-12-03 13:33:22
1010
原创 可以看穿事物“本质“的LDA
假设你是一个机器人开发者,某天你倒了两杯饮料一杯绿茶一杯可乐。这时候你要教你的机器人如何快速的品尝出哪一杯是绿茶,哪一杯是可乐。你该怎么做呢?也许你会求教你的好朋友饮料专家A,A会列举一大堆数据告诉机器人。比如可乐的含糖量是多少、绿茶中的含糖量多少,咖啡因、香精等等各种含量。这时候你的机器人可能已经开始冒烟死机了,为什么呢?参数太多了它记不住。这时候你的吃货朋友B在旁边笑着说:你们干嘛这么折磨它,直接告诉它可乐有气泡,绿茶没有气泡不就好了吗?结果呢,机器人直接就指出了正确的答案。
2025-11-29 22:26:44
962
原创 机器学习之逻辑回归
逻辑回归虽然名字中有“回归”,但实际上是一种用于的经典算法。其核心思想是:对输入特征,建模其属于正类()的条件概率。该概率通过 Sigmoid 函数将线性组合映射到区间,并假设标签服从伯努利分布。在具体了解其之前,我们先了解几个定义。
2025-11-21 23:09:11
708
1
原创 房价预测神器----线性回归
线性回归是一种监督学习算法,它假设目标值与输入的特征之间存在近似的线性关系,通过输入特征值,可以预测连续型的目标变量(比如房价、温度、收入等)。比如:房价≈w1*房屋面积+w2*房屋年龄+...+b线性回归试图找到一条直线(高维下为超平面),使得预测值与真实值之间的差异尽量小。特征向量预测的连续值是偏置项;是权重,为了简化,通常令,把b也合入到权重向量中。
2025-11-14 14:11:00
1289
原创 梯度下降法
想象你现在站在山顶,想要找到这座山的最低点,你应该怎么做?这时候你肯定在想,我也不知道哪里最低,但是我周围只有背后看着最陡,那我就先往背后这个方向走一小步,毕竟这个方向下降的比较快,然后呢我再观察哪个方向最陡再去那个方向。在数学上,。
2025-11-10 21:37:47
331
原创 剑指Offer之 矩阵中的路径
请设计一个函数,用来判断在一个n乘m的矩阵中是否存在一条包含某长度为len的字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。问题,在二维字符矩阵中找到一条路径,这条路径上的字符恰好是给定的字符串。
2025-11-09 21:10:53
360
原创 特征工程之构造和筛选
特征工程在机器学习中是很重要的一步,往往能决定模型的最终性能。所以在日常使用过程中,不论采用什么方法,我们最终的目的都是构造出有效特征,让模型具有更好的解释性和泛化能力。
2025-11-08 23:39:42
907
原创 剑指Offer之 旋转数组的最小数字
有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。但是本题中有重复元素,因此就会出现 nums[mid]==nums[right]的情况,这时候无法判断最小值到底是在左边还是右边。题目要求时间复杂度O(logn),因此可以使用。≤10000,数组中任意元素的值: 0≤。因此我们缩小范围是可以的。
2025-11-07 21:03:40
420
原创 剑指Offer之 斐波那契数列
仔细分析,发现题目只要返回fib(n)的值,因此我们只要知道fib(n-1)和fib(n-2)两个值就好,之前的值不需要保存。因此我们可以用两个变量去保存当前的前两项,逐个向后推进即可。刚开始拿到题,特别是看到公式很多人反映都是用递归方法求解。要求:空间复杂度 O(1),时间复杂度 O(n) ,本题也有时间复杂度 O(logn) 的解法。大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。斐波那契数列是一个满足。
2025-11-01 21:01:48
204
原创 剑指Offer之 用两个栈实现队列
用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。的,可以使用两个栈来“逆转”元素的特性,第一个栈负责接收新元素,模拟队列的入队,第二个栈负责提供待出队的元素,模型队列的出队。使其表现出队列的特性。要求:存储n个元素的空间复杂度为。) ,插入与删除的时间复杂度都是。由上可知,栈与队列的特性是。
2025-10-28 20:18:44
292
原创 剑指Offer之 二叉树的下一个结点
解析:这个组装传入的子树根节点,其实就是整颗树,中序遍历{5,6,7,8,9,10,11},根节点8的下一个节点就是9,应该返回{9,10,11},后台只打印子树的下一个节点,所以只会打印9,如下图,其实都有指向左右孩子的指针,还有指向父节点的指针,下图没有画出来。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示。输入分为2段,第一段是整体的二叉树,第二段是给定二叉树节点的值,后台会将这2个参数组装为一个二叉树局部的子树传入到函数GetNext里面,用户得到的输入只有一个子树根节点。
2025-10-26 22:26:48
857
原创 剑指Offer之 重建二叉树
这样,问题就被分解成了两个更小的子问题:分别用左子树的前序和中序序列重建左子树,用右子树的前序和中序序列重建右子树。这是一个典型的递归过程。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。一旦我们知道了左、右子树包含哪些节点,从前序遍历序列中划分出左、右子树各自的前序遍历序列。给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。根据前序遍历找到的根节点,可以在中序遍历中找到该根节点的位置。
2025-10-22 21:31:06
515
原创 剑指Offer之 从尾到头打印链表
输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。当listNode为None,表示已经到了链表末尾,应该终止递归,开始返回。这样,最后进入递归的节点,就会最先被打印。0 <= 链表长度 <= 10000。的特性,因此可以利用栈来解决。其实递归的核心思想还是利用栈的。返回一个数组为[3,2,1]
2025-10-17 21:34:31
380
原创 剑指Offer之 替换空格
这道题看起来挺简单,特别是经常用python的同学,会直接用replace函数进行替换,一行函数就够了,其实这就跟题意有点不太相符了。因为一旦原地修改,有可能会覆盖修改后面内存中的内容,因此我们可以。请实现一个函数,将一个字符串s中的每个空格替换成“%20“。例如,当字符串为“We Are Happy“. 则经过替换之后的字符串为“We%20Are%20Happy“。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。空间复杂度O(1)。,直接扩展原空间或者申请新空间进行填充。
2025-10-15 21:46:24
192
原创 剑指Offer之 二维数组中的查找
本文介绍了一种在特殊二维数组中查找目标值的高效算法。该二维数组具有每行从左到右递增、每列从上到下递增的特点。算法从数组右上角开始搜索:若当前值等于目标值则返回true;若当前值小于目标值则下移一行;若当前值大于目标值则左移一列。这种方法的时间复杂度为O(n+m),空间复杂度为O(1)。
2025-10-13 21:16:25
306
原创 剑指Offer之 数组中重复的数字
数组中某些数字是重复的,但不知道有几个数字是重复的。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。首先我们可以考虑先将数组排序,然后遍历数组,如果发现一个数和它后面的数字相同,则是重复数字,但是由于排序时间复杂度是O(nlogn),因此我们不考虑这种方法。数组(列表):[2, 3, 1, 0, 2, 5, 3],比如0放在索引为0的位置,1放在索引为1的位置, 即。数组(列表):[2, 3, 1, 0, 2, 5, 3]
2025-10-11 21:02:10
275
原创 机器学习中常见的损失函数
Hinge损失函数是在支持向量机中常用的一种损失函数,用于二分类任务。它通过最大化分类间隔来调整模型,鼓励正确分类,并生成具有较大间隔的超平面。
2025-10-11 20:47:21
994
原创 过拟合及正则化
然而,当学习器为了学习训练数据的特性时,把训练样本自身的特性(这个特性仅仅是训练样本具有,而不是全体样本共有的,也就是样本噪声)也学习了进去,这就导致学习器在新的数据上的泛化误差特别大,这种现象就叫做过拟合。一般情况下,我们把学习器或者说模型的实际预测输出与样本的真实输出之间的差异叫做误差,在训练集上的误差称为训练误差或者经验误差,而在新样本上的误差称为泛化误差,显然我们希望得到具有较小的泛化误差的学习器。在模型进行训练的过程中,通过对模型的复杂度进行惩罚,从而提高模型的泛化能力。假设模型的损失函数为。
2025-10-08 19:20:29
426
原创 常见排序算法
本文总结了常见排序算法的性能特点及实现原理。主要分析了插入、希尔、选择、堆、冒泡、快速、归并、计数、桶和基数排序的时间复杂度、空间复杂度及稳定性。重点介绍了归并、快速、堆、冒泡、选择、插入和希尔排序的基本原理,并提供了Python实现代码。
2025-10-07 20:33:53
227
原创 python创建虚拟环境
本文介绍了在Windows和Linux(CentOS)系统下创建Python虚拟环境的方法。Windows用户需安装Python3.10后,在cmd中使用python -m venv命令创建环境并激活;Linux用户需先安装依赖库和Python3.10,配置环境变量后,同样使用python -m venv命令创建虚拟环境。两种系统下激活环境后,终端都会显示环境名(venv_name),随后即可安装所需Python包。该方法适用于需要隔离不同Python项目依赖的场景。
2025-10-06 20:02:42
497
原创 机器学习概论
想象一下,你和朋友在外郊游,踏青赏花。突然你朋友问你旁边那朵花叫什么,挺好看的。这时候你也不知道,你灵机一动说:有了,手机扫一扫就知道了。然后用手机扫了一下,接着就出来了这个花叫什么,生长特点、所需气候等等,这就是机器学习的魅力所在。它不再是传统意义上的编程,不需要我们一步步地写好规则,告诉机器应该怎么做,而是它自己可以从数据中发现规律和模式,这种能力本质上模拟了人类学习的某些核心特征。
2025-10-03 20:23:18
716
4
原创 Anaconda+Pycharm配置机器学习开发环境
我们知道,在实践机器学习算法时目前最主流的语言就是Python和R,建议大家可以直接安装anaconda,它是一个为方便使用python进行数据科学研究的一组软件包,集成了很多python常用的包,不用再一一下载,非常方便。Pycharm是一个Python的代码编辑器,下载专业版的可以使用Jupyter功能,如果是学生可以每一年申请免费使用专业版。大家也可以在输入cmd后将目录切换到我们开发的目录后再输入jupyter notebook,这样就可以愉快的进行机器学习项目开发了。
2023-05-09 22:32:28
595
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅