- 博客(30)
- 收藏
- 关注
原创 岭回归(Ridge Regression)
岭回归出现的原因:为了求得参数w,也可以不用迭代的方法(比如梯度下降法对同一批数据一直迭代,可以采用标准方程法一次性就算出了w = (XTX)-1XTy ,但是如果数据的特征比样本点还多,则计算(XTX)-1就会出错,因为(XTX)不是满秩矩阵(有些行可能全是0),所以不可逆,为了解决这个问题,引入了岭回归的概念:岭回归最早是为了处理特征多于数据的情况,现在也用于在估计中加入偏差,从未得到更好的估计,同时也可以解决多重共线性的问题,是一种有偏估计,没有正则项就是一个无偏估计...
2021-12-12 22:40:48 3220
原创 过拟合、正则化
过拟合(overfitting)拟合:过拟合:训练集里面预测率100%,在测试集里面表现很差,就称为过拟合.防止过拟合:1.减少样本特征2.增加数据量3.正则化(regularized)正则化(regularized)由图可以看出,前部分为代价函数,后面加上一个正则项,正则项系数越大,说明正则项越重要,反之则说明不重要...
2021-12-12 21:54:26 792
原创 特征缩放,交叉验证
数据归一化:所谓数据归一化就是把数据的取值范围处理至0-1或者-1-1之间防止窄长图任意数据转化为0-1之间newValue = (oldValue - min)/(max-min)任意数据转化为-1-1之间newValue = ((value-min) / (max - min) - 0.5)*2均值归一化:newValue = (oldValue-u)/s其中u为平均值 s为方差(1,3,5,7,9)u = (1 + 3 +5 + 7+ 9) / 5 = 5s = ( (1-5
2021-12-12 21:29:02 667
原创 Java kmp算法记录
public class kmpTest { public static void main(String[] args) { String s1 = "StrStqString"; String s2 = "String"; int i = IndexOfKmp(s1 , s2); System.out.println(i); } /** * 朴素算法 * @return */
2020-10-21 10:48:58 141
原创 插值查找
//你已经一无所有了 static int search(int [] arr , int i){ int len = arr.length; int ln = 0 , rn = len - 1 , mid; while(ln <= rn){ mid = ln + (i - arr[ln]) / (arr[rn] - arr[ln]) * (rn - ln); if(arr[mid] == i){.
2020-07-31 15:25:18 141
原创 斐波那契查找
static void Fibonacci(int [] farr) { int len = farr.length; farr[0]=0; farr[1]=1; for(int i=2;i<len ;++i) farr[i]=farr[i-1]+farr[i-2]; }static int search(int [] arr , int n , int key){ int l.
2020-07-31 15:24:26 141
原创 二分查找
static int search(int [] arr , int i){ int len = arr.length; int ln = 0 , rn = len - 1 , mid ; while(ln <= rn){ mid = ln + ( rn - ln ) / 2; if(arr[mid] == i){ return mid; }
2020-07-31 15:23:11 129
原创 快速排序
static void quick(int [] arr , int start , int end){ if(start >= end){ return; } int mid = pr(arr , start , end); quick(arr , start , mid - 1); quick(arr , mid + 1 , end); } private static in
2020-07-31 15:20:17 132
原创 选择排序
static void sort(int [] arr){ int len = arr.length; for(int i = 0 ; i < len - 1 ; ++i){ int tmp = i; for(int j = i + 1 ; j < len ; ++j){ if(arr[j] < arr[tmp]){ tmp = j;
2020-07-31 15:17:49 123
原创 希尔排序
/** * 希尔排序 * @param arr */ static void sort(int [] arr){ int len = arr.length; int start = len / 2; for( ; start > 0 ; start /= 2){ for(int i = start ; i < len ; ++i){ int j = i;
2020-07-31 15:17:17 94
原创 直接插入排序
static void sort(int [] arr){ int len = arr.length; int i , j , tmp; for(i = 1 ; i < len ; ++i){ tmp = arr[i]; for(j = i - 1 ; j >= 0 && arr[j] > tmp ; --j){ arr[j+1] = arr[j]
2020-07-31 15:16:47 86
原创 基数排序
static void sort(int [] arr){ int len = Math.max(10 , arr.length); int max = Integer.MIN_VALUE; for(int v : arr){ max = Math.max(max , v); } int n = 1 ; int k = 0 ; int [][] bucket = new i
2020-07-31 15:16:17 92
原创 桶排序
static void sort(int [] arr){ int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for(int v : arr){ max = Math.max(max , v); min = Math.min(min , v); } int len = arr.length; //分
2020-07-31 15:15:13 161
原创 计数排序
static void sort(int [] A , int [] B){ int max = Integer.MIN_VALUE; for(int v : A){ max = Math.max(v , max); } int k = max + 1; int [] C = new int[k]; for(int v : A){ C[v] += 1; ..
2020-07-31 15:14:14 105
原创 堆排序
上篇建立最大堆接下来开始堆排序 , 以及优化之前代码static void maxheapity(int [] num , int i , int length){ int ln = 2 * i + 1; int rn = 2 * i + 2; int largest = 0; if( ln < length && num[ln] > num[i]){ largest = ln;
2020-07-16 14:41:08 102
原创 堆排序 -- 建堆(最大堆)
首先要熟悉堆的一个重要性质:max-Heapify(每一步都从左子树、右子树、num[i]选择最大值作为根结点 , 如果第一步num[i]为最大值 , 那么以i为根结点的子树已经是最大堆了,如果左子树亦或者右子树作为最大值 , 那么推测该节点作为跟的子树可能违反最大堆的性质, 因此需要继续递归) static void max-Heapify(int [] num , int i ){ int ln = 2 * i + 1; int rn = 2 * i + 2;
2020-07-06 21:59:44 752
原创 归并排序 —— 递归和非递归版本
递归版本: /** * 递归 归并排序 * @param num * @param start * @param end */ public static void merge_sort(int [] num , int start , int end){ if(start == end) { return; } int mid = start + ((end - start
2020-07-02 09:11:58 182
原创 leetcode 分治策略最大子数组问题
分三种情况:1.完全位于nums[start,mid]中 , 因此start <= i <= j <= mid;2.完全位于nums[mid+1 , end]中,因此mid < i <= j <=end3.跨越了中点 , 因此start <= i <= mid <= j <= end;class Solution { public int maxSubArray(int[] nums) { return megreM
2020-07-01 22:20:33 140
原创 设计模式六大原则
设计模式六大原则:总原则:开闭原则扩展开放 ,对修改封闭 。在程序需要拓展的时候,不能修改原有的方法,很大可能给旧代码带来错误,所以需要扩展方法,实现热插拔的效果。想要达到这一点,我们需要使用接口和抽象类。用抽象构建框架,用实现扩展细节。其实遵循六大原则就是遵循开闭原则,只要六大原则遵循好了,设计出的软件自然就是遵循开闭原则的。如何使用开闭原则:1.抽象约束(抽象对一组事物的描述没有具体的实现,也就充满多变性,可以跟随需求而变化,因此通过抽象约束可以约束一组行为,并且可以扩展开放)2.封装变化。
2020-06-14 21:32:20 129
原创 SpringMvc入门程序
JAVAEE的体系结构包括四层,分别是应用层,Web层,业务层,持久层。SpringMvc是Web层的框架,mybatis是持久层框架,spring是业务层的框架使用Springmvc的好处很多应用程序的问题在于处理业务数据的对象和显示业务数据的视图之间存在紧密耦合,通常,更新业务对象的命令都是从视图本身发起的,使视图对任何业务对象的更改都有高度敏感性,而且,当多个视图依赖于同一个业务对象时...
2019-08-12 00:28:29 119
原创 关于spring
关于springSpring的三大核心技术:IOC(控制反转), DI(依赖注入),AOP(面向切面编程,是面向对象的补充)IOC(自己的理解)启动的时候通过xml或者注解扫描,把配置好的类通过反射实例化,然后不用用户手动创建对象,把创建对象的控制权交给spring容器,效果就像是控制权反转了一样,从用户到spring容器。DI其实这个就是参数版本的IOC我觉得这两个应该算一个,所有配...
2019-08-11 20:36:16 217
原创 mybatis- resultMap
resultTyperesultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致。 如果sql查询到的字段与pojo的属性名不一致,则需要使用resultMap将字段名和属性名对应起来,进行手动配置封装,将结果映射到pojo中resultMapresultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括po...
2019-08-11 20:31:25 102
原创 mybatis - 动态sql
动态sqlMyBatis 的强大特性之一便是它的动态 SQL,可以动态拼接sql,传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都会导致错误,其主要元素有:ifwhere trimsetforeachchoose(when,otherwise)bind(1)if标签<select id="findUserById"...
2019-08-11 20:12:54 81
原创 关于Mybatis框架
关于MyBatis壹-简介Mybatis是一个优秀的持久层框架,他对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费经历,去处理jdbc的过程代码(例如注册驱动,创建Connection,创建Statement,手动设置参数,结果集检索等),通过XML或者注解的方式,将要执行的各种statement(statement,preparedStatement.Call...
2019-08-11 18:51:47 298
原创 关于hexo搭建博客+部署到github
环境安装1.安装Node.jshttps://nodejs.org/en/2.安装Githttps://git-scm.com/download/开始操作打开cmd测试node -v是否完成node.js的下载可以下载一个镜像源npm install -g cnpm --registry=https://registry.npm.taobao.org全局安装hexocnpm...
2019-07-29 10:52:26 238 2
原创 关于最近一周学习的oracle
文章目录创建用户授予权限创建表空间SQL数据类型创建表和约束数据操纵语言(DML) (其实和别的数据库基本一样)操作符集合运算连接查询伪列函数序列视图索引创建用户orcale中,一般不会轻易在一个服务器上创建多个数据库,在一个数据库中,不同的项目由不同的用户访问,每个用户拥有自身创建的数据库对象,因此,用户的概念在orcale至关重要。创建用户的语句:CREATE USER 用户名 IDE...
2019-07-27 19:15:53 148 1
转载 关于JSON解析
JSON简介https://blog.csdn.net/miaozhenzhong/article/details/52...
2019-07-27 00:59:05 191 2
原创 关于AJAX和JSON解析
关于使用AJAXAJAX通过 HTTP 请求加载远程数据。AJAX请求适合提交数据并展示后台返回的处理信息的时候。AJAX可以在不刷新页面的情况下执行数据请求或者提交数据等操作。AJAX好处使用AJAX,用户对Web的体验会更“敏捷”:数据提交页面不会闪屏;页面局部更新速度快; 网络带宽占用低;用法通常将ajax写于js方法中,定义事件,让元素触发,触发之后就会有数据产生给服务端...
2019-07-27 00:52:50 120
原创 EasyUI实现树状下拉框
部门表的树状下拉框实现public class DepartmentForTree { private int id; private String text; private int pid; private List<DepartmentForTree> children = new ArrayList<DepartmentForTree>();...
2019-07-26 23:42:27 1705 1
原创 蒋蒋的第一篇博客
蒋蒋的第一篇博客第一篇博客,纪念留爪学JAVA也有两年了,两年说长不长说短不短,村上春树说,我一直以为人是慢慢变老的,其实不是,人是一瞬间变老的。大一的时候不太爱学习,但是在大一升大二的一个失眠的晚上,想通了很多事情,改变了我的思想,是时候该为以后努力了,这种变化仿佛是一夜之间完成的。从此班里多了一个爱编程的少年。从那至今,变化很大,从一个打一个界面类都难以抉择的小菜鸟,到现在几乎可以一个...
2019-07-26 22:56:02 181 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人