1.prolog
2.回归分析法
3.matlab神经网络

Prolog

声明式编程语言,它与我们平时最常遇到的命令式编程语言有很大的不同。命令式语言需要你精确地告诉计算机如何完成一项工作,而声明式语言则是需要你提供信息和推论而无需知道如何做。

我们只需在程序中阐述事实,并加讯问命令即可

1、 小写字母为常量,大写字母、特殊符号等为变量。对象名如果非要用大写字母、空格等特殊字符,就必须要加单引号。在SWI-Prolog中,甚至支持汉字作为对象名(当然必须得加引号)。
2、 一个完整的语句以英文句号“.”结束。可以用/* */来表示注释,也可以用%来作为注释符。
3、 将事实录入后,再运行后,会有问号提示符“?-”,我们可以进行询问。在Prolog中,变量名的首字母必须大写。提问只要将语句中的常量改写为变量,即会输出所有满足此语句的常量。不是一次输出全部,如果想看下一个答案,可以键入字符“;”,这样Prolog就可以继续进行搜索。如果想到此为止,就按回车键。
有时,我们对变量的值并不关心,我们可以使用空变量。空变量记作“”。比如,要提问:“有学哲学的男生吗?”可以这样提问:
?- male(
), studies(_, philosophy).
只会返回true或不true

4、 主谓宾语句
谓(主,宾).
谓(主,直接宾语,间接宾语).
如果希望谓语双向互通,可以提前定义
friend(X, Y) :- friend(Y,X). X和Y是朋友
:-表示推理关系,只有右边的语句全部true,左边才为true。
5、 集合(元素). 可定义元素属于此集合
6、 与或非
,为与、;为或、+为非
例 ?- year(X, 1), age(X, Y), Y > 20, studies(X, chemistry). 在一年级中,有没有20多岁,且学习化学的男生?
?- studies(hazel, mathematics); studies(hazel, chemistry). Hazel在学数学或是化学吗?
?- male(X), +(studies(X, history)). 不学历史的男生有谁?

调试

盒子模型
盒子模型把一个谓词想象为一个盒子,Prolog解释程序的控制流通过这个盒子。如图所示,盒子的四个角上稳中有降有四个进、出端口,这些端口的含义分别是:
CALL:Prolog为满足某个目标进入盒子时经过的端口;
EXIT:Prolog在目标得到满足(即匹配成功)后离开盒子时所经过的端口;
FAIL:Prolog在目标未能满足(即匹配失败)时退出盒子所经过的端口;
REDO:Prolog为了再次满足某个目标进行回溯时,重新进入盒子的端口。
载入程序文件后,为了实现调试功能,应当在运行程序前,在提示符“?-”后键入命令:trace. 调试程序对每个调用都在括号中给出一个数字。该数字表示调用的“深度”,即初始目标调用期间所做的目标调用次数。在得出第一个答案后,要按“;”搜索另一个答案,其他按回车或“c”就可以继续。
; :回溯。转到当前目标的REDO端口;
f :失败。转到当前目标的FAIL端口;
r :重复。从EXIT端口转至该目标的CALL端口;
s :跳。在目标的CALL端口告诉调试程序路过所有的提示符,直到该目标的EXIT或FAIL端口;
L :显示当前谓词的全部子句;
a :中止。返回Prolog环境;
e :退出Prolog系统,它将放弃已做的全部工作;
h :帮助。显示命令选项。

运算

1.+ 加 - 减 * 乘 / 除
div 整除
mod 整数的余数
is 令表达式求值 X is <数学表达式>,变量X将被赋值为表达式的值,在回溯时不赋值。
X > Y X大于Y
X < Y X小于Y
X >= Y X大于或等于Y
X =< Y X小于或等于Y
X = Y X等于Y
X = Y X不等于Y
sin(x)、cos(x)等三角函数、log(x)等对数函数、绝对值函数abs(x)、平方根函数sqrt(x)
递归
程序自己调用自己,经典例子即阶乘。需先定义根0! = 1(停止条件),后定义n! = n x (n - 1)!(递归定义)
factorial(0,1). %0的阶乘是1%停止条件必须放在递归规则之前
factorial(Num,Answer) :-
Num1 is Num-1,
factorial(Num1,Answer1),
Answer is Num*Answer1.

询问时,即输入?- factorial(n,W). %n为任意整数,W为任意大写字母或者大写字母开头的单词

递归规则的停止条件.
递归谓词 :-
某些初始计算.
递归谓词.
某些最终运算.

截断
Prolog为用户提供了一种可存在于程序中并控制回溯水平的机制,即所谓的“截断(cut)”。Porlog中用叹号“!”表示截断
example :- a, b, c, !, d, e, f.
叹号之前的目标进行反复回溯直到目标c满足,经过截断符号后,回溯只在d,e,f间进行

1、 在递归的停止条件后加截断
可防止在给出回答后继续回溯,即键入分号时,系统陷入无限循环的错误
power(_, 0, 1). :- !.
power(X, Y, Pow) :-
Y_tmp is Y - 1,
power(X, Y_tmp, Pow_tmp),
Pow is Pow_tmp * X.

截断的另一个常用方式是与谓词fail联用。fail是一个Prolog标准谓词,由于它总是失败,因而可引起回溯。截断可设置在fail前面,以防止失败后的回溯。截断与fail联用通常可用否定谓词“+”代替,+是Prolog另一个标准谓词,如果目标X失败,则目标+(X)成功;如果X成功,则会失败。

选择结构和循环结构
用Prolog语言编写过程式程序在可读性上比起其它语言要逊色得多,切记在Prolog编程中应尽量避免过程式编程。


set([yuansu1,yuansu2……])
表头和表尾的概念是理解Prolog中表处理的基础。表头是一个元素,而表尾本身是一个表。表具有递归的数据结构,因为它是由表头和另一个表(表尾)组成的。正像其递归结构那样,表也可以递归定义。比如:
考虑到[a, b, c],该表表头=a,表尾=[b, c];表尾也是一个表,表头 = b,表尾=[c];而表尾[c],也是一个表,表头=c,表尾=[ ]。
其中竖线“|”是Prolog中用于分隔表头和表尾的符号。[H|T],竖线前为表头


确定一个对象是否为某个表的成员。例如,我们有一个表List,内容是一些编程语言的名字。查找程序如下:
find(List,[List|]).
find(List,[
|T]) :- find(List,T).
进入知识库,试图与规则一匹配,因为目标与表头不同,故失败;
继续搜索,试图与规则二匹配,目标和表尾作为参数,重新回到规则一,直到成功。
两个表的追加。有时需要把两个表合并成一起形成新表,这个过程叫做并置或追加。下面这段代码可实现表的追加,concatenate(A,B,C).后就可以将表B追加到表A后形成表C。

回归分析法

一元回归

注意这里σ2不是由除以n得到,而是除以(n-2),这个二代表了两个参数α和β

多元回归

模型
y=β0+β1x1+……+βmxm+ε
ε~N(0,σ2),βn,σ2都是未知参数

将各组观察值带入
Yi=β0+β1xi1+……+βmxim+εi (i=1,2,……,n)
其中各εi相互独立,且εi~N(0,σ2)

假设X的秩等于m+1,即列满秩
则XTY=(XTX)β
解得β=(XTX)-1XTY

当m=1时,就变成一元回归分析
回归模型的假设检验
显著性检验
H0:β1=β2=……βm=0
H1:至少有一个βj≠0(j=1,2,……,m)
当假设H0成立时,说明回归方程不显著,采用线性回归不合适
当备选假设H1成立,则回归方程显著

若H0成立
Se/σ2x2(n-m-1),SR/σ2x2(m)


神经网络
1, 多层向前神经网络
输入层即为初始指标
隐层和输入层有权值的连接,出输入层外,每一节点的输入为前一层所有节点输出值的和。每一节点的激励输出值由节点输入,激励函数及偏置量决定。

第i层为各节点的输入,通常需要归一化到-1和1之间(或0到1)
在第j层,节点的输入值为
Netj=Σwjioij
其中θj为阈值,正阈值的作用将激励函数演x轴向左平移,节点的输出值为oj=f(netj)
式中f为节点的激励函数,通常选择如下sigmoid函数:
F(x)=1/[1+exp(-x)]
//这是一个单调增加有界函数且负无穷处=0,正无穷处=1,f(0)=1/2
所以用它映射之后还是在0到1区间内,且一一对应
在第k层的网络节点输出为:
Netk=Σwkjojk。而输出为ok=f(netk

网络经过计算后,输出值和输入值会存在误差,对每一个输入的模式样本p,平方误差Ep为Ep=1/2Σk(tpk-opk)2
全部学习样本总误差为
E=1/2pΣpΣk(tpk-opk)2
在学习过程中,系统将调整连接权和阈值,使Ep尽可能下降
Matlab相关函数
1、 网络初始化函数
net=newff([xm……xM],[h1,h2……hk],[f1,f2……fk])
xm和xM分别为列向量,储存各样本数据的最小值和最大值
注意方框号里面只会是举证或者向量
第二个输入变量是一个行向量,输入各层节点数
第三个输入变量是字符串,代表该层的传输函数
常用tansig(x)=[1-exp(-2x)]/[1+exp(-2x)]映射-1到1,logsig(x)=1/[1+exp(-x)]映射0到1
还可以用设定函数
Net.trainParam.epochs=1000 设定迭代次数
Net.trainFcn=’traingm’ 设定带动量的梯度下降算法
2、 网络训练函数
[net,tr,Y1,E1]=train(net,X,Y)
其中X为nM矩阵,n为输入变量的个数,M为样本数,注意是按列排放的,一列代表一个样本;
Y为m
M矩阵,m为输出变量的个数
3、 网络泛化函数
Y2=sim(net,X1)
其中X1为输入数据矩阵,各列为样本数据

一维函数,所以只填一组最大值和最小值,隐层节点选六个,输出层节点只能选一个(即y),每层用tansig。


可以用三层神经网络进行判别
输入为15个二维向量,输出是判断谁是Af谁是Apf(判断是否类),因此可用0,1法
设输出也是15个二维向量,其中Af对应(1,0)Apf对应(0,1)
只需要将三个未知向量带入,看其偏于(1,0)还是(0,1)

注意这里求最大值最小值的地方,由于原本matlab只会求横向量最大最小,这里加‘是为了转置,求列向量最大最小,后面初始化网络的时候,再转置回来
隐层节点数只能自己试不要太多,不要太少

学习报告21-02-28相关推荐

  1. matlab学习报告

    Matlab学习报告 Matlab的主要功能有数值分析.数字图像处理.数值和符号计算.数字信号处理.工程与科学绘图.通讯系统设计与仿真.控制系统的设计与仿真.财务与金融工程-- 真的是功能强大.之所以 ...

  2. python量化投资培训清华大学深研院_GitHub - CatsJuice/quantitative-investment-learning: 使用Python进行量化投资的学习报告...

    quantitative-investment-learning 使用Python进行量化投资的学习报告 Python量化投资学习报告 CatsJuice 编辑于 2019-4-26 上一次更新: 2 ...

  3. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(11月28日-12月4日)

    分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(11月28日-12月4日) 本周Silverlight学习资源更新 Silverlight HttpUtil 封 ...

  4. 深度学习(21)神经网络与全连接层四: 输出方式

    深度学习(21)神经网络与全连接层四: 输出方式 1. y∈Rdy∈R^dy∈Rd 2. yi∈[0,1]y_i∈[0,1]yi​∈[0,1] 3. sigmoid函数 (1) 目的 (2) tf.s ...

  5. Liunx学习笔记 - 07 - 02 正则表达式与文件格式化处理

    Liunx学习笔记 - 07 - 02 正则表达式与文件格式化处理 1 前言:啥是正则表达式 简单来讲,正则表达式是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的 ...

  6. 【Yocto学习入门】02 - 构建一个简单的Poky参考嵌入式操作系统

    [Yocto学习入门]02 - 构建一个简单的Poky参考嵌入式操作系统 一.开发环境准备 二.下载 Poky 代码 三.配置编译环境 3.1 下载失败情况处理 Failed to fetch URL ...

  7. 小白计算机视觉学习报告

    视觉学习报告 第一次写CSDN博客,没想到是自己五周来的视觉学习报告. 和大家分享一下,供大家参考. 总述: 在这篇学习报告中,我将从三个方面来阐述我这段时间以来所学的东西.首先,我将先从知识层面去阐 ...

  8. 学计算机专业英语报告范文,计算机学习报告

    计算机学习报告怎么写?本频道是免费计算机学习报告网站,为您整理了海量优秀的计算机学习报告相关论文范文和参考文献!对您的毕业论文与职称论文写作有着参考价值,涵盖大学计算机学习报告范文和格式模板以及相关的 ...

  9. Datawhale自组织学习报告!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 自组织学习报告 设计:吕豪杰,张帆,杨冰楠  Datawhale成员 第14期自组织学习 6月2 ...

  10. 计算机应用基础形考报告2020,放大学计算机应用基础形考本学习报告

    放大学计算机应用基础形考本学习报告Tag内容描述: 1.学 海 无 涯 模块模块 1 windows 7 操作系统操作系统客观题客观题 (答案)(答案) 1.以( )为核心组成的微型计算机属于集成电路 ...

最新文章

  1. 在计算机技术领域中数据库一词泛指,数据库原理模拟试题.doc
  2. numa节点_鲲鹏性能优化十板斧之前言 | 鲲鹏处理器NUMA简介与性能调优五步法
  3. android运行的线程中,android中线程是否运行在单独的进程中?
  4. android 游戏引擎 排行_4月旗舰手机性能排行榜:小米10 Pro第四,OPPO Ace2第五
  5. Swift中文教程(七) 闭包
  6. mysql一:初识数据库
  7. arm linux 自动挂载,ARM-Linux支持并自动挂载U盘
  8. 计算机毕业设计中JAVA 23种开发模式详解(代码举例)
  9. 一个简单的划词翻译工具
  10. 主机一拖二 linux,使opensuse12.1实现一拖二(拖机)的双人使用系统(上)
  11. android10新特性 视频解码,Android万能视频播放器10-OpenGL ESMediaCodec解码数据t
  12. word鼠标右下角有一个小方块_word
  13. mysql根据15位或者18位身份证号计算年龄的自定义函数
  14. 重复测量方差分析步骤汇总
  15. 牛客网练习赛36 Ribbit的数列 分块
  16. CSS面试须知--选择器
  17. java html5 cms,企业内部cms业务管理系统html5简洁的模板
  18. R的绘图(二)——基本图形
  19. PMP考试资料考试重点,不看可惜了
  20. 三年级优秀书籍推荐_三年级推荐书单

热门文章

  1. rhinopython python编辑器、按钮编辑器、debug、rhinoscriptsyntax库函数使用手册
  2. Celery异步任务重复执行(Redis as broker)
  3. Redis指南——03入门(下)
  4. form表单二次封装
  5. Qt扫盲-QDir类的学习和使用
  6. Java——继承(一)
  7. DP1621国产LCD驱动芯片兼容替代HT1621B
  8. reg52.h中文详细注解
  9. 忻州计算机cad培训,忻州CAD三维建模培训cad三维绘图视频
  10. 数据库字段大小写更新语句