自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 神经网络 - 1.原理介绍

以下内容来自于对吴恩达深度学习的个人总结,有兴趣的小伙伴可自行前往学习该课程。神经网络分两篇,第一篇是原理介绍,第二篇是python实现神经网络。1. 相关知识点:深度学习的兴起、sigmoid函数、梯度下降在此文中,由于神经网络涉及到激活函数和梯度下降,我只在这里做一个简单介绍。如想了解更多信息,请自行查阅相关文章。由下图可以看出,规模驱动着深度学习的发展:(1)随着训练数据...

2018-11-21 18:18:51 538

原创 机器学习之统计和概率论

一、基本数学概念其中四分位数通常用以判断数据集中的异常值。偏态和峰态可用于判断该分布是不是正态分布。二、概率分布概率分布分为离散概率分布和连续概率分布,在python中通过scipy.stats库实现。  离散概率分布:PMF概率质量函数  连续概率分布:PDF概率密度函数详情参阅官方文档:https://docs.scipy.org/doc/scipy/refer...

2018-08-01 20:46:41 677

原创 LeetCode - mysql【178. 分数排名】

题178. 分数排名思路:查找比每个得分大于等于的个数,就是得分的排名。SELECT s1.Score,COUNT(DISTINCT s2.Score) AS Rank1FROM Scores AS s1,Scores AS s2 WHERE s1.score<= s2.score输出结果:这是因为:Count( )计数方法,只返回每条数据的计算个数。我们需...

2018-07-27 14:43:59 841

原创 LeetCode - mysql子查询【184. 部门工资最高的员工】

子查询一、按查询结果分类:  1.作为数据源使用;  2.作为选择条件使用;二、按常见的子查询分类: 1.由比较运算符引发的子查询;  2.由 [NOT] IN 引发的子查询: LeetCode题184部门工资最高的员工  3.INSERT ...SELECT....:插入检索的数据 题184. 部门工资最高的员工思路:1.先在employee表中,分组...

2018-07-27 09:58:53 1824

原创 LeetCode - mysql关键字DISTINCT/LIMIT习题 【596. 超过5名学生的课+177. 第N高的薪水】

一、DISTINCT关键字使用场景:  1.SELECT DISTINCT column1,column2... :     返回不同值的行,应有于column1、column2所有列而不仅是column1列。eg:下题177.  2.COUNT(DISTINCT column1):     对特定列columns中具有不同值的行进行计数。eg:下题596二、LIMIT关键字...

2018-07-26 14:20:29 327

原创 LeetCode - mysql函数习题 【题176. 第二高的薪水+题627. 交换工资】

题176. 第二高的薪水:MAX( )函数思路:先查找最高收入的薪水,在小于最高收入里面查找最高收入,即第二高收入。SELECT MAX(Salary) AS SecondHighestSalary FROM Employee WHERE Salary <(SELECT MAX(Salary) FROM Employee);题627. 交换工资:IF( )函数思...

2018-07-26 14:12:13 325

原创 LeetCode - mysql左连接习题【题175. 组合两个表+题183. 从不订购的客户】

题175. 组合两个表 (左连接)思路:左连接LEFT JOIN , 右表是可能地址为空的address表。SELECT p.FirstName,p.LastName,a.City,a.State FROM Person AS pLEFT JOIN Address AS a ON p.PersonId=a.PersonId题183. 从不订购的客户:(左连接的过滤)...

2018-07-26 13:05:59 386

原创 LeetCode - mysql重复数据习题【题182. 查找重复的电子邮箱+题196. 删除重复的电子邮箱】

题182. 查找重复的电子邮箱:思路:先GROUP BY分组,再HAVING过滤分组SELECT Email FROM Person GROUP BY EmailHAVING COUNT(*)>1如果采用以下代码:SELECT p1.Email FROM Person p1,Person p2WHERE p1.Id<p2.Id AND p1.Email=p...

2018-07-26 13:02:26 499

原创 LeetCode - mysql自联结习题【题181. 超过经理收入的员工+197. 上升的温度】

 题181. 超过经理收入的员工:思路:e表示员工的工资表,m表示管理层的工资表SELECT e.name AS Employee FROM Employee e,Employee m WHERE e.ManagerId=m.Id AND e.salary>m.salary;197. 上升的温度:思路:w1表示今天的天气表,w2表示昨天的天气表SELEC...

2018-07-26 11:07:32 359

原创 python学习:pandas库之DataFrame官方文档简介

Pandas库是基于Numpy库来创建的,Numpy主要用于矩阵操作,而Pandas主要用于数据处理。Pandas主要有两种重要的数据结构:Series和DataFrame.Series: 类似一个一维数组,一个Series对应DataFrame的一列 DataFrame:类似一个二维数组,一个DataFrame由几个Series列构成。在我们学习任何一种开源框架,必须得学会阅读其官方...

2018-07-23 17:07:44 3183

原创 通过PCA选择合适降维维度

PCA的作用有:降低特征值维度,提高了计算效率,但丢失了信息。信息在PCA中我们用方差来表示。一、PCA参数、属性简介1.介绍PCA方法中参数:n_components: 默认值为保留所有特征值维度,即不进行主成分降维 取大于等于1的整数时,即指定我们希望降维后的维数; 取0-1的浮点数时,即指定降维后的方差和占比,比例越大,保留的信息越多。系统会自行计算保留的维度个数。...

2018-07-18 15:51:33 14567 2

原创 LinearRegression线性回归算法基本原理分析

线性回归分为简单线性回归和多元线性回归,下面先简单介绍一下这二者:1.简单线性回归:只有一个特征值,预测值公式如下:2.多元线性回归:具有n个特征值,预测值公式如下:(当n=1时,即简单线性回归b=θ0,a=θ1)多元线性回归方程演变成求θ,使得下列目标值(预测值y的误差平方和)最小:sklearn中LinearRegression中的fit()方法就是通过训练集求出θ...

2018-07-17 09:24:00 6325

原创 Python实现回归算法的衡量指标计算:MSE/RMSE/MAE/R^2

在本文中,通过Python实现MSE/RMSE/MAE/R^2的计算,而非简单调用sklearn.metrics中的方法。先简单介绍各衡量指标公式和意义:1.MSE(均方误差):2.RMSE(均方根误差):3.MAE(平均绝对误差):以上1-3衡量指标,根据不同业务,会有不同的值大小,不具有可读性,故引入R^2衡量指标。4.R^2(决定系数): R越大表示我们的模型效果越好,最大值为1. R=1:...

2018-07-16 18:26:39 39548 1

原创 KNN算法-搜索最优超参数:n_neighbors /weight/p

在本文中,将选取正确率作为衡量标准,自行实现搜索最优超参数,而非直接调用sklearn中的GridSearchCV。先简单介绍KNN中的三个超参数:超参数为:n_neighbors /weight/p(只有当weight=distance的时候,p值才有意义)n_neighbors:取邻近点的个数k。k取1-9测试 weight:距离的权重;uniform:一致的权重;distanc...

2018-07-15 22:39:01 14974 6

原创 Python实现KNN算法--iris数据集

在本文中,通过python实现KNN算法,而非简单的调用sklearn库,并通过iris鸢尾花数据集进行训练和测试。详情参见以下代码:if __name__ == '__main__': trainX, trainY, testX, testY=loadSplitDataSet() preY=KNN(testX) evaluateKNN()#下载iris鸢尾花数据集...

2018-07-15 11:27:51 3318

原创 利用attrs.xml和 styles.xml定义Preference

1.attrs.xml/android/frameworks/base/core/res/res/values/attrs.xmlattrs.xml文件为View/ViewGroup定义了所有可用的属性。它的根元素是,它包含了俩个子元素:a.attr子元素:定义的属性。b.declare-styleable子元素:定义一个styleabl

2016-07-15 14:22:02 1112

原创 APIGuides-UserInterface-Settings-翻译一

原文链接: http://developer.android.com/guide/topics/ui/settings.html设置应用程序通常包括允许用户修改app属性和行为的设置。比如说,一些app允许用户指定通知消息是否有效或者指定应用程序和云端同步数据的频率。如果你想为你的app提供设置,你应该使用android的Preference API去建立一个和其他app一样用户体

2016-02-17 10:33:12 681

原创 Android5.1 触摸屏事件分发机制和源码解析二 --(ViewGroup篇)

一。案例分析还是和上文一样,写一个非常简单的项目。我们自定义了一个LinearLayout和Button控件。由代码中,我们可以发现LinearLayout比Button多了一个onInterceptTouchEvent()方法。MyLinearLayout.javapackage com.example.viewanalyse;import android.content

2015-10-16 18:40:39 767

原创 Android5.1 触摸屏事件分发机制和源码解析一 --(View篇)

一。案例分析首先,我们写一个非常简单的项目。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" andr

2015-10-15 13:19:40 1309

原创 POJ2395 -- Prim算法

一。Prim算法和Dijkstra算法1. Prim算法: 最小生成树,主要用于,N个村庄修路,怎么样成本最低。2.Dijkstra算法:最短路径计算,主要用于,任何一个点到点1的最短距离。区别:Prim算法和Dijkstra算法在代码实现上,几乎一样,唯一有个区别在于:Prim: Graph[k][j] Dijkstra: min+Graph[k][j]

2015-06-15 16:52:06 633

原创 POJ2182 -- 线段树

一。线段树线段树类似于区间树,它在每个节点之间保存一个区间:[a,b] , 那它左儿子保存的区间是:[a, (a+b)/2] ,右儿子保存的区间是:[(a+b)/2 +1 , b ]。假设,父节点的标号为k, 那么左儿子的标号是2*k,右儿子的标号是2*k +1 .假设,此时需要保存1-5的区间, 那么子节点的个数为5, 而线段树需要的空间约为3*5 =15个,即数组大小的3倍左右。

2015-06-15 11:18:07 640

原创 POJ1125 -- Floyed算法

该题求的是,从哪一个股票经纪人出发,可以最快的将消息传递。 1.用Floyed算法求出,任何俩个股票经纪人之间传递消息的最小时间。Floyed算法其实就是三个for循环:假设如何俩个点之间都经过i点进行中转。 for(i=1;i<=N;i++){ //所有的点都经过i点中转 for(j=1;j<=N;j++){ //遍历所有点,途经

2015-06-09 16:41:43 649

原创 POJ1797 -- Dijkstra算法

先大致解释一下题意, 求得是从街道1出发,到街道n,可以运输的最大重量。该题用的是Dijkstra算法。大致思路如下:int Graph[1001][1001]; //街道i到街道j的重量int flag[1001]; //标记是否访问过int Dis[1001]; //点1到每个点的最大重量1.定义了三个数组2.求得距离街道1最大重量的那个街道。此时是街道3,Dis

2015-06-09 16:06:24 440

原创 memset方法

void *memset(void *s, int ch, size_t n);将s中的前n个字节用ch替换。 一。 memset的方法初始化数组,是设置每个字节的值.所以如果对int型数组进行初始化,会出错. 但是如果初始化为0,是可以的。 int intArr[100]; memset(intArr,1,sizeof(intArr));

2015-06-05 11:28:06 549

原创 POJ2488 -- POJ1154-- DFS

该题用到了很基础的DFS。 1. 理解清楚题意,什么叫字典序。图中红色数字1/2/3....7/8是马可以行走到的位置,按照字典序行走,也就是按12345678的顺序依次行走。 2.在该题的DFS算法中,可以尝试八种走法,如果其中一条路不通,则需要尝试其他的路径。因此可以用for循环8次,或者8个if语句。在这里设立了一个标志位flag,如果完成了,则置1,否则说明是i

2015-06-04 19:10:13 629

原创 POJ3083 -- BFS和DFS

这个题目就是考了图的BFS和DFS。BFS用于求最短路径,这个非常简单。 DFS用于求左优先和右优先的路径,难点在于它的下一步方向是由上一步的方向确定的,因此每一步我们都需要确定当前的正方向。 一.在这里,我们定义了一个数据类型,用于存放迷宫中点的坐标以及当前行走的步数。typedef struct Data{ int row; int col; int s

2015-06-04 11:26:28 598

原创 POJ1700 -- 贪心算法

一。贪心策略:用最少的时间过河 二。过河方法分析:有俩种方法将最慢的那俩个人送过河。eg:1 2 5 10方法1:每次最快的1和次快的2过河,然后最快的1回来,最慢的10和次慢的5过河,最快的2再回来。            此时花费的时间为method1:2+1+10+2;公式为:a[0]+2*a[1]+a[i]    (备注:数组a[ ]是从小到大有序排列 )方法2:每

2015-06-03 13:34:03 553

原创 POJ1328 -- 贪心算法和快速排序

一 。贪心策略:将雷达放置在合适的地方,使得包含的岛屿数量最多。二。具体分析我们采用从左到右放置雷达。假设左边第一个岛屿是A(Xa,Ya),从左到右的岛屿依次是A B C ....我们可以计算出岛屿A的雷达区间 : [Xa_left,Xa_right] , 使得在这个区间的雷达都可以覆盖到岛屿A。Xa_left = Xa - sqrt (d^2 - Ya^2) ; Xa_right

2015-06-02 15:31:27 2633

原创 POJ3278 -- BFS

这是一道非常简单的BFS。在这里需要注意的是,要对数据进行剪枝,否则会浪费时间。我们来看一下BFS的具体实现:int BFS(int Person, int cow){ que* q = (que*)malloc(sizeof(que)); initQue(q); enQ(q,Person); count[Person]=0; while(q->fr

2015-06-02 10:18:03 560

原创 POJ1753 -- BFS和位运算

该题俩个考点,一个是BFS广度优先遍历,另外一个是通过位的运算。 一。位运算1.将输入的“0001 1001 1011 1001”字符串转换为十进制数6585,在这里是通过将输入的‘0’或‘1’进行位的左移运算实现。代码如下: for(i=0;i<4;i++){ scanf("%s",str); for(j=0;j<4;j++){

2015-06-01 15:59:23 601

原创 POJ2001 -- 字典树和字符串的前缀

该题和POJ2503一样,采用字典树。思维大同小异。直接附上源码。#include #include typedef struct trie{ int count; struct trie* next[26];}trie;trie* root;char output[21];char input[1000][21] ;trie* createNode(){

2015-05-31 16:10:15 546

原创 POJ2503 -- 字典树

该题的主要注意点,一是输入,二是字典树的考察。一。输入Sample Inputdog ogdaycat atcaypig igpayfroot ootfrayloops oopslayatcayittenkayoopslay1.首先,用了scanf("%s%s",eng,fori)!=EOF判断是不是到文件结尾, 如果输入到最后一个单词oopslay,则说明

2015-05-31 10:14:26 675

原创 Android开发 -- .9图片原理和Draw 9-patch工具的使用

一. .9图片的介绍.9图片的作用:1. 主要防止图片被拉伸后变形。因为在一个像素里如果是相同色块,那么它被拉伸不会变形。但如何该像素里有不同色块,就将导致它变形。2.通过.9图片可以把图片做的很小,不占资源,减少apk的大小下面我们来看一下,同一张图片使用了.9和不使用.9图片的区别:由图中,我们可以看出没有使用.9图片的对话框被拉伸的变形了。我们再看下这

2015-05-13 12:50:19 2617

原创 构造方法 -- super()方法

class Father{ public Father(int i){ System.out.println("父类构造方法 -- Father(int i)"); }}public class Child_Constrctor extends Father{ public Child_Constrctor(int i ,String s) { //super(i);

2015-05-12 10:00:22 1241

原创 继承和多态性 -- 方法和变量的覆盖和隐藏

隐藏: 子类在继承父类的时候,会隐藏父类的变量(不管是静态变量还是实例变量)和父类的static静态方法。此时,子类不能访问父类的方法和变量,但是如果将子类强制转换为父类,则可以访问父类隐藏的变量(不管是静态变量还是实例变量)和static静态方法。覆盖:子类中继承父类的时候,会覆盖父类的实例方法。此时,子类不能访问父类的方法和变量,但是如果将子类强制转换为父类,还是不能访问父类被覆盖的实例方

2015-05-11 13:47:57 954

原创 接口与继承 -- 访问相同变量

interface A{ int x = 0;}class B { int x = 1;}public class Object1 extends B implements A { public static void main(String[] args) { // TODO Auto-generated method stub System.out.pri

2015-05-11 09:56:38 491

原创 String -- 俩种实例化方式的区别

String有俩种实例化方式:1.通过直接赋值:String str1 = "A"; 2.通过new方法: String str2 = new String("A");下面来看一段简单的代码:public class String1 { public static void main(String[] args) { // TODO Auto-generated m

2015-05-10 20:02:30 646

原创 java -- 对象和对象的引用

1.Value v = new Value (); 引用变量v是存放在栈内存,而对象的具体内容是存放在堆内存的.2.new 一个Value 对象,实际上就是开辟一个堆内存空间存储对象的属性值。3.对于字符串String s = "hello"就相当于new了一个字符串对象,开辟了一个堆内存空间存放"hello", 且s是指向“hello”的。4.在java中,对于对象,传递的都是引用的

2015-05-08 21:21:37 551 1

原创 多线程 -- interrupt()方法

interrupt()方法不会中断一个正在运行的线程,它用于提前退出线程的阻塞状态,也就是说当线程通过Object.wait() / Thread.sleep() / Thread.join() / 方法进入阻塞状态后,如果调用线程中断方法,该线程会收到一个InterruptedException中断异常,可以在catch中编写自己需要的代码。public class Interrup

2015-05-08 16:37:20 561

原创 多线程 -- sleep()方法和wait()方法区别

sleep()和wait()方法最大的区别就是:1.wait()方法会释放对象的锁,即在线程A wait期间,其他线程可以调用它的synchronized同步方法。但是线程A sleep的时候,不会释放对象的锁。其他的区别:2.Object类中的方法:wait() / notify() / notifyAll()Thread类中的方法:sleep() / yield()

2015-05-08 09:39:46 890

空空如也

空空如也

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

TA关注的人

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