自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 机器学习--基于线性回归,减缩系数来“理解”数据

  如果数据的特征比样本点还多应该怎么办?是否还可以使用线性回归?答案是否定的。多元线性回归的算法,需要输入数据的矩阵是满秩矩阵。如果特征比样本点多,则说明输入矩阵不是满秩矩阵。  为了解决以上问题,我们可以引入 “岭回归”,“lasso法”,“前向逐步回归” 三种缩减方法。  缩减: 通过引入惩罚项,减少不重要的参数,这个技术在统计学中叫做缩减。岭回归  岭回归就是在矩阵XTXX^TXXTX上加上一个λI\lambda IλI从而使得矩阵非奇异,进而能对XTX+λIX^TX+\lambda IX

2020-09-23 15:46:07 377

原创 机器学习--线性模型

基本形式  给定由d个属性描述的示例 x=(x1;x2;...;xd)x = (x_1;x_2;...;x_d)x=(x1​;x2​;...;xd​),其中xix_ixi​是xxx在第i个属性上的取值,线性模型试图学的一个通过属性的线性组合来进行预测的函数,即    f(x)=w1x1+w2x2+...+wdxd+bf(x) = w_1x_1 + w_2x_2 +...+w_dx_d+bf(x)=w1​x1​+w2​x2​+...+wd​xd​+b一般用向量形式写成    f(x)=wTx+bf(x

2020-09-22 16:53:12 128

原创 常用排序代码解析--计数排序

计数排序计数排序是基于比较的排序算法,优势在于对一定范围内的整数排序时,它快于任何比较算法。计数排序对输入的数据有附加的限制条件。1.输入的线性表的元素属于有限偏序集S;2.设输入的线性表的长度为n,|S|=k(k表示几何S中元素的总数目为k),k=O(n)算法步骤:扫描整个集合S,对每一个Si∈S,找到在线性表中小于等于Si的元素个数T(Si)搜索整个线性表L,对L中的每一个元素Li, 将Li放在输出线性表的第T(Li)个位置上,并将T(Li)减1.代码实现:C++代码:void c

2020-09-18 15:50:27 141

原创 常用排序代码解析--基数排序

基数排序基数排序:是桶排序的扩展,将整数位数切割成不同的数字,然后按照每个位数分别比较算法步骤将所有待比较数值统一为同样的数位长度,数位较短的数前面补零从对低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序后,数列就变成一个有序序列代码实现c++代码实现:int max_bit(int num[], int len){ //获取数组中最大位数 int bit = 1; int radix = 10; for (int i = 0; i < len;

2020-09-18 15:43:07 299

原创 常用排序代码解析---堆排序

堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均是O(nlogn),它也是不稳定排序堆:堆是具有以下性质的完全二叉树:每个节点值都大于或等于其左右孩子节点的值,称为大顶堆;或每个节点的值都小于或等于左右孩子节点的值,称为小顶堆大顶堆:arr[i] >= arr[2 * i +1] && arr[2 * i + 2];小顶堆:arr[i] <= arr[2 * i + 1]&& arr[2 *

2020-09-18 15:36:13 75

原创 常用排序代码解析--快速排序

快速排序快速排序是一种高效且使用广泛的排序算法,使用分治法策略来把一个串行分为两个串行算法步骤:从数列中挑出一个元素,称为“基准”重新排序数列,所有元素比基准小的摆放在基准前面,所有元素比基准值大的摆放在基准的后面(相同的数可以放一边)。这个分区退出之后,改基准就处于序列的中间位置递归地把小于基准元素的子数列和大于基准元素的子序列排序代码实现:C++代码实现:split算法实现:使用单向指针对数组进行遍历,首先将数组首元素设置为基准元素,然后再将第二个开始的元素依次与基准元素比较voi

2020-09-18 15:26:00 151

原创 常用排序代码解析--归并排序

归并排序:归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治策略。将已有的子序列合并,得到完全有序的序列。即先使子序列有序,再使子序列段间有序。若将两个有序的表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。算法步骤:申请空间,使其大小为两个已排序序列之和,该空间用来存放合并后的序列设定两个指针,最初位置分别为两个已经排序序列的起始位置比较两个指针所指向的元素,选择相对小的元素放入合并空间,并移动相对较小元素的指针到下一个位置重复步骤3直到某一指针达到序列尾将另一个序

2020-09-18 14:59:11 125

原创 常用排序代码解析--冒牌排序

冒泡排序:冒泡排序是一种简单直观的排序方法,它重复的走访过要排序的序列,一次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来算法步骤:比较相邻的元素,如果第一个比第二个大(小),就交换它们对每一对相邻元素做同样的工作,从开始第一对,到结尾最后一对。在这一点,最后的元素应该会是最大(小)的数。针对所有的元素重复以上的步骤,除去最后一个持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数组需要比较代码实现:C++代码实现:void bubble_sort(int num[],

2020-09-18 11:21:24 203

原创 常用代码解析--选择排序

选择排序:选择排序是一种直观的排序算法算法步骤:初始状态:无序区为R[1…n]],有序区为空。从无序区R[1…n]中选择一个小(大)的记录R[k],将它与无序区第一个记录R[1]交换,使R[1…1]和R[2…n]分别变为记录个数增长加1的新有序区和记录减少1个的无序区第i趟排序,i趟排序重复上 1 的步骤,最后得到R[1…i-1]和R[1…n]的有序和无序区代码实现:C++代码实现: void select_sort(int *array, int length){ for (int

2020-09-18 11:13:45 93

原创 常用排序代码解析--希尔排序

希尔排序:希尔排序又被称为递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是一种非常稳定的算法。算法步骤:选择一个小于n的整数d1作为第一个增量,将所有数组全部记录分组(距离d1的倍数的记录放在同一组)先在各组内进行直接的插入排序取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1代码实现:C++代码实现:方法一:进行分组void shell_sort(int *array, int length){ int i, j, k, dk, temp; f

2020-09-18 11:03:57 192

原创 常用排序代码解析----插入排序

插入排序通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法步骤1.将第一个待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素看做无序序列。2.从头到尾一次扫描未排序序列,将扫描到的每个元素插入有序序列适当位置。(如果插入的元素与有序序列某个元素相等,则将待插入元素插入到相当元素的后面)代码实现C++代码实现:void insert_sort(int *Num, int len){ //插入排序 for (int i = 1; i &

2020-09-18 10:45:09 139

原创 机器学习--朴素贝叶斯算法

贝叶斯定理 贝叶斯定理:表达了一个事件发生的概率,而确定这一概率的方法是基于与该事件相关的条件先验知识。条件概率是指在事件B发生的情况下,事件A发生的概率。通常记为 P(A|B)      P(A|B) = P(A)∗P(B∣A)P(B)\displaystyle\frac{P(A) * P(B|A) }{P(B)}P(B)P(A)∗P(B∣A)​p(A):称为 “先验概率”,即事件B发生之前,对A事件概率的一个判断。P(A|B):已知B发生后A的条件概率,也由于得自B的取值而被称作A的 “后验概

2020-09-10 11:58:36 249

原创 机器学习--决策树

决策树  决策树是一类常见的机器学习方法,决策树是基于树结构来进行决策的。其学习目的是为了产生一棵泛化能力强,即处理未见未示例能力强的决策树,其基本流程遵循简单且直观的 “分而治之” 策略决策树流程示意图#mermaid-svg-1HxmpBKjpr3Rwvr2 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-sv

2020-08-27 15:52:51 397

原创 机器学习--K-近邻算法

K-近邻算法k-近邻算法采用测量不同特征值之间的距离方法进行分类工作原理1.存在一个样本数据集合(训练样本集),并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。2.输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。3.只选择样本数据集中前K个最相似数据,K是不大于20的整数。4.选择K最相似的数据,做为新数据的分类。使用公式欧氏距离公式:例如:点(0, 0)与(1,2)之间的

2020-08-25 14:33:41 126

空空如也

空空如也

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

TA关注的人

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