矩阵

线回与非线回---线性回归标准方程法

廉价感情. 提交于 2020-02-21 17:21:12
前言: 解决线性回归问题不仅可以使用梯度下降法,还可以使用标准方程法,今天我将尝试用标准方程法来解决问题 正文: #老朋友就不介绍了 import numpy as np from numpy import genfromtxt import matplotlib.pyplot as plt #载入数据 data = np.genfromtxt("data.csv",delimiter = ",") #增加维度 x_data = data[:,0,np.newaxis] y_data = data[:,1,np.newaxis] #描点画图 plt.scatter(x_data,y_data) plt.show() 图片展示: #np.mat函数用来把数据转化为数组矩阵 print(np.mat(x_data).shape) print(np.mat(y_data).shape) #给样本添加偏置项 #用concatenate函数来合并项 #np.ones函数来创建全为1数组矩阵 x_data = np.concatenate((np.ones((100,1)),x_data),axis = 1) print(x_data.shape) 图片显示如下: 可以看到x_data修改后的格式 #用标准方程来求参数 def weights(xArr,yArr): #用mat函数来生成矩阵

Java二维数组

霸气de小男生 提交于 2020-02-21 11:29:52
二维数组 二维数组是一个特殊的一维数组,是由一个由行和列组成的一个表格,矩阵Matrix其每一个元素都是一个一维数组,例如: String str[][] = new String[3][4]; 我们在这个矩阵中访问元素的话,是根据元素的行角标和列角标所确定的 特别的,如果一个二维数组的行和列相等的话,也称之为是方阵 二维数组在内存中的存储 无论是二维数组,还是多维数组,它们本身就是一个一维数组 尤其对于二维数组而言,无非就是一个一维数组,只不过该一维数组中的每一个元素是另一个一维数组罢了! 如何创建二维数组 创建一个3行4列的二维数组,元素默认都是0 int[][] matrix=new int[3][4]; 创建个指定元素的二维数组 int[][] matrix=new int[][]{{1,2,3,4},{2,3,4,5},{3,4,5,6}}; class Test01{ public static void main(String[] args){ int[][] matrix=new int[][]{ {1,2,3,4}, {5,6,7,8}, {8,7,6,5}, {4,3,2,1} }; //matrix.length 表示的就是最外层那个一维数组的长度 行数 //matrix[i] 表示的是最外层那个一维数组当中角标i的那个元素 只不过这个元素也是一个一维数组 /

潜在语义分析(LSA)的原理讲解以及python实现

独自空忆成欢 提交于 2020-02-21 11:27:46
在传统的文本信息处理中,以单词向量表示文本的语义内容,以单词向量空间的度量来表示文本之间的语义近似度。这种方法不能准确表示语义。 潜在语义分析试图从大量的文本数据中发现潜在的话题,以话题向量来表示文本的语义内容,以话题向量的空间度量更准确地表示文本之间的语义相似度。 潜在语义分析使用的是非概率的话题分析模型,具体来说,就是将文本集合表示为单词-文本矩阵,对单词-文本矩阵进行奇异值分解,从而得到话题向量空间,以及文本在话题向量空间的表示。可采用的矩阵分解方法有: 奇异值分解、非负矩阵分解。 给定一个含有 n n n 个文本的集合 D = { d 1 , d 2 , ⋯   , d n } D=\{d_1,d_2,\cdots,d_n\} D = { d 1 ​ , d 2 ​ , ⋯ , d n ​ } ,以及在所有文本中出现的 m m m 个单词 W = { w 1 , w 2 , ⋯   , w m } W=\{w_1,w_2,\cdots,w_m\} W = { w 1 ​ , w 2 ​ , ⋯ , w m ​ } ,则将单词在文本中出现的数据用一个单词-文本表示,记作 X X X 。 X = [ x i j ] m × n X = [x_{ij}]_{m\times n} X = [ x i j ​ ] m × n ​ 其中,元素 x i j x_{ij} x i j ​

二维数组的扩展

∥☆過路亽.° 提交于 2020-02-21 07:22:57
1.二维数组的含义 由行和列组成的表格,尤其对于二维数组而言,无非就是一个一维数组,只不过该一维数组中的每一个元素是另一个一维数组。 2.二维数组的创建 2.1 创建一个3行3列的二维数组,元素默认都是0 int[][] matrix=new int[3][3]; 2.2 创建一个指定元素的二维数组(两种方法) int[][] matrix=new int[][]{ {1,2,3} ,{5,6,7} ,{9,10,12} }; int[][] matrix={ {1,2,3,4} ,{5,6,7,8} ,{9,10,11,12} }; 3.二维数组的应用 import java.util.*; class Demo57{ public static void main(String[] args){ //调用函数实现数组的赋值 int[] list1=fun(); int[] list2=fun(); //打印两个数组合并的升序数组,转换成字符串输出 System.out.println(Arrays.toString(merge(list1,list2))); } /* 有序数组的合并 最主要的问题在于 数组之间有长有短 */ public static int[] merge(int[] list1,int[] list2){ //判断两个字符串是否为空,为空的话结束 if

MIT18.06线性代数(5) 行列式与马尔科夫矩阵和傅里叶级数的理解

拜拜、爱过 提交于 2020-02-21 06:34:13
行列式是一个数字。 行列式能尽可能的把矩阵的信息表示出来。比如行列式为0矩阵不可逆。 交换行或者列行列式变符号,这意味着交换矩阵它的行列式是1或者-1.因为交换矩阵可以把其他矩阵的行列交换。 行或者列乘个t,那么整个行列式的值需要乘个t。 行列式每行都有可加性 A − 1 = 1 d e t A A ∗ A^{-1}=\frac 1 {det A} A^* A − 1 = d e t A 1 ​ A ∗ ,其中 A ∗ A^* A ∗ 是伴随矩阵(当前元素是即去掉当前行当前列的矩阵行列式值) 行列式值等于当前行的各元素与对应代数余子式的线性加权和。 克拉默法则(Cramer’s Rule)求Ax=b中的x就是利用伴随矩阵求 A − 1 A^{-1} A − 1 ,然后 x = A − 1 b x=A^{-1}b x = A − 1 b 行列式的绝对值是行向量那几条边构成的几何体的体积(如果是二维那就是面积)。 特征值 特征值之和等于对角线元素之和 求特征值 d e t ( A − λ I ) = 0 det(A-\lambda I)=0 d e t ( A − λ I ) = 0 越部队称的矩阵特征值越可能是复数 特征值不同特征向量一定不线性相关,但是特征值相同不一定特征向量线性相关。 根据特征值和特征向量构造对角矩阵 矩阵对角化,本质就是利用Ax=λx这个来构造对角矩阵

【线性代数公开课MIT Linear Algebra】 第二十三课 微分方程与exp(At)

百般思念 提交于 2020-02-21 06:33:24
本系列笔记为方便日后自己查阅而写,更多的是个人见解,也算一种学习的复习与总结,望善始善终吧~ 一阶常系数微分方程 A u = d u d t 将一阶常系数微分方程转换为线性代数问题的关键在于常系数微分方程的解一定是 指数形式 的。那么我们的需要求解的东西就是指数的系数和指数的幂,而这可以转换为线性代数问题。 解的指数形式通常是自然常数 e 的指数(猜测是因为时域信号可以转到频域,傅里叶变换,这方面学识浅薄) 这个形式很容易让我们联想到之前对于矩阵 A 的幂的求解,这里看一个例子: 这里问题被转换为了求解 A u = d u d t 特征值与特征向量 先找 A 的特征值和特征向量 求解特征值 两个小技巧: 行列式determinant为特征值的积 矩阵的迹trace为特征值的和 当然可以直接求解determinant=0得到特征值: 由于老师直接剧透 e 的幂系数中为矩阵 A 的特征值,那么对于特征值-3来说,随着t的增加,最终这一项为0;而对于特征值0来说,随着t增加,最终这一项为某一个确定值(解会收敛);举一反三:对于特征值大于0,随着t增加,解发散。 求解特征向量 两个小技巧: 对于特征值为0,特征向量即为null space,free variable自由变量置1很容易求得 对于另一个特征值-3,利用 A − λ I 特征向量不变,也可以转换为求解null space

深入理解 “协方差矩阵”(python 模拟)

烂漫一生 提交于 2020-02-21 05:25:23
深入理解“协方差矩阵”(python模拟) 协方差矩阵时机器学习中常用的概念,应该是像是牛顿三大定律一样章口就莱。但是真当用到的时候却还是模棱两可,需要重新查资料确认,这次就写一篇文章一次性给自己说清楚,也争取能给大家说清楚。 方差和协方差 先弄清楚方差和协方差才能深入理解协方差矩阵(以下给出的均为统计学中的定义) 方差 :是用来度量单个随机变量的变化程度(也称离散程度) 协方差 :用于衡量两个随机变量总体变化程度。 有的地方说:“协方差刻画两个随机变量的相似程度”,这种表述是不够准确的,可以说:“刻画两个随机变量偏离各自期望的的程度的程度”。这么说就很绕,下面给出百度百科的解释 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。(百度百科) 网上还有一种比喻就是说方差就像是在一群人中衡量一个人的身高;而协方差是在一群中衡量一个人的升高和体重(也许对有些人会比较好理解,下面的说明也会用到这个例子) 下面给出 方差 的方程: σ x 2 = 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) 2 \sigma_x^2=\frac{1}{n-1}\sum_{i=1}^n(x_i-

二维数组的最大联通子数组

 ̄綄美尐妖づ 提交于 2020-02-21 05:16:23
·主要思路:二维连通数组求最大子数组,我们在这里主要运用了降维的思想,主要是通过将二维数组转化为一维数组求最大子数组的思想,在项目中定义一个算法,用于实现一行连续数组的最大子数组,并用p q记录最大子数组的起始结束位置下标。在主函数中利用for循环实现二维数组每一行最大子数组的求和,在利用循环实现最大子数组的连接,添加对单独正数据的判断,从而实现连通的最大子数组问题。 ·代码如下 import java.util.Scanner; public class Test { static int q=0,p=0; static Scanner str=new Scanner(System.in); public static void main(String args[]) { int m1=0,m2=0; int max=0; int sum=0; System.out.println("输入二维数组的行列数"); m1=str.nextInt(); m2=str.nextInt(); int [][]a=new int[m1][m2]; int []b=new int[m2]; int []left=new int[m2]; int []right=new int[m2]; int []t=new int[m2]; for (int i = 0; i < m1; i++) {

23数组矩阵-三角矩阵

陌路散爱 提交于 2020-02-21 03:17:22
# include <stdio.h> # include <stdlib.h> # include <string.h> # define SIZE 4 int main ( void ) { int test [ SIZE ] [ SIZE ] ; int i , j ; char temp ; for ( i = 0 ; i < SIZE ; i ++ ) { for ( j = 0 ; j < SIZE ; j ++ ) { scanf_s ( "%d" , & test [ i ] [ j ] ) ; temp = getchar ( ) ; } } /////////////////////// //验证输入: printf ( "--------------------------------\n" ) ; for ( i = 0 ; i < SIZE ; i ++ ) { for ( j = 0 ; j < SIZE ; j ++ ) { printf ( "%d " , test [ i ] [ j ] ) ; } printf ( "\n" ) ; } /////////////////////////////////////////////// //存储上三角与下三角 int top [ SIZE * ( SIZE + 1 ) / 2 ] ; int

1.3 图像的数据结构

天大地大妈咪最大 提交于 2020-02-21 02:11:31
数字图像处理中常用的数据结构有矩阵、链表、拓扑结构和关系结构 图像的数据结构用于目标表示和表述 1.3.1 矩阵 矩阵用于描述图像,可以表示黑白图像、灰度图像和彩色图像。 矩阵中的一个元素表示图像的一个像素 矩阵描述黑白图像时,矩阵中的元素取值只有0和1两个值,一次黑白图像又叫做二值图像或二进制图像 矩阵描述灰度图像时,矩阵中的元素有一个量化的灰度级描述,灰度级通常为8位,即0~255之间的整数,其中0表示黑色,255表示白色。现实中的图像都可以表示成灰度图像,根据图像精度的要求可以扩展灰度级,由8位扩展为10位、12位、16位或更高。越高的灰度值所描述的图像越细腻,对存储空间的要求也越大。 RGB彩色图像是由三原色红、绿、蓝组成的,RGB图像的每个像素都由不同灰度级的红、绿、蓝描述,每种单色的灰度描述同灰度图像的描述方式相同 1.3.2 链码 链码用于描述目标图像的边界,通过规定链的起始坐标和链起始点坐标的斜率,用一小段线段来表示图像中的曲 链码按照标准方向的斜率分为4向链码或8向链码 因为链码表示图像边界时,只需标记起点坐标,剩余点用线段的方向数代表方向即可 边界链码的表示与起始点的选取直接相关,起始点不同,链码的表示也不相同 为了实现链码与起始点无关,需要将链码归一化 简单的归一化方法将链码看成一个自然数,取不同的起始点,得到不同的链码