维度

10.设计模式之八:桥接模式【结构型模式】

扶醉桌前 提交于 2019-12-04 03:58:57
在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。 当然,这样的例子还有很多,如不同颜色和字体的文字、不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。如果用桥接模式就能很好地解决这些问题。 定义与特点 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。 桥接(Bridge)模式的优点是: 由于抽象与实现分离,所以扩展能力强; 其实现细节对客户透明。 缺点是:由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,这增加了系统的理解与设计难度。 结构与实现 可以将抽象化部分与实现化部分分开,取消二者的继承关系,改用组合关系。 1. 模式的结构 桥接(Bridge)模式包含以下主要角色。 抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。 扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。 实现化

小诀窍:不妨尝试从交付质量上打败对手

╄→尐↘猪︶ㄣ 提交于 2019-12-03 23:56:00
小诀窍:不妨尝试从交付质量上打败对手 关于作者:小姬,某知名互联网公司产品专家,对数据采集、生产、加工有所了解,期望多和大家交流数据知识,以数据作为提出好问题的基础,发觉商业价值。 0x00 前言 我将整理文章分享数据工作中的经验,因为业务内容上的差异,可能导致大家的理解不一致,无法体会到场景中的诸多特殊性,不过相信不断的沟通和交流,可以解决很多问题。今天我们首先分析一下 职场基本功,为什么要重视需求质量,常见的数据需求文档改怎么写。 以下,Enjoy: 0x01 为什么要重视需求质量 如果想快速的提高自己,但是不知道从哪里开始,不妨尝试从工作中将最为常见的需求文档质量提高,相信我,一份有优秀的需求文档,就可以让你打败了大多数的数据同行。 为什么要重视需求质量 PRD是产品经理最直接,最重要的交付物; PRD的功底最容易体现专业能力,依靠逻辑和描述能力,直观反映产品思路; PRD曝光次数较高,是最佳的印象产品,产品的开发依赖技术人员,PRD的设计才是产品人员的核心; 最佳赢得口碑,给人以靠谱的感觉的交付物; 锻炼编导能力,梳理思维逻辑,提高业务水平的最好方式。 我的数据需求产品文档主要有: 项目背景 、 项目范围 、 目标收益 、 需求详述 、 交互原型 、 功能说明 、 校验测试 七大模块。在实际的工作场景中会根据情况做调整,基本情况下形成自身的特点(产品文档规范)

Numpy常用函数用法大全

会有一股神秘感。 提交于 2019-12-03 04:13:29
.ndim :维度 .shape :各维度的尺度 (2,5) .size :元素的个数 10 .dtype :元素的类型 dtype(‘int32’) .itemsize :每个元素的大小,以字节为单位 ,每个元素占4个字节 ndarray数组的创建 np.arange(n) ; 元素从0到n-1的ndarray类型 np.ones(shape): 生成全1 np.zeros((shape), ddtype = np.int32) : 生成int32型的全0 np.full(shape, val): 生成全为val np.eye(n) : 生成单位矩阵 np.ones_like(a) : 按数组a的形状生成全1的数组 np.zeros_like(a): 同理 np.full_like (a, val) : 同理 np.linspace(1,10,4): 根据起止数据等间距地生成数组 np.linspace(1,10,4, endpoint = False):endpoint 表示10是否作为生成的元素 np.concatenate(): -数组的维度变换 .reshape(shape) : 不改变当前数组,依shape生成 .resize(shape) : 改变当前数组,依shape生成 .swapaxes(ax1, ax2) : 将两个维度调换 .flatten() :

【机器学习】几种相似度算法分析

匿名 (未验证) 提交于 2019-12-03 00:30:01
最近开始研究推荐系统,其中常见的相似度算法有以下几种: 1. 欧几里得距离 欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。 注意事项: a.因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别,比如对身高(cm)和体重(kg)两个单位不同的指标使用欧式距离可能使结果失效。 b.欧几里得距离是数据上的直观体现,看似简单,但在处理一些受主观影响很大的评分数据时,效果则不太明显;比如,U1对Item1,Item2 分别给出了2分,4分的评价;U2 则给出了4分,8分的评分。通过分数可以大概看出,两位用户褒Item2 ,贬Item1,也许是性格问题,U1 打分更保守点,评分偏低,U2则更粗放一点,分值略高。在逻辑上,是可以给出两用户兴趣相似度很高的结论。如果此时用欧式距离来处理,得到的结果却不尽如人意。即评价者的评价相对于平均水平偏离很大的时候欧几里德距离不能很好的揭示出真实的相似度。 2. 皮尔逊相关系数 Pearson 相关系数是用协方差除以两个变量的标准差得到的,虽然协方差能反映两个随机变量的相关程度(协方差大于0的时候表示两者正相关,小于0的时候表示两者负相关)

kaldi中特征变换

匿名 (未验证) 提交于 2019-12-03 00:22:01
简介 Kaldi 目前支持多种特征和模型空间的变换与映射。特征空间变换和映射通过工具来处理(本质上就是矩阵),以下章节将介绍: 全局线性或仿射变换 说话人无关或单一说话人( per-speaker )或者( per-utterance )单一句子自适应 句子-说话人( Utterance-to-speaker )和说话人-句子( speaker-to-utterance )映射 组合变换 估计变换时的静音权重 变换,投影或者其他没有特定说话人的特征操作包括: 线性判别性分析(LDA) 帧拼接和差分特征计算 异方差的线性判别性分析(HLDA) 全局半协方差/最大似然线性变换 全局变换主要通过说话人自适应的方式应用: 全局GMLLR/fMLLR变换 线性声道长度归一化 指数变换 谱均值和方差归一化 下面我们将介绍回归树以及用到回归树的变换: 为自适应构建回归类树 全局线性或仿射特征变换 Matrix<BaseFloat> The Tableconcept )中。 变换可以通过程序transform-feats应用于特征上,语法如下 Specifying Tableformats: wspecifiers and rspecifiers Extendedfilenames: rxfilenames and wxfilenames ).这个程序通常用于管道的一部分。

构建饿了么销售端与商家端的数据分析服务

匿名 (未验证) 提交于 2019-12-03 00:14:01
构建饿了么销售端与商家端的数据分析服务 今年8月,销售侧需要开始进行数据作战,我在支援销售侧业务的时候发现数据分析服务现状比较低效&不准,便和leader谈了我的想法与设计,自动请缨干这个事情,最后和总监过下方案,做一个通用的数据服务出来。这个项目我组了个小团队做到11月份,因为组织架构变更问题与领域拆分,业务移交到其他组。年底总结,写下此文,记下当时做事的思路与历程。 每一个数据分析页面的需求过来,都需要经历开发在数据仓库中聚合各种数据推到mysql,在写接口读mysql数据。然后前后端联调,测试验收。 存在两个问题:1.重复开发;2.数据口径不一致;3.每次都新写代码,代码越多bug越多,数据测试也不过关。 销售侧各个层级的经理与销售人员需要看其销售数据,基本需求如下: 查看维度:组织架构、BD、店铺、网格 时间维度:昨天、前天、最近一周、上周、本月、上月、最近30天、前30天 业务筛选聚合维度:店铺的各种标签 数据量大,算60天订单,sum类聚合运算需提前算好 标签组合太多 与产品确认好聚合维度,固定住可以不变的 各种标签筛选、排序、算商户数都可以支持 与ER建模方法不同,数据建模不以实体为要,以维度为核心,进行维度建模。 1.根据业务定好维度,设计星形模型(即维度模型),做到算的快可复用 2.针对服务层做语义化接口,类似于ES client API。 以订单管理的需求

kylin从入门到实战:实际案例

匿名 (未验证) 提交于 2019-12-03 00:07:01
kylin从入门到实战:实际案例 版权申明:转载请注明出处。 文章来源: http://bigdataer.net/?p=308 排版乱?请移步 原文 获得更好的阅读体验 前面两篇文章已经介绍了kylin的相关概念以及cube的一些原理,这篇文章将从一个实际的案例入手,介绍如何在kylin平台上创建一个多维分析项目。 1.创建project 进入kylin操作界面,如果没有project可以创建,kylin里面可以创建多个project,有效的把各种业务数据分析隔离开来。如图: 如下,填写project name,description可以不填 然后submit 提交,project创建成功。 2.添加数据源 点击DataSource选项卡->Load Hive Table 填写hive表名,前面加上库名 然后点击sync,导入数据源成功,可以看到如下信息: 3.创建model 添加model name然后 next 选择刚才添加到数据源中的事实表,如果有Lookup Table也可添加,然后next 选择需要的维度 选择需要的指标 相关设置 partition date colume表示分区字段,选择hive表中按时间分区的字段。然后从date format中选择不同的时间格式。最下面的filter可以添加where条件对数据源中的数据做过滤。 至此,model创建完成。 4

numpy的基本使用(一)

匿名 (未验证) 提交于 2019-12-03 00:06:01
numpy概述 numpy(Numerical Python)提供了python对多维数组对象的支持: ndarray ,具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 NumPy支持比Python更多种类的数值类型。NumPy数值是 dtype (数据类型)对象的实例,每个对象具有唯一的特征。 创建ndarray数组 ndarray :N维数组对象(矩阵),所有元素必须是相同类型。 ndarray属性:ndim属性,表示维度个数;shape属性,表示各维度大小;dtype属性,表示数据类型。 ndarray 内部由以下内容组成: 一个指向数据(内存或内存映射文件中的一块数据)的指针。 数据类型或 dtype,描述在数组中的固定大小值的格子。 一个表示数组形状(shape)的元组,表示各维度大小的元组。 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。 数组创建函数 创建一个 ndarray 只需调用 NumPy 的 array 函数 即可: numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0) 参数说明: import numpy as np

推荐系统起手式-几种简单推荐模型(基于内容的推荐)

匿名 (未验证) 提交于 2019-12-03 00:05:01
一.基于内容的推荐 所谓基于内容信息的推荐系统,其实就是用特征(Feature)来表示用户、物品以及用户和物品的交互,从而能够把推荐问题转换成为监督学习任务。把推荐系统完全定义为监督学习任务,需要有这么几个步骤。 第一,就是我们已经提到的,需要把所有用户、物品的各种信号用特征来表示。这里面往往牵涉非常复杂和繁琐的特征工程,也就是看如何能够把不同的信息通过特征表达出来。 第二,就是每一个监督任务都需要面临的问题,如何构造一个目标函数,来描述当前的场景。可以说,这是最难的一个部分,也是和基于流行度和基于相似度的推荐系统的最大区别。 二.用户特征信息 用户向量化后的结果,就是 User Profile,俗称“用户画像”。对于用户来说,最基础、最首要的肯定是用户的基本特性,包括性别、年龄、地理位置。这三大信息其实可以涵盖用户特性工程中非常大的一块内容。这里不仅是最基本的这三个特性的值,还有围绕这三个特性发展出来的三大种类的特性。比如,不同性别在文章点击率上的差异,不同年龄层在商品购买上的差异,不同地理位置对不同影视作品的喜好等,这些都是根据这三个特性发展出来的更多的特性。然后,我们可以为用户进行画像(Profiling)。有显式的用户画像,比如用户自己定义的喜好,或者用户自己认为不愿意看到的物品或者类别。但是在大多数情况下,用户都不会为我们提供那么精准的回馈信息

hive数仓中缓慢变化维

匿名 (未验证) 提交于 2019-12-02 23:57:01
像用户的手机号,居住城市这些维度会变化的场景,会对用户维度表里面的数据造成影响,这种情况叫做缓慢变化维度。 1.需要跟踪最新变化,就更新数据为最新 2.需要保存历史数据的话, 就可以将主键设置为dwid 添加一个列 对应数据有效值(标识开始和过期时间) 3.维度需要的比较少的话,可以直接增加历史对应维度列(适合较少的维度值和变化度) 来源:博客园 作者: 唐松怀 链接:https://www.cnblogs.com/tangsonghuai/p/11443588.html