矩阵

矩阵快速幂

核能气质少年 提交于 2020-04-06 19:30:42
矩阵快速幂 \(emmm\) ,考试上面见到的,以前听颜神讲过一遍但是没有听懂,现在看一下还是比较妙妙的 矩阵乘法 矩阵乘法是什么? 简而言之就是 \[c_{ij} = \quad\sum_{k=1}^na_{ik} *b_{kj} \] 举个简单的例子 \[\left\{ \begin{matrix} 14 \\ 32 \\ 50 \end{matrix} \right\} = \left\{ \begin{matrix} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9 \end{matrix} \right\} * \left\{ \begin{matrix} 1\\ 2 \\ 3 \end{matrix} \right\} \] 真简单哇!(光速溜 \(emmm\) ,这就是矩阵乘法的定义 下面给出详细代码 int n;//矩阵大小 void Up(int &x, int y) { x = (x + y) % mod; }//简单定义 += struct Matrix { int a[n][n];//矩阵 friend Matrix operator *(const Matrix x, const Matrix y)//定义矩阵类型的乘法 { Matrix c;//定义新的矩阵用来存储结果 memset(c.a, 0, sizeof(c.a));//初始化

Python的稀疏矩阵和参数保存 save/load

别等时光非礼了梦想. 提交于 2020-04-06 17:30:45
1. 稀疏矩阵的建立: coo_matrix () from scipy.sparse import coo_matrix # 建立稀疏矩阵 data = [1,2,3,4] row = [3,6,8,2] col = [0,7,4,9] c = coo_matrix((data,(row,col)),shape=(10,10)) #构建10*10的稀疏矩阵,其中不为0的值和位置在第一个参数 print(c) 2. 稀疏矩阵转化为密集矩阵: todense () d = c.todense() print(d) 3. 将一个 0值很多的矩阵 转化为稀疏矩阵 e = coo_matrix(d) #将一个0值很多的矩阵转为稀疏矩阵 print(e) 4. save :类似于matlab中的 .mat 格式,python也可以 保存参数数据 ,除了保存成csv,json,excel等之外,个人觉得matlab的.mat格式真的很强,啥都可以直接保存~~ import numpy as np # numpy.save(arg_1,arg_2),arg_1是文件名,arg_2是要保存的数组 aa = np.array(d) print(aa) # save np.save('test_save_1.npy', aa) #保存一个数组 np.savez('test_save_2', aa=aa

根据二维数组中某个字段来排序

♀尐吖头ヾ 提交于 2020-04-06 11:32:57
1,一种巧妙的办法 <?php /** * 根据二维数组元素中的某个field的值,对整个二维数组进行排序 * @param array $arr * @param string $field * @param int $desc 是否倒序 0否 1是 * @return array */ function sortByField(array $arr, string $field, int $desc = 0) { if (count($arr) <= 1 || empty($field) || !isset($arr[0][$field])) { return $arr; } //把原数组的key替换成field的值作为新的key $arr = array_column($arr, null, $field); //对新数组按照 键 的大小进行排序 $desc ? krsort($arr) : ksort($arr); return $arr; } $a = [ [ 'a' => 1, 'b' => '111' ], [ 'a' => 0, 'b' => '000' ], [ 'a' => 3, 'b' => '333' ], ]; $res = sortByField($a, 'a'); var_dump($res); 结果 array(3) { [0]=> array(2)

机器学习- Numpy基础 吐血整理

我的未来我决定 提交于 2020-04-06 08:28:30
Numpy是专门为数据科学或者数据处理相关的需求设计的一个高效的组件。听起来是不是挺绕口的,其实简单来说就2个方面,一是Numpy是专门处理数据的,二是Numpy在处理数据方面很牛逼(肯定比Python原生组件牛逼,否则也不会另外再来搞个Numpy了吧)。其实更加细化的来看其实Numpy最常用的就是矩阵(Matrix)的处理。如何有一点数据处理方面的经验的话,无论你每一条数据有多少个features(特征),它终究是一个二维的矩阵。所以Numpy在数据处理方面是非常常用的。就是简单点理解就是Numpy其实就是封装了Python中的list,Numpy其实就是一个high level的List而已,它没有什么牛逼的,底层还是Python。好了,闲话少扯了,上面的我个人觉得说的有点小啰嗦了,容易把人搞晕了。咱们还是直接看看下面的例子,看看Numpy的创建,索引,函数吧。下面并不包括Numpy的所有功能,具体很多细节,大家要学会看文档,下面的内容主要介绍一些最基本最常用的一些功能,下面的内容只是一个方向指导作用,具体在业务需求中需要用到什么API麻烦还是要大家自己去找文档查看吧。 Numpy的创建和结构分析 好了,既然咱们这里要说说Numpy,那咱们就肯定得先有一个Numpy对象啊(如果不知道啥叫对象,麻烦大家直接去看Hello world).

一个对二维数组进行多字段多顺序排序的方法

点点圈 提交于 2020-04-06 05:28:14
1,代码 <?php /** * 对二维数组依次按照排序规则数组指定的字段和顺序进行排序,在有相同的情况下按下一个字段和顺序进行排序 * @param array $arr 待排序的数组 * @param array $fieldSortMap:排序规则数组, 一维关联数组,每个元素的键为排序字段名称,值为排序方向:SORT_ASC升序或SORT_DESC降序 * @return array */ function multiSortByFields(array $arr, array $fieldSortMap) { $count = count($arr); if ($count <= 1 || empty($fieldSortMap)) { return $arr; } $params = []; //将排序字段所拥有的值分别放入数组中,以备排序 foreach ($fieldSortMap as $field => $sort) { //field值数组,必须每个元素中都要有 $fieldValues = array_column($arr, $field); if (count($fieldValues) != $count) { return $arr; } //准备参数:依次分别是排序field的值数组和对应的排序方向(升序,降序) $params[] =

蓝桥杯 矩阵乘法 模拟

吃可爱长大的小学妹 提交于 2020-04-05 18:01:11
问题描述   输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。 输入格式   第一行,空格隔开的三个正整数m,s,n(均不超过200)。   接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。   接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。 输出格式   m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。 样例输入 2 3 2 1 0 -1 1 1 -3 0 3 1 2 3 1 样例输出 -3 2 -8 2 提示 矩阵C应该是m行n列,其中C(i,j)等于矩阵A第i行行向量与矩阵B第j列列向量的内积。 例如样例中C(1,1)=(1,0,-1)*(0,1,3) = 1 * 0 +0*1+(-1)*3=-3 解题思路:三层for循环注意嵌套顺序 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N = 210; 4 int a[N][N], b[N][N], c[N][N]; 5 int main() { 6 int m, s, n; 7 cin >> m >> s >> n; 8 for (int i = 0; i < m; i++) { 9 for (int j = 0; j < s; j++) { 10 cin >> a[i][j]; 11 } 12 }

作业1——机器学习概述

时光怂恿深爱的人放手 提交于 2020-04-05 17:56:00
本周任务: 一、python基础的准备 1)安装好Python开发环境, PyCharm 或 Anaconda等都可以,按个人习惯喜好。 2)基本库的安装,如numpy、pandas、scipy、matplotlib 二、本周视频学习内容: https://www.bilibili.com/video/BV1Tb411H7uC?p=1 1)P4 Python基础 2)P1 机器学习概论 概念:机器学习是 AI 的一个分支,设计一个计算机系统,根据提供的数据按一定方式学习,随着训练次数增加,可以在性能上不断学习和改进,通过参数优化学习模型。 分类:机器学习包括有监督学习,无监督学习和增强学习( 9’38 ) 有监督学习 ——通过已有数据对 (x,y) 判断新数据 (x) 的 y 值。 ·例子:儿童经过多次训练学到月亮这个概念,之后能够判断某事物是否为月亮。 无监督学习 ——判断不完全独立的数据之间的关系, p(x)p(y) ≠ p(xy) 。(聚类) ·例子:词库经过训练组合得到新词,根据词语组合的概率得到新词。 作用: 1 )清洗数据 / 特征选择; 2 )确定算法模型 / 参数优化; 3 )结果预测 ( 21 ’00 ) 【 ×】大数据存储 / 并行计算 / 机器人 【区别】做某些规则时采用 传统算法 ;运用某些规则则是 机器学习 。 多元线性回归模型

Deep Learning(花书)教材笔记-Math and Machine Learning Basics(线性代数拾遗)

北慕城南 提交于 2020-04-03 14:05:47
I. Linear Algebra 1. 基础概念回顾 scalar : 标量 vector : 矢量,an array of numbers. matrix : 矩阵, 2-D array of numbers. tensor : 张量, 更高维的一组数据集合。 identity Matricx :单位矩阵 inverse Matrix :逆矩阵,也称 非奇异函数 。当矩阵A的行列式 \(|A|≠0\) 时,则存在 \(A^{-1}\) . 2. Span 3. Norm \(L^p\) norm 定义如右: \(||x||_p=(\sum_i|x_i|^p)^{\frac{1}{p}}\) for \(p∈R,p≥1\) . 任何满足如下条件的函数都可视为norm: \(f(x)=0 \, \Rightarrow x=0\) \(f(x+y)≤f(x)+f(y)\) (三角不等式) \(\forall α ∈R,f(αx)=|α|f(x)\) 1) \(L^2\) Norm 最常用的是二范式,即 \(L^2\) norm,也称为Euclidean norm(欧几里得范数)。因为在机器学习中常用到求导,二范式求导之后只与输入数据本身有关,所以比较实用。 2) \(L^1\) Norm 但是二范式在零点附近增长很慢,而且有的机器学习应用需要在零点和非零点之间进行区分

PCA数学角度解析

我只是一个虾纸丫 提交于 2020-04-03 13:50:31
转:http://blog.csdn.net/passball/article/details/24037593 主成分分析(PCA)是多元统计分析中用来分析数据的一种方法,它是用一种较少数量的特征对样本进行描述以达到降低特征空间维数的方法,它的本质实际上是K-L变换。PCA方法最著名的应用应该是在人脸识别中特征提取及数据维,我们知道输入200*200大小的人脸图像,单单提取它的灰度值作为原始特征,则这个原始特征将达到40000维,这给后面分类器的处理将带来极大的难度。著名的人脸识别Eigenface算法就是采用PCA算法,用一个低维子空间描述人脸图像,同时用保存了识别所需要的信息。下面先介绍下PCA算法的本质K-L变换。 1、K-L变换(卡洛南-洛伊(Karhunen-Loeve)变换): 最优正交变换 一种常用的特征提取方法; 最小均方误差意义下的最优正交变换; 在消除模式特征之间的相关性、突出差异性方面有最优的效果。 离散K-L变换:对向量 x (可以想象成 M维=width*height 的人脸图像原始特征)用确定的完备正交归一向量系 u j 展开: 这个公式由来我想应该是任一 n维欧式空间 V均存在正交基,利用施密特正交化过程即可构建这个正交基。 现在我们希望用 d个有限项来估计向量 x,公式如下: 计算该估计的均方误差如下: 要使用均方误差最小

biasLFM分解推荐,java实现

旧街凉风 提交于 2020-04-02 23:05:48
BiasLFM(bias latent factor model)带偏置项的隐语义推荐模型,加入三个偏置项(所有评分的平均,用户偏置项表示用户的评分习惯和物品没关系, * 物品偏置项表示物品接受的评分中和用户没关系的因素)矩阵分解,训练得到U,I矩阵,以及用户偏置项和物品偏置项 * 对user-item评分矩阵进行分解为U、I矩阵,再利用随机梯度下降(函数值下降最快的方向)迭代求解出U,I矩阵,最后用U*I预测得出user对item的预测评分 * 这里U矩阵是user对每个隐因子的偏好程度,I矩阵是item在每个隐因子中的分布。 理论和python实现见 https://www.cnblogs.com/little-horse/p/12498045.html。 以下是java简单实现,完整程序 https://github.com/jiangnanboy/RecomSys/blob/master/src/main/java/com/sy/zhihai/model/BiasLFM.java ,数据来自 https://github.com/jiangnanboy/RecomSys/tree/master/src/main/resources。 import java.util.Map.Entry; import java.util.Scanner; import javolution