矩阵

MATLAB入门(向量与矩阵基本操作)

旧街凉风 提交于 2020-02-01 10:14:16
MATLAB向量的创建 1、行向量 行向量有两种表示方法 %示例1 R1 = [1 2 3 4 5] R2 = [1,3,5,7,9] R = R1 + R2 %结果1 R1 = 1 2 3 4 5 R2 = 1 3 5 7 9 R = 2 5 8 11 14 2、列向量 %示例2 C = [9;1;8;2;7;3] %结果2 C = 9 1 8 2 7 3 矩阵 MATLAB的功能极其强大,其强大功能之一便是可以直接处理向量与矩阵。 %矩阵的创建 %3*3矩阵 X=[1 2 3;4 5 6;7 8 9] X = 1 2 3 4 5 6 7 8 9 %矩阵的转置 X1=X' >> X' ans = 1 4 7 2 5 8 3 6 9 %求矩阵的逆 %way1 I=[1 1 1]; I=diag(I) X2=I/X %way2 X2=inv(X) %矩阵转化为列向量 X3=X(:) >> X(:) ans = 1 4 7 2 5 8 3 6 9 来源: CSDN 作者: Yao_ch 链接: https://blog.csdn.net/weixin_43416601/article/details/104129261

推荐系统相关算法(1):SVD

一世执手 提交于 2020-02-01 06:41:30
http://www.cnblogs.com/FengYan/archive/2012/05/06/2480664.html 1. SVD简介 假如要预测Zero君对一部电影M的评分,而手上只有Zero君对若干部电影的评分和风炎君对若干部电影的评分(包含M的评分)。那么能预测出Zero君对M的评分吗?答案显然是能。最简单的方法就是直接将预测分定为平均分。不过这时的准确度就难说了。本文将介绍一种比这个最简单的方法要准上许多,并且也不算复杂的算法。 SVD(Singular Value Decomposition)的想法是 根据已有的评分情况,分析出评分者对各个因子的喜好程度以及电影包含各个因子的程度,最后再反过来根据分析结果预测评分 。电影中的因子可以理解成这些东西:电影的搞笑程度,电影的爱情爱得死去活来的程度,电影的恐怖程度。。。。。。SVD的想法抽象点来看就是将一个N行M列的评分矩阵R(R[u][i]代表第u个用户对第i个物品的评分),分解成一个N行F列的用户因子矩阵P(P[u][k]表示用户u对因子k的喜好程度)和一个M行F列的物品因子矩阵Q(Q[i][k]表示第i个物品的因子k的程度)。用公式来表示就是 R = P * T(Q) //T(Q)表示Q矩阵的转置 下面是将评分矩阵R分解成用户因子矩阵P与物品因子矩阵Q的一个例子。R的元素数值越大,表示用户越喜欢这部电影

推荐系统相关算法(1):SVD

十年热恋 提交于 2020-02-01 06:40:52
假如要预测Zero君对一部电影M的评分,而手上只有Zero君对若干部电影的评分和风炎君对若干部电影的评分(包含M的评分)。那么能预测出Zero君对M的评分吗?答案显然是能。最简单的方法就是直接将预测分定为平均分。不过这时的准确度就难说了。本文将介绍一种比这个最简单的方法要准上许多,并且也不算复杂的算法。 SVD(Singular Value Decomposition)的想法是 根据已有的评分情况,分析出评分者对各个因子的喜好程度以及电影包含各个因子的程度,最后再反过来根据分析结果预测评分 。电影中的因子可以理解成这些东西:电影的搞笑程度,电影的爱情爱得死去活来的程度,电影的恐怖程度。。。。。。SVD的想法抽象点来看就是将一个N行M列的评分矩阵R(R[u][i]代表第u个用户对第i个物品的评分),分解成一个N行F列的用户因子矩阵P(P[u][k]表示用户u对因子k的喜好程度)和一个M行F列的物品因子矩阵Q(Q[i][k]表示第i个物品的因子k的程度)。用公式来表示就是 R = P * T(Q) //T(Q)表示Q矩阵的转置 下面是将评分矩阵R分解成用户因子矩阵P与物品因子矩阵Q的一个例子。R的元素数值越大,表示用户越喜欢这部电影。P的元素数值越大,表示用户越喜欢对应的因子。Q的元素数值越大,表示物品对应的因子程度越高。分解完后,就能利用P,Q来预测Zero君对《七夜》的评分了

matlab数组运算与数组化编程

寵の児 提交于 2020-02-01 04:27:21
matlab中的运算和操作主要是以数组为对象的, 数组又包括:数值数组、字符数组、元胞数组等。 一、数值数组的建立: 1. 直接输入法: 逗号:用来分开数组中的行元素。(可用空格代替) 分号:用来将数组中的行分开。 (可用回车键代替) 中括号[ ]:界定数组的首与尾。 a=[1,2,3,8,-1], b=[1;2;3;8;-1], A= [2,4,1;0,-2,4;2,4,6] 2.通过数组编辑器生成矩阵 步骤:先建立空矩阵a=[], 然后在工作空间(workspace)中点开a进入数组编辑器,输入元素。 3. 数据导入法: matlab可在主界面上直接导入excel文件、纯文本文件中的数据。 4.用函数创建数组 定步长生成法: x=a:t:b (t步长,省略是为1); 定数线性采样法: x=linspace(a,b,n),a与b是数组的第一个和最后一个元素,n是采样的总点数。 zeros(m): m阶全零方阵 zeros(m,n): m×n阶全零阵 eye(m): m阶单位阵 eye(m): m阶单位阵 ones(m,n): m×n阶全1方阵 rand(m): m阶在[0,1]上均匀分布随机方阵 randn(m): m阶标准正态分布随机方阵 rand(m,n), randn(m,n) 二、字符数组、元胞数组的建立: 字符数组输入法:用单引号输入字符数组,如:A=‘matlab’

1030. Matrix Cells in Distance Order

天大地大妈咪最大 提交于 2020-02-01 04:02:08
1030. 距离顺序排列矩阵单元格 给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c) ,满足 0 <= r < R 且 0 <= c < C 。 另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。 返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格 (r1, c1) 和 (r2, c2) 之间的距离是曼哈顿距离, |r1 - r2| + |c1 - c2| 。(你可以按任何满足此条件的顺序返回答案。) 示例 1: 输入:R = 1, C = 2, r0 = 0, c0 = 0 输出:[[0,0],[0,1]] 解释:从 (r0, c0) 到其他单元格的距离为:[0,1] 示例 2: 输入:R = 2, C = 2, r0 = 0, c0 = 1 输出:[[0,1],[0,0],[1,1],[1,0]] 解释:从 (r0, c0) 到其他单元格的距离为:[0,1,1,2] [[0,1],[1,1],[0,0],[1,0]] 也会被视作正确答案。 示例 3: 输入:R = 2, C = 3, r0 = 1, c0 = 2 输出:[[1,2],[0,2],[1,1],[0,1],[1,0],[0,0]] 解释:从 (r0, c0) 到其他单元格的距离为:[0,1,1,2,2,3]

对称矩阵的判定

耗尽温柔 提交于 2020-02-01 03:10:32
对称矩阵的判定 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 输入矩阵的行数,再依次输入矩阵的每行元素,判断该矩阵是否为对称矩阵,若矩阵对称输出“yes",不对称输出”no“。 Input 输入有多组,每一组第一行输入一个正整数N(N<=20),表示矩阵的行数(若N=0,表示输入结束)。 下面依次输入N行数据。 Output 若矩阵对称输出“yes",不对称输出”no”。 Sample Input 3 6 3 12 3 18 8 12 8 7 3 6 9 12 3 5 8 12 6 3 0 Sample Output yes no Hint Source #include<stdio.h> int main ( ) { int n,i,j,f ; int a [ 30 ] [ 30 ] ; while ( scanf ( "%d" , & n ) != EOF && ( n != 0 )) { f = 1 ; for ( i = 0 ; i < n ; i++ ) { for ( j = 0 ; j < n ; j++ ) { scanf ( "%d" , & a [ i ] [ j ] ) ; } } for ( i = 0 ; i < n ; i++ ) { for ( j = 0 ; j < n

程序员的能力矩阵

孤人 提交于 2020-02-01 00:30:05
转载自:https://blog.csdn.net/u012635648/article/details/72779050 原文:https://sijinjoseph.com/programmer-competency-matrix/ 注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识。 计算机科学 Computer Science 2 n 2^n 2 n (level 0) n 2 n^2 n 2 (level 1) n n n (level S2) l o g ( n ) log(n) l o g ( n ) (level 3) 备注 数据结构 不知道数组和链表的差异 能够解释和使用数组,链表,字典等,并且能够用于实际的编程任务。 了解基本数据结构时间和空间的这种,比如数组vs链表,能够解释如何实现哈希表和处理冲突,了解优先队列及其实现 高等的数据结构的知识,比如B-树、二顶堆、斐波那契堆、AVL树、红黑树、伸展树、跳跃表以及前缀树等。 算法 不能够找出一个数组各数的平均值(这令人难以置信,但是我的确在应聘者中遇到过) 基本的排序,搜索和数据的遍历和检索算法 树、图、简单的贪婪算法和分而治之算法,能够适度了解矩阵该层的含义 能够辨识和编写动态规划方案,良好的图算法知识,良好的数值估算的知识,能够辨别NP问题等 与优秀的程序员一起工作是一件快事

剑指Offer-01.二维数组中的查找

不羁岁月 提交于 2020-01-31 23:47:58
源自: https://blog.csdn.net/dawn_after_dark/article/details/80594914 二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路 1. 暴力双层循环解法 2. 曼哈顿问题变形的解法 这时我们可能这样想,可以根据当前位置的数和目标值进行比较,从而决定我们要查找的区域。 假如我们从左上角开始的,如果当前的值小于目标值,那么目标值可能位于该值的右边和下边。这时我们搜索区域其实没有变化,还是跟以前,同时右边和下边的搜索区域还会重叠,造成不必要的判断。 所以我们能不能做到对一个位置进行判断后,就可以将下一次的搜索范围缩小呢?当然能,我们可以利用这个有序的数组的特性,不妨从右上角开始: 如果当前位置的数大于目标值,说明该位置以下的数都大于目标值,所以目标值只可能存在左边,这样我们的搜索范围就可以删除一列。 如果当前位置的数小于目标值,说明该位置以左的数都小于目标值,所以目标值只可能存在于该位置的下边或者右边。又因为右边的区域已是我们考察过得区域(已经删除),所以只能在下边。 重复以上,直到找到目标值为止。或超出数组边界。 这种思路有种像曼哈顿街区问题的变形

Java基础——数组

。_饼干妹妹 提交于 2020-01-31 22:58:13
Java基础——数组 数组 数组的概念:存储同一种 数据类型 多个元素的集合,既可以存储 基本数据类型 ,也可以存储 引用数据类型 。 数组的作用:为了存储 同种数据类型 的多个值。 定义格式: 数据类型[] 数组名 = new 数据类型[数组的长度];( 动态初始化 ) 数据类型[] 数组名 = {元素1,元素2,···};( 静态初始化 ) 数组的初始化 定义:为数组开辟连续的内存空间,并为每一个数据元素赋值。 分类: 动态初始化:只指定长度,由系统给出默认初始化值。 静态初始化:给出初始化值,由系统指定长度。 Java中的内存分配以及栈和堆的区别 内存分配 栈通过得到堆的地址找到相应的堆 栈和堆的区别 栈:存储 局部变量 (定义子啊方法声明上和方法中的变量),具有 先进后出 的原则。 堆:存储 new 出来的数组和对象。 数组操作中两个常见的小问题 数组索引越界异常 ArrayIndexOutOfBoundsException 原因:访问了不存在的索引 空指针异常 NullPointerException 原因:当数组引用赋值为 null ,再去调用数组中的元素 一维数组的基本操作 数组的遍历 定义:依次输出数组中的每一个元素 数组的长度: Array.length 数组的最大索引: Array.length-1 一维数组的遍历 /* 数组的遍历,利用方法提高复用性 */

混淆矩阵tf.math.confusion_matrix

匆匆过客 提交于 2020-01-31 21:39:45
二维矩阵每一列预测标签中的数字代表该类别预测值,每一行真实标签中的数字的总和代表的是该类别的真实总数量。 假设有一个用来对猫cat、狗dog、兔子rabbit进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结。 假设总共有 27 只动物:8只猫, 6条狗, 13只兔子。结果的混淆矩阵如上图,在这个混淆矩阵中: 第一行猫类别实际真实有8只,但是分类系统将其中3只预测成了狗; 第二行狗类别实际真实有6只,但是分类系统将其中1只预测成了兔子,2只预测成了猫; 第三行兔子类别实际真实有13只,但是分类系统将其中2只预测成了狗; 从混淆矩阵中我们可以看出分类系统对于区分猫、狗存在一些问题,但是区分兔子的效果还算可以的。 分类系统所有正确的预测结果都在从左上角到右下角的斜对角线上,所以从混淆矩阵中可以很方便直观的看出预测哪里有错误。 监督学习:混淆矩阵 confusion_matrix(labels, predictions, num_classes=None, weights=None, dtype=tf.int32, name=None) 根据真实标签labels和预测标签predictions计算混淆矩阵。 矩阵的列表示预测标签predictions,矩阵的行表示真实标签labels。 混淆矩阵总是一个二维的形状数组[n,n],其中n是给定分类任务的有效标签数。