矩阵

numpy创建二维数组

送分小仙女□ 提交于 2020-03-16 12:25:05
(一)直接创建 d=np.array([[10,11,12],[20,21,22],[30,31,32]]) (二)创建元组递增数组 d=np.arange(20).reshape(5,4) (三)创建指定范围的递增数组 d=np.arange(10,20).reshape(5,2) (四)创建随机整数元素的数组 d=np.random.randint(10,99,size=(4,3)) 4行3列,每个元素是从10~(99-1)之间的随机数 (五)创建全0数组 d=np.zeros((4,3)) (六)根据已有数组结构创建全0数组 d1 已有数组 d=np.zeros_like(d1) (七)创建全1数组 d=np.ones((4,3)) 或者 d=np.ones_like(d1) (八)创建相同元素的数组 d=np.ones((4,3))*20 (九)其它 d=np.linspace(10,20,20).reshape(4,5) 从10到20之间,平均分布生成20组数据,生成4行5列数组 来源: https://www.cnblogs.com/jm7612/p/12502833.html

机器学习之初识KNN算法——针对泰坦尼克号生存记录建模的两种方法

我只是一个虾纸丫 提交于 2020-03-16 09:46:41
KNN算法原理 本篇博客基于《机器学习实战》实现 算法原理简要概括,重在代码实现 k-近邻算法(kNN)的工作原理是:存在一个样本数据集合,称训练样本集,并且样本集中每个数据都存在标签,即样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似的数据(距离最近)的分类标签。 如图,图中绿点的标签是未知的,但已知它属于蓝方块和红三角二者其一,怎么判断出它属于哪一方呢? kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。 在上图实线圆圈内,红三角有两个,而蓝方块只有一个,所以它是红三角的可能性大;但在虚线圈内,红三角有两个,蓝方块却有三个,那么它是蓝方块的可能性就越大;所以对于kNN算法, k的取值不同 ,得出的结果可能也会不同,k的取值很大程度上决定了这个模型的准确率。 KNN算法步骤 收集数据:爬虫、公开数据源 数据清洗:处理缺失值、无关特征 导入数据,转化为结构化的数据格式 数据归一化、标准化 计算距离(欧氏距离最通用) 对距离升序排列,取前K个 判断测试数据属于哪个类别 计算模型准确率 KNN算法实现 其中 Pclass,Sex,Age,SibSp,Parch

机器学习KNN算法之手写数字数字识别

强颜欢笑 提交于 2020-03-16 09:36:47
算法简介 手写数字识别是KNN算法一个特别经典的实例,其数据源获取方式有两种,一种是来自MNIST数据集,另一种是从UCI欧文大学机器学习存储库中下载,本文基于后者讲解该例。 基本思想就是利用KNN算法推断出如下图一个32x32的二进制矩阵代表的数字是处于0-9之间哪一个数字。 数据集包括两部分,一部分是训练数据集,共有1934个数据;另一部分是测试数据集,共有946个数据。所有数据命名格式都是统一的,例如数字5的第56个样本—— 5_56.txt ,这样做为了方便提取出样本的真实标签。 数据的格式也有两种,一种是像上图一样由0、1组成的文本文件;另一种则是手写数字图片,需要对图片做一些处理,转化成像上图一样的格式,下文皆有介绍。 算法步骤 收集数据:公开数据源 分析数据,构思如何处理数据 导入训练数据,转化为结构化的数据格式 计算距离(欧式距离) 导入测试数据,计算模型准确率 手写数字,实际应用模型 由于所有数据皆由0和1构成,所以不需要数据标准化和归一化这一步骤 算法实现 处理数据 在计算两个样本之间的距离时,每一个属性是一一对应的,所以这里将32x32的数字矩阵转化成1x1024数字矩阵,方便计算样本之间距离。 #处理文本文件 def img_deal(file): #创建一个1*1024的一维零矩阵 the_matrix = np.zeros((1,1024)) fb =

LeetCode 695. 岛屿的最大面积

情到浓时终转凉″ 提交于 2020-03-15 20:52:51
695. 岛屿的最大面积 难度 中等 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。 找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。) 示例 1: [[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1,1,0,1,0,0,0,0,0,0,0,0], [0,1,0,0,1,1,0,0,1,0,1,0,0], [0,1,0,0,1,1,0,0,1,1,1,0,0], [0,0,0,0,0,0,0,0,0,0,1,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,0,0,0,0,0,0,1,1,0,0,0,0]] 对于上面这个给定矩阵应返回 6 。注意答案不应该是11,因为岛屿只能包含水平或垂直的四个方向的‘1’。 示例 2: [[0,0,0,0,0,0,0,0]] 对于上面这个给定的矩阵, 返回 0 。 注意: 给定的矩阵 grid 的长度和宽度都不超过 50。 解题思路:遍历二维数组并且搜索岛屿,搜索到岛屿后将其代入函数,使用递归,将岛屿上下左右都进行搜索,并且,将已经搜索过的岛屿覆盖复制,最后返回岛屿面积,与最大面积对比

矩阵的加、减、乘、除、求逆运算的实现

爷,独闯天下 提交于 2020-03-15 19:42:31
1、矩阵的加减乘除求逆运算的概念:   (1)矩阵概念 有 m n 个数排列成一个 m 行 n 列,并括以方括弧(或圆括弧)的数表称为 m 行 n 列矩阵。   (2)矩阵加法:   (3)矩阵乘法:   (4)矩阵的求逆运算   (5)矩阵的除法:     分成两种(1)A\B=inverse(A)*B (2)B/A=B*inverse(A),理解上可能有误,不过是按照这两种方式来运算的。。 2、要求:   要求很简单:编写一个实现矩阵(向量)的+ - * / 求逆运算的类(女友的一个作业题) 3、实现代码    View Code 1 #include<stdio.h> 2 #include<stdlib.h> 3 #define col 3 4 #define row 3 5 class matrix//类的定义 6 { 7 private: 8 double m[col][row];//矩阵设置为私有的, 9 public: 10 matrix(){}//无参数的构造函数 11 matrix(double a[col][row]);//有参数的构造函数 12 matrix Add(matrix &b);//加法运算声明 13 matrix Sub(matrix &b);//减法运算声明 14 matrix Mul(matrix &b);//乘法运算声明 15 matrix

C#矩阵运算类库

对着背影说爱祢 提交于 2020-03-15 19:42:07
这个类库是本人参考许多相关资料之后做出的C#矩阵运算类库,因为C#的数值计算库相对比较少,所以希望这个类库能够给大家带来一些帮助。 源码github网址: https://github.com/JoshuaHe2015/MatrixLibrary 功能介绍:(持续更新中) 1、矩阵的基本运算:   矩阵的加、减、乘、除、求逆、求幂、求秩、求行列式、转置。运算包括矩阵与矩阵的运算,矩阵与向量的运算和矩阵与标量的运算。 1 using System; 2 using LinearAlgebra; 3 namespace MatrixLibraryTest 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 Matrix A = Matrix.Create(2, 2, new double[] { 1, 2, 3, 4 }); 10 Matrix B = new double[,] { 11 { 5, 6 }, 12 { 7, 8 } }; 13 Matrix C = A + B; 14 Matrix D = A * 2; 15 Matrix E = A * B; 16 Matrix F = E.Inverse(); 17 Console.WriteLine(C); 18 Console.WriteLine(D)

Java语言基础02

早过忘川 提交于 2020-03-15 12:36:56
语言基础·二级 顺序结构语句 * A:什么是流程控制语句 * 流程控制语句:可以控制程序的执行流程。 * B:流程控制语句的分类 * 顺序结构 * 选择结构 * 循环结构 * C:执行流程: * 从上往下,依次执行。 * D:案例演示 * 输出几句话看效果即可 选择结构if语句格式 * A:选择结构的分类 * if语句 * switch语句 * B:if语句有几种格式 * 格式1 * 格式2 * 格式3 * C:if语句的格式1 * if(比较表达式) { 语句体; } * D:执行流程: * 先计算比较表达式的值,看其返回值是true还是false。 * 如果是true,就执行语句体; * 如果是false,就不执行语句体; * A:if语句的格式2 * if(比较表达式) { 语句体1; }else { 语句体2; } * B:执行流程: * 首先计算比较表达式的值,看其返回值是true还是false。 * 如果是true,就执行语句体1; * 如果是false,就执行语句体2; * C:案例演示 * a:获取两个数据中较大的值 * b:判断一个数据是奇数还是偶数,并输出是奇数还是偶数 * 注意事项:else后面是没有比较表达式的,只有if后面有。 * A:if语句的格式3: * if(比较表达式1) { 语句体1; }else if(比较表达式2) { 语句体2; }else

Qt之坐标系统

匆匆过客 提交于 2020-03-15 09:06:05
简述 坐标系统是由QPainter类控制的,再加上QPaintDevice和QPaintEngine类,就形成了Qt的绘图体系。 QPainter:用于执行绘图操作。 QPaintDevice:二维空间的抽象层,可以使用QPainter在它上面进行绘制。 QPaintEngine:提供了统一的接口,用于QPainter在不同的设备上进行绘制。 QPaintDevice类是可以被绘制的对象的基类,它的绘图功能由QWidget、QImage、QPixmap、QPicture和QOpenGLPaintDevice继承。默认坐标系统位于设备的左上角,即坐标原点(0, 0)。X轴由左向右增加,Y轴由上向下增加。在基于像素的设备上(比如:显示器),坐标的默认单位是1像素;在打印机上则是1点(1/72 英寸)。 QPainter逻辑坐标与QPaintDevice物理坐标的映射,由QPainter的变换矩阵(transformation matrix)、视口(viewport)和窗口(window)完成。默认情况下,物理坐标与逻辑坐标系统是重合的,QPainter也支持坐标转换,例如:旋转、缩放。 简述 渲染 逻辑表示 锯齿绘制 抗锯齿绘制 坐标转换 窗口-视口转换 更多参考 渲染 逻辑表示 一个图形图元的大小(宽度和高度)总是对应于它的数学模型,忽略绘制时画笔的宽度: 锯齿绘制 绘制的时候

第一篇博客

旧巷老猫 提交于 2020-03-15 02:04:32
今天终于开通了博客园,先说说自己吧,今年刚毕业,工作两个月,方向是计算机视觉,模式识别,机器学习等。写这篇博客作为自己新的开始,记录自己在学习路上的点点滴滴,希望可以和广大博友交流,共同进步。就目前而言,我将自己最近的学习重心放在数学基础知识上。工作后才发现,数学是多么的重要,一些大神的文章的算法完全看不懂,一味的搬移和修改代码,即使程序实现,但没有亲自推算一边算法的过程,就感觉不是自己的知识。 目前正在学习的资料有:孟老师的《矩阵理解》,科学空间的《新矩阵理解》,神奇的矩阵,重温微积分,矩阵分析,数学之美,重温微积分等。 不积硅步,无以至千里,希望不忘初心,与君共勉! 来源: https://www.cnblogs.com/gy-jhh-12138/p/7552869.html

最小二乘法

我的梦境 提交于 2020-03-14 15:42:26
1、前言 a、本文主性最小二乘的标准形式,非线性最小二乘求解可以参考Newton法 b、对于参数求解问题还有另外一种思路:RANSAC算法。它与最小二乘各有优缺点: --当测量值符合高斯分布(或者说测量误差符合期望为0的高斯分布),使用最小二乘比较合适,可以获得比较稳定且很高的精度。 而当误差服从高斯分布的情况下, 最小二乘法等价于极大似然估计。 --当测量值离散性比较大,存在很多outliers,那么使用最小二乘求解就会存在很大的误差,此时使用RANSAC算法更合适。 线性最小二乘只适用于参数模型会线性关系的情形,RANSAC则没有此限制。 c、线性最小二乘又分为齐次线性最小二乘和非齐次线性最小二乘。 2、非齐次方程组的最小二乘解 a、 非齐次线性最小二乘的标准形式: AX = B (1) 其中A、B分别为测量数据构成的矩阵与向量,X为待求参数向量。 这里主要针对方程数多于未知元素的情形--超定方程组。 b、为什么要用最小二乘求解参数: 举例: ,其中 为测量已知量, 为待求量。 那么只需要三组 就可以求出 。实际情况是某次实验不止测了三组数据: 如何在(1,2,3,29)(2,1,1,13)(3,2,4,37)(2,4,2,33)(4,2,1,23)这些测量数据中求出最准确的 ? 结论:当数据存在冗余,且数据噪声偏差不大的情况下适合用最小二乘求解。 c、如何转化为最小二乘形式: