逻辑函数

如何提高程序员的生产率 (2)

走远了吗. 提交于 2019-12-06 18:50:47
版权声明:本文由韩伟原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/252 来源:腾云阁 https://www.qcloud.com/community 接上篇 如何提高程序员的生产率 (1) 三. 开发过程 沟通 软件通常都需要经过很多人和很多次的沟通才能生产出来,但是沟通本身又往往会影响软件的开发速度。这是一段很矛盾的关系。好的沟通方法能降低开发中因为信息不透明导致的开发资源浪费,而又尽量减少沟通所占用的精力。 1. 需求沟通 在任何一个软件产品中,如何应对需求的变更,都是至关重要的。需求一直是软件工作得以成功或者失败的最重要因素。软件开发中很多技术和方法都是围绕着需求来设计的。 需求的沟通是需求工作的第一个环节。首先沟通的对象必须是经过挑选的,以免添加不必要的需求混乱。最佳的需求沟通是和用户或者用户代表。但是他们往往他们缺乏必要的计算机知识。而程序员却很少有丰富的需求领域的知识。这个鸿沟需要双方共同去弥补,最重要的做法是,不要光靠口说。 程序员应该认真研究需求领域的知识,仔细查看涉及的单据、原型产品、现有工作流程等,而且必须用笔记录下来,之后再去整理问题,逐条咨询用户。在仔细了解情况之前,不宜开始设计整体程序结构。 当你有一定了解之后,程序员就可以动手开发一个快速的原型,如果没有足够资源

使用AI算法进行手写数字识别

a 夏天 提交于 2019-12-06 16:31:14
人工智能   人工智能(Artificial Intelligence,简称AI)一词最初是在1956年Dartmouth学会上提出的,从那以后,研究者们发展了众多理论和原理,人工智能的概念也随之扩展。由于人工智能的研究是高度技术性和专业的,各分支领域都是深入且各不相通的,因而涉及范围极广 。 人工智能的核心问题包括建构能够跟人类似甚至超越人类的推理、知识、学习、交流、感知、使用工具和操控机械的能力等,当前人工智能已经有了初步成果,甚至在一些影像识别、语言分析、棋类游戏等等单方面的能力达到了超越人类的水平 。   人工智能的分支领域非常多,主要有演绎推理、知识表示、规划、学习、自然语言处理……等十多个分支领域,而以机器学习为代表的“学习”领域,是目前研究最广泛的分支之一。 机器学习    机器学习(Machine Learning)是人工智能的一个分支,它是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。机器学习在近30多年已发展为一门多领域交叉性的学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。    机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法,该算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。 深度学习   深度学习(Deep Learning)是机器学习的分支,是一种以人工神经网络为架构

递归函数的编写要点总结

和自甴很熟 提交于 2019-12-06 15:21:24
关于递归函数的编写:明确一点,递归就是自己调用自己,对于函数的编写,从上到下分为三个部分 第一部分:编写递归到底的处理逻辑(此时不用调用自己) 第二部分:编写未递归到底的处理逻辑 第三部分:编写返回上一层调用时需要的处理逻辑 伪代码: public void func(args){ //1.第一部分 if(递归到底){   //递归到底的处理逻辑   return; } //2.第二部分:改变参数,调用自身 func(changedArgs); //3.第三部分:往上层回退时的处理逻辑(此处的逻辑第一次执行是在,递归到底返回之后,层数是在倒数第二层)     //比如在递归操作树这个数据结构的时候,此处对应叶子节点的上一层,此时可以进行一些额外的逻辑处理    }    来源: https://www.cnblogs.com/chenyulin/p/11992626.html

BAT机器学习面试1000题系列

本小妞迷上赌 提交于 2019-12-06 14:35:20
几点声明: 1、本文的内容全部来源于七月在线发布的BAT机器学习面试1000题系列; 2、文章中带斜体的文字代表是本人自己增加的内容,如有错误还请批评指正; 3、原文中有部分链接已经失效,故而本人重新加上了新的链接,如有不当,还请指正。(也已用斜体标出) 4、部分答案由于完全是摘抄自其它的博客,所以本人就只贴出答案链接,这样既可以节省版面,也可以使排版更加美观。点击对应的问题即可跳转。 最后,此博文的排版已经经过本人整理,公式已用latex语法表示,方便读者阅读。同时链接形式也做了优化,可直接跳转至相应页面,希望能够帮助读者提高阅读体验,文中如果因为本人的整理出现纰漏,还请指出,大家共同进步! 1.请简要介绍下SVM。 SVM,全称是support vector machine,中文名叫支持向量机。SVM是一个面向数据的分类算法,它的目标是为确定一个分类超平面,从而将不同的数据分隔开。 扩展: 支持向量机学习方法包括构建由简至繁的模型:线性可分支持向量机、线性支持向量机及非线性支持向量机。当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

《Neural Networks and Deep Learning》课程笔记

旧街凉风 提交于 2019-12-06 10:31:02
Lesson 1 Neural Network and Deep Learning 这篇文章其实是 Coursera 上吴恩达老师的深度学习专业课程的第一门课程的课程笔记。 参考了其他人的笔记继续归纳的。 逻辑回归 (Logistic Regression) 逻辑回归的定义 神经网络的训练过程可以分为 前向传播(forward propagation) 和 反向传播 (backward propagation) 的 过程。我们通过逻辑回归的例子进行说明。 逻辑回归是一个用于 二分类 (binary clasification) 的算法。比如说,我们有一张图片作为输入,比如下图中的猫,如果识别这张图片为猫,则输出标签1作为结果;如果识别出不是猫,那么输出标签0作为结果。而我们把输出结果用 \(y\) 表示就如下图所示。 图片在计算机中保存的话,我们需要保存三个矩阵,它们分别对应图片中的红、绿、蓝三种颜色通道。如果图片是 \(64\times64\) 像素的,那么这三个矩阵的大小都是 \(64\times64\) 。 为了把这张图片的像素值转换为特征向量 \(x\) ,我们需要把三个矩阵展开为一个向量,而这个向量的总维度用 \(n_x\) 表示的话,就是 \(n_x=3\times64\times64=12,288\) 。 符号定义: \(x\) :表示一个 \(n_x\) 维数据

Django笔记2---模板

放肆的年华 提交于 2019-12-06 06:58:29
MTV和MVC模型 Django设计网站的思路是采用类似MVC模型的MTV模型,其本质上是一样的,都是把数据,数据处理,展示三部分分开用不同的模块处理.这是一种设计理念和架构模式,具体到细节实现上,每个功能归属在MTV和MVC下有轻微的区别,不过不影响大局. MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。阮一峰对此 有篇文章 介绍. Django的MTV模型和四大部分 Django框架的设计模式借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性。 Django框架的不同之处在于它拆分的三部分为:Model(模型)、Template(模板)和View(视图),也就是MTV框架。 Django的模式也遵循了MVC的理念,用户的操作用控制器(包括url分发器和函数(注意这里的views.py对应的其实是控制过程,是处理数据的业务逻辑,并不是MVC里的V))来接收,处理之后传送指令给模型用于获得数据和结果,再返回给视图部分展示给用户.从上图可以看出Django的四大模块与MVC模型的对应关系如下: C–urls分发器(路由系统,属于MVC里的C部分),Django内叫做路由系统 C

机器学习逻辑回归算法推导

六月ゝ 毕业季﹏ 提交于 2019-12-06 02:48:38
1.引自 https://www.cnblogs.com/bnuvincent/p/9695666.html 2. 基本原理 Logistic Regression和Linear Regression的原理是相似的,按照我自己的理解,可以简单的描述为这样的过程: (1)找一个合适的预测函数(Andrew Ng的公开课中称为hypothesis),一般表示为 h 函数,该函数就是我们需要找的分类函数,它用来预测输入数据的判断结果。这个过程时非常关键的,需要对数据有一定的了解或分析,知道或者猜测预测函数的“大概”形式,比如是线性函数还是非线性函数。 (2)构造一个Cost函数(损失函数),该函数表示预测的输出( h )与训练数据类别( y )之间的偏差,可以是二者之间的差( h-y )或者是其他的形式。综合考虑所有训练数据的“损失”,将Cost求和或者求平均,记为 J(θ) 函数,表示所有训练数据预测值与实际类别的偏差。 (3)显然, J(θ) 函数的值越小表示预测函数越准确(即 h 函数越准确),所以这一步需要做的是找到J(θ)函数的最小值。找函数的最小值有不同的方法,Logistic Regression实现时有的是梯度下降法(Gradient Descent)。 3. 具体过程 3.1 构造预测函数 Logistic Regression虽然名字里带“回归”

Django---类视图详解

只谈情不闲聊 提交于 2019-12-06 00:38:10
类视图的引入 以函数的形式进行定义的视图就是 函数视图 ,视图函数便于理解,但是遇到一个视图函数对应的路径提供了多种不同的HTTP请求方式的支持时(get,post,delete,put),需要在一个函数中写不同的业务逻辑,代码的可读性和复用性就很底, 所以,我们引入类视图进行解决. def register (request) : """处理注册""" # 获取请求方法,判断是GET/POST请求 if request.method == 'GET' : # 处理GET请求,返回注册页面 return render(request, 'register.html' ) else : # 处理POST请求,实现注册逻辑 return HttpResponse( '这里实现注册逻辑' ) 使用类视图讲不通的请求方式进行不同的方式进行区分定义: class DefineClassview (View) : """演示类视图的定义和使用""" def get ( self , request ) : """处理GET请求业务逻辑""" return HttpResponse ( 'GET请求业务逻辑' ) def post ( self , request ) : """处理POST请求业务逻辑""" return HttpResponse ( 'POST请求业务逻辑' ) def

C++程序的耦合性设计

大憨熊 提交于 2019-12-05 16:28:01
声明:本文部分采用和参考《代码里的世界观-通往架构师之路》中内容,可以说是该书中耦合性一章的读后感,感谢该书的作者余叶老师的无私分享。 1.什么是耦合? 耦合其实就是程序之间的相关性。 程序之间绝对没有相关性是不可能的,否则也不可能在一个程序中启动,如下图: 这是一个Linux中socket TCP编程的程序流程图,在图中的TCP服务器端,socket()、bind()接口、listen()接口、accept()接口之间肯定存在着相关(就是要调用下一个接口程序必需先调用前一个接口),也就是耦合,否则整个TCP服务器端就建立不起来,以及改变了bind()中的传入的数据,比如端口号,那么接下来的listen()监听的端口,accept()接收连接的端口也会改变,所以它们之间有很强的相关性,属于紧耦合。所以耦合就是代码的相关性,如果还不明白,也没关系,继续看下去,相信你会懂的,哈哈。 2.耦合的形式 (1)数据之间耦合 在同一个结构体或者类中,如: typedef struct Person { int age; char* name; }Person; class Person { private: int age_m; bool namePresent_m; std::string name_m; }; 在上面的结构体和类中,年龄和名字两个基本数据单元组合成了一个人数据单元

A--利用梯度下降求解逻辑回归的python实现

旧时模样 提交于 2019-12-05 05:31:37
#导入必要的包 import numpy as np import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt %matplotlib inline BGD求解逻辑回归 In [2]: #⾸先定义联系函数sigmoid函数 def sigmoid(inX): return 1.0/(1+np.exp(-inX)) In [7]: #自定义一个归一化函数(此函数的前提是我的数据是一个矩阵) def regularize(xMat): inMat = xMat.copy()#创建一个副本,这样对inmat进行操作不会影响到xmat inMeans = np.mean(inMat,axis = 0) #求均值 inVar = np.std(inMat,axis = 0) #求标准差 inMat = (inMat - inMeans)/inVar #归一化 return inMat In [4]: #编写批量梯度下降的自定义函数 def logisticReg_0(dataSet,eps=0.01,numIt=50000): xMat = np.mat(dataSet.iloc[:, :-1].values) yMat = np.mat(dataSet.iloc[:, -1].values).T