矩阵变换

推荐方法-1:UserCF&ItemCF

99封情书 提交于 2020-01-16 11:26:01
Summary of recommended methods(1) 1.Metrics RMSE MAE Coverage Diversity Recall Precision 1.1 RMSE(均根方误差) R M S E = ∑ u , i ∈ T ( r u i − r ^ u i ) 2 ∣ T ∣ RMSE = \frac{\sqrt{\sum_{u, i \in T}(r_{ui} - \hat{r}_{ui}})^{2}}{\lvert T \rvert} R M S E = ∣ T ∣ ∑ u , i ∈ T ​ ( r u i ​ − r ^ u i ​ ​ ) 2 ​ u u u : 用户 u u u i i i : 物品 i i i r u i r_{ui} r u i ​ : 用户 u u u 对 i i i 的评分 r ^ u i \hat{r}_{ui} r ^ u i ​ : 算法预测的评分 1.2 MAE(平均绝对值误差) M A E = ∑ u , i ∈ T ∣ r u i − r ^ u i ∣ ∣ T ∣ MAE = \frac{\sum_{u,i \in T} \lvert r_{ui} - \hat{r}_{ui} \rvert}{\lvert T \rvert} M A E = ∣ T ∣ ∑ u , i ∈ T ​ ∣ r u i ​

机器学习-最小二乘法

女生的网名这么多〃 提交于 2020-01-16 01:51:46
最小二乘法是机器学习中的基础知识点,一致对最小二乘法的理解不够深入,今天就花点时间来深入理解和探讨一下最小二乘法 最小二乘法,又称最小平方法,基本公式通俗来讲,二者先取个差值,在来个平方,最后搞一个和号上去,这就是最小二乘问题的思想,下面介绍下 最小二乘法 我们以最简单的一元线性模型来解释最小二乘法。什么是一元线性模型呢? 监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线;对于三维空间线性是一个平面,对于多维空间线性是一个超平面... 对于一元线性回归模型, 假设从总体中获取了n组观察值(X1,Y1),(X2,Y2), …,(Xn,Yn)。对于平面中的这n个点,可以使用无数条曲线来拟合。要求样本回归函数尽可能好地拟合这组值。综合起来看,这条直线处于样本数据的中心位置最合理。 选择最佳拟合曲线的标准可以确定为:使总的拟合误差(即总残差)达到最小。有以下三个标准可以选择: (1)用“残差和最小”确定直线位置是一个途径。但很快发现计算“残差和”存在相互抵消的问题。 (2)用

使用sklearn做特征工程

你离开我真会死。 提交于 2020-01-15 16:55:43
1 特征工程是什么?   有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。通过总结和归纳,人们认为特征工程包括以下方面:   特征处理是特征工程的核心部分,sklearn提供了较为完整的特征处理方法,包括数据预处理,特征选择,降维等。首次接触到sklearn,通常会被其丰富且方便的算法模型库吸引,但是这里介绍的特征处理库也十分强大!   本文中使用sklearn中的 IRIS(鸢尾花)数据集 来对特征处理功能进行说明。IRIS数据集由Fisher在1936年整理,包含4个特征(Sepal.Length(花萼长度)、Sepal.Width(花萼宽度)、Petal.Length(花瓣长度)、Petal.Width(花瓣宽度)),特征值都为正浮点数,单位为厘米。目标值为鸢尾花的分类(Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),Iris Virginica(维吉尼亚鸢尾))。导入IRIS数据集的代码如下: 1 from sklearn.datasets import load_iris 2 3 #导入IRIS数据集 4 iris = load_iris() 5 6 #特征矩阵 7 iris.data

Unity - 通用渲染管线(URP)HLSL库函数分析(1)

≯℡__Kan透↙ 提交于 2020-01-12 14:48:23
Unity - 通用渲染管线(URP)HLSL库函数分析(1) 在新管线写shader的时候发现好多方法和以前都不一样了,网上暂时也没搜到相关整理的文档,就只好自己去慢慢啃了。 com.unity.render-pipelines.universal Core.hlsl 名称 说明 GetVertexPositionInputs(float3 positionOS) 获取输入顶点坐标信息 GetVertexNormalInputs(float3 normalOS) 获取输入顶点法线信息 GetVertexNormalInputs(float3 normalOS, float4 tangentOS) 获取输入顶点法线信息(重载) GetScaledScreenParams() 获取屏幕缩放参数信息 NormalizeNormalPerVertex(real3 normalWS) 逐顶点法线正交 NormalizeNormalPerPixel(real3 normalWS) 逐像素法线正交 ComputeScreenPos(float4 positionCS) 计算屏幕坐标信息 (real)ComputeFogFactor(float z) 计算雾参数 (real)ComputeFogIntensity(real fogFactor) 计算雾强度 (half3)MixFogColor

CSS3 3D转换效果

无人久伴 提交于 2020-01-12 11:40:40
CSS3 3D 转换 三维变换使用基于二维变换的相同属性,如果您熟悉二维变换,你们发现3D变形的功能和2D变换的功能相当类似。CSS3中的3D变换主要包括以下几种功能函数: 3D位移:CSS3中的3D位移主要包括translateZ()和translate3d()两个功能函数; 3D旋转:CSS3中的3D旋转主要包括rotateX()、rotateY()、rotateZ()和rotate3d()四个功能函数; 3D缩放:CSS3中的3D缩放主要包括scaleZ()和scale3d()两个功能函数; 3D矩阵:CSS3中3D变形中和2D变形一样也有一个3D矩阵功能函数matrix3d()。 1.3D位移 在CSS3中3D位移主要包括两种函数translateZ()和translate3d()。translate3d()函数使一个元素在三维空间移动。这种变形的特点是,使用三维向量的坐标定义元素在每个方向移动多少。 随着px的增加,直观效果上: X:从左向右移动 Y:从上向下移动 Z:以方框中心为原点,变大 从上图的效果可以看出,当z轴值越大时,元素也离观看者更近,从视觉上元素就变得更大;反之其值越小时,元素也离观看者更远,从视觉上元素就变得更小。 例子: height: 300px; float: left; margin: 15px; position: relative;

houghpeaks

会有一股神秘感。 提交于 2020-01-11 04:20:44
文章目录 Syntax Description Examples Input Arguments H —霍夫变换矩阵 numpeaks —要识别的最大峰数 Name-Value Pair Arguments “阈值” —视为峰值的最小值 'NHoodSize'-抑制邻居的大小 'Theta'-霍夫变换theta值 Output Arguments houghpeaks:识别霍夫变换中的峰 Syntax peaks = houghpeaks ( H , numpeaks ) peaks = houghpeaks ( ___ , Name , Value , . . . ) Description peaks = houghpeaks(H,numpeaks)在由霍夫函数生成的霍夫变换矩阵H中定位峰。 numpeaks指定要识别的最大峰数。 该函数返回峰的矩阵,其中包含峰的行和列坐标。 peaks = houghpeaks(___,Name,Value,…)在Hough变换矩阵中定位峰,命名的参数控制操作的各个方面。 Examples 在旋转图像的霍夫变换中定位并显示峰 I = imread ( 'circuit.tif' ) ; 创建二进制图像。 [ H , T , R ] = hough ( BW ) ; 在图像的霍夫变换中找到峰并绘制它们。 P = houghpeaks ( H ,

ORB-SLAM2 论文笔记

会有一股神秘感。 提交于 2020-01-10 01:54:57
单目相机具有成本低,设置简单的优点,但是同样存在尺度不确定、初始化需要足够视差,最终造成尺度漂移、无法处理纯旋转等问题。 ORB-SLAM2为SLAM的发展作出了以下几个贡献: 1.这是第一个同时提供单目,双目和RGB-D接口的SLAM开源系统,并且包含回环检测,重定位和地图重用。 2.通过BA对RBG-D进行优化,效果优于state-of-the-art的ICP或photometric and depth error minimization 3.通过使用近距离和远距离的双目点以及单目观测,使得其双目的精确度要高于state-of-the-art的直接使用双目的SLAM系统 4.通过禁用建图来实现利用已有地图,进行轻量级的定位。 ORB-SLAM2的框架和ORB-SLAM的框架几乎是一模一样的,包含了三个线程:Tracking,Local Mapping和Loop Closing。主要的区别还是在对于双目相机和RBG-D相机前端,是如何进行追踪并构建后端优化问题的。因此与ORB-SLAM相同的部分就不再赘述,详细可参考上一篇关于ORB-SLAM论文的博客。 A.Monocular, Close Stereo and Far Stereo Keypoints ORB-SLAM2是基于特征的SLAM系统,因此当从输入的图像中提取特征之后,图像不需要被保存而是直接丢弃,因此可以说ORB

QT openql

こ雲淡風輕ζ 提交于 2020-01-06 16:02:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、安装必要的库 sudo apt-get install libxt-dev libmotif-dev libxext-dev libxaw7-dev libxmu-dev libgl1-mesa-dev freeglut3-dev libglu1-mesa-dev libqt4-dev libqt4-opengl-dev 二、项目openglQt(目录下)的文件: $ cat openglQt.pro ###################################################################### # Automatically generated by qmake (2.01a) ?? 11? 19 22:49:56 2014 ###################################################################### QT += opengl TEMPLATE = app TARGET = DEPENDPATH += . INCLUDEPATH += . LIBS += -lGLU -lglut # Input HEADERS += nehewidget.h SOURCES += main.cpp

[3D基础]投影矩阵的推导(1)

我的梦境 提交于 2020-01-06 04:33:03
转眼我做游戏行业已经八个月了,游戏行业入门门槛低,所以还算学习得比较轻松,总结了当初自己迷惑的几个知识点,本来想写出来给初学者解惑,无赖我是一个懒散的人,一直拖到现在,终于决心白纸黑字的搬到Blog上来,希望大家喜欢。 投影变换:我觉得这个是3D到2D变换中最让初学者头晕的问题,但又是最重要的。 请看上面这张我用爪子抓出来的图。这个坐标系是DX的左手坐标系,Y向上,X向右,Z向内,几何坐标已经经过了相机坐标系的变换,相机位置为(0,0,0),假设远裁减面距离为f,近裁减面距离为n,近裁减面左边为l,右边为r,上为t,下为b。要投影的2个顶点A和B坐标分别为A(Xa,Ya,Za),B (Xb,Yb,Zb),现在我们要求他们的投影点坐标A0和B0,这里我以B点为例子,讲解投影最简单的几何知识。 首先我们来计算B0点的X坐标,(虚线都是辅助线),我们看三角形B C O和三角形B0 K O,利用初中几何知识可得他们是相似的,由相似三角形定理可知,B0 K = B C * ( n / C O );而B C等于Xb, C O等于Zb;所以Xb0 = Xb * n / Zb; 同理Yb0 = Yb * n / Zb;我们知道DX把3D坐标映射到了一个X(-1,1) Y(-1,1) Z(0,1)的一个立方体内。那现在我们就需要对投影后的坐标进行一维映射了,(其实投影就是映射,数学形式为函数

Android OpenGL 学习笔记 --开始篇

那年仲夏 提交于 2020-01-03 08:39:16
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://terryblog.blog.51cto.com/1764499/346996 1、什么是 OpenGL?    OpenGL 是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库。 OpenGL 的前身是 SGI 公司为其图形工作站开的 IRIS GL。IRIS GL 是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是 SGI 公司便在 IRIS GL 的基础上开发 OpenGL 。具体详细的介绍请 点击这里 。 2、OpenGL 的发展历程   1992年7月 发布了 OpenGL 1.0 版本,并与微软共同推出 Windows NT 版本的 OpenGL 。   1995年 OpenGL 1.1 版本面市,加入了新功能,并引入了纹理特性等等。   一直到 2009年8月Khronos小组发布了 OpenGL 3.2,这是一年以来 OpenGL 进行的第三次重要升级。 具体特点及功能、 OpenGL 现状、发展历程、 OpenGL 规范、编程入门请 点击这里 。 3、OpenGL ES 简介 Android 3D 引擎采用的是 OpenGL ES 。 OpenGL ES 是一套为手持和嵌入式系统设计的 3D 引擎 API ,由