矩阵

径向基函数(RBF)神经网络分析

家住魔仙堡 提交于 2020-01-06 21:17:43
概述 径向基函数神经网络的基本原理,就是将样本对中输入变量和输出变量间的关系解析成多个径向基函数的总和。以二维输入样本X,一维输出样本Y为例,中心点为三个: 输入层 距离计算 基函数值计算 输出层计算 X1 Dist1=//X1-Center1// Dist2=//X1-Center2// Dist3=//X1-Center3// a1=k1*exp<-Dist1^2>*b1 a2=k2*exp<-Dist2^2>*b2 a3=k3*exp<-Dist3^2>*b3 Z1=a1+a2+a3         符号说明:Center是中心点矩阵,k是权值矩阵,b是阀值矩阵。 上述图中,当样本输出值Y和训练值Z之间接近并且达到预期精度时,就可以认为结果正确,训练结束。该算法通过训练后,需要输出就是上述三个矩阵:中心点矩阵、权值矩阵、阀值矩阵。 流程图 要求出上述三个矩阵,可分为寻找中心点、求阀值、求权值三步,流程如下: 否 是 开始 从样本中随机初始化中心点 样本按最近中心点分组 计算每组样本几何中心点 对应中心点和几何中心点距离之和小于设定值 更新中心点 计算各中心点到其余中心点最小距离delta<阀值矩阵b> 计算隐含层矩阵K 计算权值矩阵weights 输出 代码实现 function [deltas,weights,centers]=MyRBF(MatrixX,MatrixY,M

数据结构与算法学习task01

点点圈 提交于 2020-01-06 19:50:59
​​Task01:数组(1天) 理论部分 理解数组的存储与分类。 实现动态数组,该数组能够根据需要修改数组的长度。 练习部分 1. 利用动态数组解决数据存放问题 编写一段代码,要求输入一个整数N,用动态数组A来存放2~N之间所有5或7的倍数,输出该数组。 示例: 输入: N = 100 输出: 5 7 10 14 15 20 21 25 28 30 35 40 42 45 49 50 55 56 60 63 65 70 75 77 80 84 85 90 91 95 98 100 采用matlab代码编写(就是图个方便) function result = task01 ( n ) result = [ ] ; for i = 2:n+1 if mod ( i,5 ) == 0 || mod ( i,7 ) == 0 result = [ result i ] ; end end ​结果如下图所示: ​​​​​​​​ 2. 托普利茨矩阵问题 如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。 给定一个M x N的矩阵,当且仅当它是托普利茨矩阵时返回True。 示例: ​ 输入 : matrix = [ [ 1 , 2 , 3 , 4 ] , [ 5 , 1 , 2 , 3 ] , [ 9 , 5 , 1 , 2 ] ] 输出 : True 解释

机器学习之无监督学习

只愿长相守 提交于 2020-01-06 19:26:30
注:本篇博客所有案例数据由MOOC平台提供! 无监督学习-聚类 K-means 算法 k-means算法以k为参数,将n个对象分成k个簇,使簇内具有较高的相似度,而簇内具有较高的相似度,而簇间的相似度较低。 其处理过程如下: (1)随机选择k个点作为初始的聚类中心; (2)对于剩下的点,根据其与聚类中心的距离,将其归入最近的簇; (3)对每个簇,计算所有点的均值作为新的聚类中心; (4)重复(2)、(3)直到聚类中心不再发生变化。 import numpy as np from sklearn.cluster import KMeans def loadData(filePath): fr = open(filePath,'r+') lines = fr.readlines() retData = [] retCityName = [] for line in lines: items = line.strip().split(",") retCityName.append(items[0]) retData.append([float(items[i]) for i in range(1,len(items))]) return retData,retCityName if __name__ == '__main__': data,cityName = loadData(

numpy矩阵乘法

百般思念 提交于 2020-01-06 17:30:35
乘号 * numpy矩阵主要是两种形式,numpy.mat和numpy.ndarray。使用乘号的时候要注意,如果是ndarray会默认是数量积,也就是对应点相乘。而如果是mat的话则是向量积,也就是一般的矩阵乘法的格式。 a = np.arange(4) a = a.reshape((2,2)) a_t = np.transpose(a) print(a) print(a_t) print(type(a)) print(a * a_t) b = np.asmatrix(a) print(type(b)) b_t = np.asmatrix(a_t) print(b * b_t) dot() dot遵循的是矩阵向量积,即一般的矩阵乘法。 来源: https://www.cnblogs.com/siren27/p/12157293.html

主成分分析

白昼怎懂夜的黑 提交于 2020-01-06 16:08:45
PCA的思想是将n维特征映射到K维上(k < n),这k维是全新的正交特征。这k维特征成为主成分,是重新构造出来的k维特征,而不是简单的从n维特征中去除其余 n-k维特征。 (1)计算数据的协方差矩阵: https://blog.csdn.net/Mr_HHH/article/details/78490576 (2) 计算数据协方差矩阵的特征值和特征向量 python 样例代码: # coding:UTF-8 import os import numpy as np # 原始的数据 x = [0.69, -1.31, 0.39, 0.09, 1.29, 0.49, 0.19, -0.81, -0.31, -0.71] y = [0.49, -1.21, 0.99, 0.29, 1.09, 0.79, -0.31,-0.81, -0.31, -1.01] npx = np.array(x) npy = np.array(y) # 去除均值 ma = np.matrix([x - npx.mean(), y - npy.mean()]) print(u"协方差矩阵") cov = ma.dot(ma.T) print("------------------下面计算原始矩阵的特征值和特征向量-----------------------") eigenvalue

3、二维数组查值

老子叫甜甜 提交于 2020-01-06 13:53:39
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思考、观察、分析、总结: 通过看书学习,得知此题有两种解法,源于思路的不同。 重点在于: 解决复杂问题的有效方法是从一个具体问题入手,多方面尝试并寻找其规律。 思路:从二维数组的右上角往左下角进行判断 1、右上角的值 = 要查找的值则返回true 2、右上角的值 > 要查找的值就把所在的列剔除掉,因为右上角的数是这列最小的。 3、右上角的值 < 要查找的值就把所在的行剔除,因为右上角的数是这行最大的。 测试用例: public class FindNumber { /* * 二维数组查找值 * 思路:从二维数组的右上角往左下角进行判断 1、右上角的值 = 要查找的值则返回true 2、右上角的值 > 要查找的值就把所在的列剔除掉,因为右上角的数是这列最小的。 3、右上角的值 < 要查找的值就把所在的行剔除,因为右上角的数是这行最大的。 * * 分析: * 1、创建Method类,创建成员方法find实现判断二维数组是否包含要找的值 * * 2、创建Method对象,创建二维数组,调用find方法,并将其返回值存储在Boolean中并打印 */

css3动画基本

╄→гoц情女王★ 提交于 2020-01-06 04:47:27
Transition:过渡 1>过渡属性: transition-property 要运动的样式 (all || [attr] || none) transition-duration 运动时间 transition-delay 延迟时间 transition-timing-function 运动形式 ease:(逐渐变慢)默认值 linear:(匀速) ease-in:(加速) ease-out:(减速) ease-in-out:(先加速后减速) cubic-bezier 贝塞尔曲线( x1, y1, x2, y2 ) 动画工具网址:http://matthewlein.com/ceaser/ 过渡属性应用实例:    <style>     div{width:100px;height:100px;background:blue;transition:1s;} //参数一:过渡时间为1秒,鼠标划过一1秒内div原样式发生改变(过渡时间,可以是秒-s,或者是毫秒ms)     div{width:100px;height:100px;background:blue;transition:1s 2s;} //参数二:延迟2秒,执行过渡1秒的效果(延迟时间)     div{width:100px;height:100px;background:blue;transition:1s

unity中的透视投影矩阵

て烟熏妆下的殇ゞ 提交于 2020-01-06 04:35:36
一,unity中的Matrix4x4 例如一个矩阵的数据是: 0.9758,0,0,0,0,1.73205,0,0,0,0,-2.25,-16.25,0,0,-1,0 则实际矩阵是: M= m00 m01 m02 m03 m10 m11 m12 m13 m20 m21 m22 m23 m30 m31 m32 m33 = 0.9758 0 0 0 0 1.73205 0 0 0 0 -2.25 -16.25 0 0 -1 0 即将数据一行一行、每行四个写出来形成的矩阵。 Matrix4x4是列主序,即跟opengl一样,使用时是列向量左乘矩阵M*v这种形式。 二,unity中的透视投影矩阵 经过试验,unity中的透视投影矩阵公式与opengl中完全一样,为: 例如前面的矩阵M,便是 near=5 far=13 fov=60 aspect=1.775 时的投影矩阵。 来源: https://www.cnblogs.com/wantnon/p/7248999.html

透视投影变换矩阵

不羁的心 提交于 2020-01-06 04:35:21
方法一: 把视点(xe,ye,ze)平移至原点(0,0,0)的矩阵 对应恢复矩阵(即平移的逆矩阵) 对于视点在(0,0,0),对应【此时】平面方程为a’x’+b’x’+c’z’+d’=0; 视点、p和p’三点共线得: 【此时】空间一点p(x,y,z)在平面上的投影p’=t(x,y,z); 把p’带入【此时】的平面方程,得到t=-d’/( a'x’+b'y’+c'z’); 最终的最对于任意点并且投影平面的方向也是任意的的透视投影变换矩阵 P=T逆P’T *矩阵乘顺序不可交换 方法二(直接直线和面的交点): 视点(xe,ye,ze)空间一点p(x,y,z)在平面上的投影p’=(x',y',z')=t(x,y,z); 平面ax+by+cz+d=0; 把p‘代入 得到t的值;再把t带入参数方程获得p';最终整理得透视投影矩阵P P= 来源: https://www.cnblogs.com/xujiayu/p/4891614.html

OpenGL投影矩阵

落爺英雄遲暮 提交于 2020-01-06 04:33:14
概述 透视投影 正交投影 概述 计算机显示器是一个2D平面。OpenGL渲染的3D场景必须以2D图像方式投影到计算机屏幕上。GL_PROJECTION矩阵用于该投影变换。首先,它将所有定点数据从观察坐标转换到裁减坐标。接着,这些裁减坐标通过除以w分量的方式转换到归一化设备坐标(NDC)。 因此,我们需要记住一点:裁减变换(视锥剔除)与NDC变换都保存在GL_PROJECTION矩阵中。下述章节描述如何从6个限定参数(左、右、下、上、近平面、远平面)构建投影矩阵。 注意,视锥剔除(裁减)在裁减坐标上执行,并且在除以w c 之前。裁减坐标x c 、y c 、z c 会与w c 做比较检测。如果任一坐标小于-w c 或大于w c ,则该顶点将会抛弃。 接着,OpenGL重新构建那些裁减掉的多边形的边。 被视锥裁减的三角形 透视投影 OpenGL透视视锥体与NDC 在透视投影中,截棱锥体(观察坐标)中的3D点会被映射到立方体(NDC)中。x坐标的范围从[l,f]到[-1,1],y坐标的范围从[b,t]到[-1,1],z坐标的范围从[n,f]到[-1,1]。 注意,观察坐标为右手坐标系,NDC使用左右坐标系。也就是说,位于原点的照相机在观察坐标中看向-Z轴,而在NDC中看向+Z轴。因为glFrustum()只接收正的近平面与远平面距离值,我们需要在构建GL