维度

kdTree相关原理及c++实现

会有一股神秘感。 提交于 2020-02-06 03:12:59
kdTree概念 kd-tree或者k维树是计算机科学中使用的一种数据结构,用来组织表示k维空间中点的集合。它是一种带有其他约束条件的二分查找树。Kd-tree对于区间和近邻搜索十分有用。一般位于三维空间中的邻域搜索常用kd-tree,因此本文中所有的kd-tree都是三维的kd-tree。 图一 Kd-tree也是二叉树的一种,首先我们先选定一个维度用于第一次分类,如图一所示,我们先选择x维度方向作为分类方向,随机选取一个值使得小于该值的点位于左边,大于该值的点位于右边。在左右区域分别再对第二个维度进行分类,这里以y轴方向作为第二维度,同理根据y分类设置z轴方向为第三维度进行分类。 Kd-tree数据结构定义 Node-data :数据矢量,数据集中某个数据点,是n维矢量(总维度,unsigned int) Range :空间矢量,该节点所代表的的空间范围(二维数组) Split :整数,垂直于分割超平面的方向轴序号(int) Left :k-d树,由位于该节点分割超平面左侧子空间内所有点构成的k-d树(tuple<list,int>) Right :k-d树,由位于该节点分割超平面右侧子空间内所有点构成的k-d树(tuple<list,int>) Paren t:k-d树,父节点(auto) Kd-tree优化 方案一:Kd-tree通过不同维度划分数据,节点的选择显得尤为重要

余弦距离、欧氏距离和杰卡德相似性度量的对比分析

孤街浪徒 提交于 2020-02-04 14:11:59
1、余弦距离 余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。 向量,是多维空间中有方向的线段,如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。而要确定两个向量方向是否一致,这就要用到余弦定理计算向量的夹角。 余弦定理描述了三角形中任何一个夹角和三个边的关系。给定三角形的三条边,可以使用余弦定理求出三角形各个角的角度。假定三角形的三条边为a,b和c,对应的三个角为A,B和C,那么角A的余弦为: 如果将三角形的两边b和c看成是两个向量,则上述公式等价于: 其中分母表示两个向量b和c的长度,分子表示两个向量的内积。 举一个具体的例子,假如新闻X和新闻Y对应向量分别是: x1, x2, ..., x6400和 y1, y2, ..., y6400 则,它们之间的余弦距离可以用它们之间夹角的余弦值来表示: 当两条新闻向量夹角余弦等于1时,这两条新闻完全重复(用这个办法可以删除爬虫所收集网页中的重复网页);当夹角的余弦值接近于1时,两条新闻相似(可以用作文本分类);夹角的余弦越小,两条新闻越不相关。 2、余弦距离和欧氏距离的对比 从上图可以看出,余弦距离使用两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比欧氏距离,余弦距离更加注重两个向量在方向上的差异。 借助三维坐标系来看下欧氏距离和余弦距离的区别: 从上图可以看出

从这三个维度说一说,如何做一名具有产品思维的UI设计师?

巧了我就是萌 提交于 2020-02-01 01:50:13
产品与设计是不能分开的,做一名具有产品思维的设计师,能够设计出更多,优秀的,令企业和用户满意的作品。本篇文章从什么是产品思维,产品思维的重要性,如何培养产品思维。今天小编从这三个维度来告诉大家如何做一名具有产品思维的UI设计师。下面让我们一起来看一看吧~ 1、什么是产品思维 其实“产品思维”一直是一个很抽象的词语,但是如果你尝试将“产品思维”拆分成“产品”和“思维”后,你会发现很快就能通过字面上的意义来解释什么是“产品思维”。 a.产品的定义 在这里先举一个例子,大家都认识电动牙刷吧,但如果我问你如何让一把普通的牙刷在短时间之内变成一把电动牙刷?有些聪明的同学已经说出了答案,找一个马达绑在牙刷上他就成了电动牙刷,我们把上面的这个过程称作“功能需求”。当基础功能实现后,这时我们发现虽然实现了基础功能,但是这样的体验确实很糟糕,能否进行下ID设计把他完整的包装一下呢?这个实现的过程我们把他称之为“用户体验”最后我们得出结论,产品就是“功能需求”+“用户体验”=“产品”。 “思维”就是每个人思考问题的维度方式,最初是人脑借助于语言对客观事物的概括和间接的反应过程。举个例子,如下图这个蘑菇街首页页面。 a.当设计师看到这个页面的时候,他思考的东西是,这个界面元素当配合不合理,布局美不美观,品牌包装是否到位。 b.当开发看到这个页面的时候,他思考的东西是,这个页面要在数据库里建多少张表

pytorch --- tensor.squeeze(dim)和unsqueeze(dim)

爷,独闯天下 提交于 2020-02-01 01:38:02
tensor.squeeze(dim) 作用 : 如果dim指定的维度的值为1,则将该维度删除,若指定的维度值不为1,则返回原来的tensor 例子: x = torch . rand ( 2 , 1 , 3 ) print ( x ) print ( x . squeeze ( 1 ) ) print ( x . squeeze ( 2 ) ) 输出: tensor([[[0.7031, 0.7173, 0.0606]], [[0.6884, 0.4072, 0.0516]]]) tensor([[0.7031, 0.7173, 0.0606], [0.6884, 0.4072, 0.0516]]) tensor([[[0.7031, 0.7173, 0.0606]], [[0.6884, 0.4072, 0.0516]]]) 如上结果所示:x.shape=[2, 1, 3] , 第一维度的值为1, 因此x.squeeze(dim=1)的输出会将第一维度去掉,其输出shape=[2,3], 第二维度值不为1, 因此x.squeeze(dim=2)输出tensor的shape不变 tensor.unsqueeze(dim) 这个函数主要是对数据维度进行扩充。给指定位置加上维数为1的维度,比如原本有个三行的数据(3,),在0的位置加了一维就变成一行三列(1,3)。还有一种形式就是b

通过torch.empty来看pytorch的broadcast机制

放肆的年华 提交于 2020-01-31 02:14:53
示例一:可以进行相加的tensor from __future__ import print_function import torch # 找不到torch模块是因为对应的解释器中没有torch模块 # File-Settings-grammer_learning-Project Interpreter:进行更换即可 x = torch . empty ( ( 6 , 1 , 2 ) ) z = torch . empty ( ( 1 , 2 , 2 ) ) c = x + z print ( c ) print ( x ) y = torch . empty ( 2 , 3 ) print ( y ) 输出结果如下: D:\Anaconda3\envs\pytorch_1.4_python_3.6_CUDA_10.1\python.exe E:/【Developer】/python/deeplearning_programs/grammar_learning/test/env_validate.py tensor ( [ [ [ 0.0000e+00, 0.0000e+00 ] , [ 0.0000e+00, 0.0000e+00 ] ] , [ [ 0.0000e+00, 0.0000e+00 ] , [ 0.0000e+00, 0.0000e+00 ] ] , [ [ 0

建模随手记4 --- 主成分分析

五迷三道 提交于 2020-01-30 03:49:19
在进行数据处理时,有可能会遇到数据属性的数量要比每种数据的数据量还要多,甚至相当,而且对于这些不同属的数据所描述的信息有重合的时候,这时候需要对数据进行降维处理,来减少数据处理的维度。一句话来说就是当我们对一个对象进行数据分析时,所获得的数据的属性很多,为了减少数据处理的维度,我们可以通过计算出几个主要因素来代表这些数据,主成分分析可以做到这点。 比如说衡量一个人的智商,我们要综合其个方面因素来评价,数学成绩,语文成绩,英语成绩,各种成绩,但是我们可以选出数学成绩,理科成绩来衡量他的智商,虽然不能代表全部,但是可以代表大部分。 概述 主要参考《机器学习实战》,书中的介绍十分详细清楚,这里只记录代码实现以及分析数据的过程。 主成分分析实现要解决两个问题,降维度降到多少可以很好的表达原始数据,如何获得降维后的数据。 将多少维度 在确定降多少维度之前我们需要对数据进行标准化: X ∗ = X ‾ − μ σ X^{*}=\frac{\overline{X}-\mu}{\sigma} X ∗ = σ X − μ ​ 加载数据,同时进行数据预处理: import numpy as np from matplotlib import pyplot as plt import os from sklearn import preprocessing from pprint import

数据仓库是什么,如何建立(总结)

纵然是瞬间 提交于 2020-01-28 17:30:49
一、是什么 官方解释: 面向主题的 、 集成的 、 相对稳定 、 反应历史变化 ,用于企业的管理决策分析。 开发者角度:通过 接入各种数据源 ,打破数据壁垒,根据 业务方的需求 ,设计方便使用和准确的 数据模型 ,高效将结果输出给业务方。 业务方角度:能快速准确提供数据,给公司的日常运营和领导决策提供 数据支持和指导 。 二、如何建立 1、分析业务需求、确认仓库主题 例:领导想看各部门GMV、毛利情况。运营团队要了解各个渠道的订单转化率,商品、品牌、品类、销售情况。用户团队关注用户相关的销售、商家团队关注商家的销售… 通过业务需求分析,需要做一个销售交易相关的主题 2、确定总线矩阵 维度:用户维度、商品维度、商家维度、订单渠道维度 业务过程:用户下单、支付成功、确认收获 3、设计分层架构 一般是业务接入层、明细层、汇总层、应用层 A、业务接入层:同步订单、用户、商家、商品、订单渠道相关的业务表到仓库中,不做任何清洗操作。 B、一致性维度:目标是尽量丰富维度属性,但是又不要 过度运算,保证核心维度模型的整洁 性,做好维度属性的整合和拆分。(商品表:对于产出快且使用率高的维度属性,比如名称、品牌、品类等,可放在商品基础维度表。但对于产出慢且使用率低的维度属性,比如上市季节、上架时间等,可放在商品的扩展维度表)。 C、明细层:保证粒度最细,使用退化维度的方法,将常用的维度属性加入明细表中

【采用】【风控系统】风控中心—京东基于Spark的风控系统架构实践和技术细节

爷,独闯天下 提交于 2020-01-26 06:50:50
转自: https://www.jianshu.com/p/9de45d2d16e6 感谢博主! 背景 互联网的迅速发展,为电子商务兴起提供了肥沃的土壤。2014年,中国电子商务市场交易规模达到13.4万亿元,同比增长31.4%。其中,B2B电子商务市场交易额达到10万亿元,同比增长21.9%。这一连串高速增长的数字背后,不法分子对互联网资产的觊觎,针对电商行业的恶意行为也愈演愈烈,这其中,最典型的就是黄牛抢单囤货和商家恶意刷单。黄牛囤货让广大正常用户失去了商家给予的优惠让利;而商家的刷单刷好评,不仅干扰了用户的合理购物选择,更是搅乱了整个市场秩序。 京东作为国内电商的龙头企业,在今天遭受着严酷的风险威胁。 机器注册账号、恶意下单、黄牛抢购、商家刷单 等等问题如果不被有效阻止,会给京东和消费者带来难以估量的损失 互联网行业中,通常使用风控系统抵御这些恶意访问。在技术层面上来讲,风控领域已逐渐由传统的“ rule-base”(基于规则判断)发展到今天的大数据为基础的实时+离线双层识别。 Hadoop,Spark等大数据大集群分布式处理框架的不断发展为风控技术提供了有效的支撑。 2.什么是“天网” 在此背景下,京东风控部门打造“天网”系统,在经历了多年沉淀后,“天网”目前已全面覆盖京东商城数十个业务节点并有效支撑了京东集团旗下的京东到家及海外购风控相关业务

利用维度知识理解CSS中的定位属性

我的梦境 提交于 2020-01-25 16:05:28
我们知道HTML中有常规流文本和非常规流,当一个元素的position属性为为相对定位、绝对定位或固定定位时,这个元素就会脱离的常规流文本,这个时候就可以利用left等属性来进行位置的设定。 要理解这个过程的原理其实很简单,我们可以利用维度思维来理解。 我们都知道二维维度是一个平面维度,三维维度就是我们现在所处的现实世界,那么我们就可以把一个页面看作是一个二维的平面维度,这个维度里的内容是有排列顺序的,比如你在写一篇文章,突然发现某一句话需要放到它前面那一段话的前面,那么你就需要把这个句子删掉,交换顺序后,再写一次,HTML中也是一样,但是当我们给这个元素设置了定位属性,让它脱离了常规流之后,这个时候这个元素就相当于是跳出了二维的平面维度世界,来到了三维的立体世界,自然这个元素就可以在二维这个平面维度世界上随意的移动,而不需要去重新书写代码。而基于此的层叠关系同样可以用这个方式理解,比如,一支笔我们可以把它放在一张纸的上面,即这支笔的层级比这张纸的层级要高,那么我们从上到下首先看到的就是这支笔,当我们把这支笔放在这张纸的下面时,即这支笔的层级比这张纸的层级要低,那么我们从上到下首先看到的就是这张纸,而不再是笔了。 来源: https://www.cnblogs.com/Michaelcat/p/11129519.html

一文解析维度建模

泪湿孤枕 提交于 2020-01-25 11:40:40
数据分层 “为什么要设计数据分层?” 这应该是数据仓库同学在设计数据分层时首先要被挑战的问题,类似的问题可能会有很多, 比如说“为什么要做数据仓库?”、“为什么要做元数据管理?”、“为什么要做数据质量管 理?”。当然,这里我们只聊一下为什么要做设计数据分层。 作为一名数据的规划者,我们肯定希望自己的数据能够有秩序地流转,数据的整个生命周期 能够清晰明确被设计者和使用者感知到。直观来讲就是如下的左图这般层次清晰、依赖关系 直观。 但是,大多数情况下,我们完成的数据体系却是依赖复杂、层级混乱的。如下的右图,在不 知不觉的情况下,我们可能会做出一套表依赖结构混乱,甚至出现循环依赖的数据体系。 数据分层的好处 因此,我们需要一套行之有效的数据组织和管理方法来让我们的数据体系更有序,这就是谈 到的数据分层。数据分层并不能解决所有的数据问题,但是,数据分层却可以给我们带来如 下的好处: 清晰数据结构: 每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和 理解减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少 极大的重复计算 统一数据口径: 通过数据分层,提供统一的数据出口,统一对外输出的数据口径复杂问题简 单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题 维度建模 为了满足前面提到数据分层带来的好处,我们将数据模型分为三层:数据运营层( ODS )