cube数据库
㈠ android开发框架有哪些
1、Rajawali
介绍:
安卓的OpenGL ES 2.0/3.0 引擎。可以用于制作普通应用或者动态壁纸,当然也可以用于制作游戏。
项目地址: https://github.com/Rajawali/Rajawali
2、RxAndroid
介绍:
RxAndroid是RxJava的一个针对Android平台的扩展。它包含了一些能够简化Android开发的工具。
项目地址: https://github.com/ReactiveX/RxAndroid
3、Paginize
介绍:
Paginize 是一个轻量级的UI框架,使用注解来注入布局和view,除了使用注解之外,该框架还有两个特色:1.用Page的概念来取代Fragment,2.切换page时自带ios风格的动画效果。
项目地址: https://github.com/neevek/Paginize
4、otto
介绍:
Otto 是square公司出的一个事件库(pub/sub模式),用来简化应用程序组件之间的通讯。 Otto 修改自Google的Guava库,专门为Android平台进行了优化。
项目地址: https://github.com/square/otto
5 、rebound
介绍:
rebound是facebook的开源动画库。可以认为这个动画库是独立于android Framework之外的一种动画实现。
项目地址: https://github.com/facebook/rebound
6、KJFrameForAndroid
介绍:
KJFrameForAndroid 又叫KJLibrary,是一个帮助快速开发的框架。使用KJFrameForAndroid,你可以只用一行代码就完成http请求、网络图片加载、数据库数据保存或读取。
项目地址: https://github.com/kymjs/KJFrameForAndroid
7、xUtils
介绍:
xUtils
包含了很多实用的android工具。 xUtils
支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls
最低兼容android 2.2 (api level 8)
项目地址: https://github.com/wyouflf/xUtils
目前xUtils主要有四大模块:
DbUtils模块:
android中的orm框架,一行代码就可以进行增删改查;
支持事务,默认关闭;
可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);
支持绑定外键,保存实体时外键关联实体自动保存或更新;
自动加载外键关联实体,支持延时加载;
支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。
ViewUtils模块:
android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;
新的事件绑定方式,使用混淆工具混淆后仍可正常工作;
目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。
HttpUtils模块:
支持同步,异步方式的请求;
支持大文件上传,上传大文件不会oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;
下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;
返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。
BitmapUtils模块:
加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;
支持加载网络图片和本地图片;
内存管理使用lru算法,更好的管理bitmap内存;
可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等...
8、butterknife-view
注入工具
介绍:
为了减少频繁的调用findViewById(R.id...),可以采用一些注入框架,可以简化自己的代码,让你更专注于实际的功能开发,butterknife就是这样的一个框架,他是jakewharton大神的作品,值得一试。
class ExampleActivity extends Activity {
@InjectView(R.id.title) TextView title;
@InjectView(R.id.subtitle) TextView subtitle;
@InjectView(R.id.footer) TextView footer;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.inject(this);
// TODO Use "injected" views...
}
}
这是博客地址:
http://jakewharton.github.io/butterknife/
项目地址: https://github.com/JakeWharton/butterknife
9、cube-sdk
一淘推出的开发框架
介绍:
cube一个Android开发包, 可极大提高你的开发效率。主要提供了图片加载以及网络请求方面的api功能。
项目地址: https://github.com/etao-open-source/cube-sdk
他们的网站:http://cube-sdk.liaohuqiu.net/cn/
10、ASimpleCache
一个简单的缓存框架
介绍:
ASimpleCache
是一个为android制定的 轻量级的 开源缓存框架。轻量到只有一个java文件(由十几个类精简而来)。
它可以缓存什么东西?普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和
byte数据。
项目地址: https://github.com/yangfuhai/ASimpleCache
11、androidannotations
介绍:
AndroidAnnotations是一个能够让你快速进行Android开发的开源框架,它能让你专注于真正重要的地方。
使代码更加精简,使项目更加容易维护,它的目标就是“Fast Android Development.Easy maintainance”。
通过一段时间的使用发现,相比原生的Android开发,确实能够让你少些很多代码
项目地址: https://github.com/excilys/androidannotations
12、Event Bus
解耦android模块
介绍:
当一个Android应用功能越来越多的时候,保证应用的各个部分之间高效的通信将变得越来越困难。如何优雅地解决这个问题?这时候,就需要使用到EventBus。
EventBus是GreenRobot出品的Android系统的一个Event
Bus类库,使用起来和之前我们所介绍的Square的Otto差不多,都是用来简化应用组件之间的通信。
项目地址: https://github.com/greenrobot/EventBus
13、BeeFramework_Android
介绍:
BeeFramework
Android版主要为Android初级开发人员提供一个基于MVC开发模式的APP DEMO,并提供一套APP内调试工具,包括
查看网络数据请求历史 Crash Log列表 真机WIFI环境下模拟2G\3G网络 查看APP性能(内存占用,CPU占用等)
项目地址: https://github.com/BeeFramework/BeeFramework_Android
14、afinal
介绍:
Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通过finalActivity,我们可以通过注解的方式进行绑定ui和事件。通过finalBitmap,我们可以方便的加载bitmap图片,而无需考虑oom等问题。通过finalDB模块,我们一行代码就可以对android的sqlite数据库进行增删改查。通过FinalHttp模块,我们可以以ajax形式请求http数据。
Afinal里面目前包含了四大组件:
FinalHttp:用于请求http数据,直接ajax方式请求,文件上传, 断点续传下载文件等
FinalBitmap:用于显示bitmap图片,而无需考虑线程并发和oom等问题。
FinalActivity:完全可以通过注解方式绑定控件和事件,无需编写代码。
FinalDb:android中sqlite的orm框架,一行代码搞定增删改查。
Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通过finalActivity,我们可以通过注解的方式进行绑定ui和事件。通过finalBitmap,我们可以方便的加载bitmap图片,而无需考虑oom等问题。通过finalDB模块,我们一行代码就可以对android的sqlite数据库进行增删改查。通过FinalHttp模块,我们可以以ajax形式请求http数据。详情请通过以下网址查看。
项目地址: https://github.com/yangfuhai/afinal
15、Volley
介绍:
在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的Google
I/O 2013上,Volley发布了。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。
项目地址: https://github.com/mcxiaoke/android-volley
㈡ 什么是"数据立方体"
一种基于数据立方体的数据泛化算法
[日期:2006-08-21] 来源: 作者: [字体:大 中 小]
黄建国
(合肥幼儿师范 现代教育技术中心 安徽 合肥 230011 )
摘要 为了更有效的进行在线分类挖掘,提出了一种泛化算法。该算法结合了数据立方体技术和面向属性归纳方法中的泛化策略,有效降低了聚合运算的运算量,提高了运算效率,将数据库中的原始数据泛化成用户感兴趣的概念层次上的、聚合的、具有统计意义的元数据,为在线分类提供了良好的数据环境。
关键词 数据挖掘 数据泛化 数据立方体
1 引言
数据准备是KDD过程中一个很重要的过程,良好的数据准备过程能够为数据挖掘提供清洁、可靠、稳定的数据环境,以保证挖掘算法的有效实施。在线分类理想的数据环境应具备以下几个特点: (1)数据应包含丰富的属性信息,应具备可靠性和稳定性;
(2)数据的属性应具有对于分类任务的相关性。大多数的分类任务只与数据库中部分属性有关,多余的、无关的属性介入分类,常会减慢甚至错误引导分类过程,应此必须去掉无关属性。
(3)数据应具有高层数据信息,以发现清晰的、高层的、具有统计意义的分类规则。在本文的研究中,为了使数据环境达到上述要求,在数据准备阶段采用了数据泛化的策略,这个策略用概念层次作为背景,结合了OLAP技术与Jiawei Han等人的面向属性归纳的方法,明显提高了工作效率。
2 面向属性归纳中的基本泛化策略和算法
随着KDD研究的逐步深入, Jiawei Han等人提出了一种基于归纳的知识发现方法——面向属性的归纳方法[1][2][3],这方法的特点是能够根据概念层次将低概念层的数据泛化到相应的高层次的概念层,以发现多层的或高层的规则。面向属性归纳方法是一种有效的、完整的知识发现算法,该算法将机器学习中示例学习方法与数据库的操作技术相结合[1]。算法的一个关键就是攀升属性所对应的概念层次树以泛化原始数据集的数据到用户感兴趣的概念层上,减少数据集的大小,从而降低知识发现过程的计算复杂度。面向属性归纳方法的进行,必须有两个前提:
(1)必须由用户提出明确的知识发现任务。在Jiawei Han等人的研究中,采用了一种类似SQL语句的知识发现语句DMQL[4]用来让用户定义发现任务,下面便是一个分类任务的语句描述:
要说明的是在本文的研究中采用了一个可视化的向导来引导用户定义发现任务,但为了文章描述方便,在本文的描述中,借用了DMQL来描述发现任务
(2)与发现任务相关的属性应有概念层次,如上文所述,数值型的概念层次可以自动提取,给定的概念层次可以用户的兴趣和发现任务的不同而进行动态调整。
在具备以上两个前提时,面向属性归纳采用了以下一些泛化策略。
● 泛化策略
策略1 在最小分解单位上泛化
一般而言,泛化都是在数据集的单个属性上进行的。因为单个属性常常是数据集中的最小分解单位。在最小分解单位上进行泛化,更能确定泛化过程中的细微变化,从而达到适度泛化的目的,避免过度泛化。
策略2 属性去除
如果一个属性在相关数据集中有大量不同的值,但是在其对应的概念层次树上,没有比该属性更高的概念层,则该属性将被从发现任务中去除。因为这样的属性是不可能被泛化到更高的概念层的,这是符合示例学习理论的。
策略3 概念树攀升
如果一个属性在概念层次树上有更高层次的概念,那么在泛化后的数据集中将所有记录的该属性值以高层次的属性值替代。
策略4 增加属性CNT
作为策略3的执行结果,必然会有许多不同的纪录由于属性值完全相同而合并成一条纪录。为了反应这一变化,引入属性CNT来纪录最初的表中不同纪录被概括成泛化表中相同纪录的个数。属性CNT在泛化的过程中保存了最初的计数,该值在知识发现的过程中起到了重要作用。
策略5 设立阈值
利用策略2中的CNT可以定义规则的正确率P,P=(符合规则的CNT值)/(符合规则左边属性条件的CNT值)。这样可以定义一阈值L用于取舍规则,若P>L则规则有效,否则丢弃该规则。另外,对一个属性A而言,为了将数据集概括到一定层次,必须沿着A的概念层次向上爬行几次。为了控制这个过程,有必要设置一归纳阈值,若A的取值个数达到这一阈值,则无需进一步概括,否则必须进行进一步的概括。除此之外,我们还可以对泛化表设置一个归纳阈值,如果泛化表的记录树大于该归纳阈值,则进行进一步的泛化直到满足这个归纳阈值为止。以上策略可以总结成算法如下:
算法1 (基本泛化算法)
输入条件:1.一个关系数据集,2 一个学习任务,3 一套相关属性的概念层次,4 每个属性归纳阈值t[i](i=1 to n,于属性相对应)、一个泛化表归纳阈值t2。
输出:一个用户期望的泛化后的数据集。
步骤:本算法可以分为两大步:
Step1. 根据用户提交的学习任务,从原始的关系数据集中收集与任务相关的属性与数据。生成初始泛化集GR;
Step2. 运行基本的泛化算法产生泛化数据集。
注意,step2可以细化成如下算法:
begin
for GR中的每一个属性Ai do
begin
while Ai的不同值的数目>t[i] do
begin
if Ai在概念层次中有高层次的概念 THEN
将Ai的所有值以高层次的概念值取代
else
在GR中移去Ai;
合并同样的记录;
end;
end;
while GR中的记录数>t2 do
begin
选择泛化属性进一步泛化;
合并相同的记录。
end;
end.
3 基于数据立方体的泛化算法
上述泛化算法是针对关系表的,其生成的结果也是关系数据表。对泛化后关系数据表进行分类规则挖掘时仍要进行大量的聚合运算,如计数、求和等。有没有办法降低聚合运算的运算量呢?有,那就是数据立方体。我们知道数据立方体的方格内存放的就是一些聚合值,而且对数据立方体进行聚合运算,其效率远高于对关系数据库进行聚合运算。基于此,本文提出了一种基于数据立方体的算法。
● 基于数据立方体的泛化算法
本算法共分为四步:第一步,初始化。首先,根据用户提出的发现任务,收集相关数据。(这里需说明的一点是此处用户提出的发现任务的相关属性实际上是一个维的概念,它可能对应于数据库中一个或几个有层次关系的实际属性。在下面的例子中我们将看到这一点。)然后确定每维的概念层次(自动提取数值型概念层次或动态调整已有概念层次)。第二步,构造基本立方体(Basecube)。这一步中首先根据数据库的数据分布特性(对于离散属性确定不同值的个数,连续值则确定数值间的最小间隔)确定每维的最初泛化层次,然后进行聚合计算来构造基本立方体。第三步,按照基本泛化策略对每维进行泛化造作,以确定每维理想的泛化层次。第四步,在新的泛化层次上对Basecube进行再计算,以构造最终的泛化立方体Primecube。这一步中将大量使用数据立方体的操作。该算法的形式描述如下:
算法2 基于数据立方体的泛化算法
输入:
1 一个待挖掘的关系数据集;
2 一个学习任务;
3 一个概念层次集合Gen(Ai),Ai是任意维;
4 Ti,任意维Ai的泛化阈值。
输出:一个最终泛化的数据立方体。
方法:
⑴ 始化:
① 根据用户的学习任务,确定每一维对应的属性,并从初始关系数据集中收集相关的数据。
② for 每一维Ai do
begin
if Ai是数值型 and Ai没有概念层次 then 自动生成概念层次(算法2.1)
else 动态调整概念层次以适应当前学习任务;
end;
⑵ 造Basecube:
① 对于每一维的属性计算其在数据库中对应的不同值的个数,如果是数值型则计算数值间的最小间隔,根据不同值的个数或最小间隔确定每一维的最初泛化层次。
② 按最初泛化层次确定每维的维成员,并进行COUNT,SUM等聚合运算。用文[26]中算法构造基本立方体。
⑶ 确定每维的泛化层次。
① 根据每一维的泛化阈值,进行基本泛化(算法2.5)找到最终理想的层次Li。
② 找出每一维Ai的映射<v,v’>,其中v是维成员值,v’是v在泛化层上对应的概念值。
⑷ 构造Primecube。
① 将Basecube的维成员v替换成v’;
② 对Basecube进行数据立方体操作,构造Primecube。
本算法中,第一步的时间复杂度主要依赖于特定数据库的操作和提取或调整概念层次的算法的效率。第二步的主要操作在于立方体的构造上,复杂度为 。第三步和第四步都只对基本立方体进行一次扫描,加上计算量,复杂度也为 。所以本算法中二到四步总的时间复杂度应为 。
下面以一个例子来进一步描述该算法。
例1:从网上下了一个数据库CITYDATA,该数据库记录了美国地区城市的情况。其中有三个表,如下:
表1 CityLocation 记录城市所在地
表2 LaborIncome 记录城市人员的收入
表3 记录犯罪率与教育程度
我们有一个初始概念层次US_LOCATION:
{USA} {ANY}
{North_East,North_Central,South,West} {USA}
{New_England,Middle_Atlantic} {North_East}
{Mountain,Pacific_East, Pacific_West} {West}
…
现在我们要对数据库进行如下任务的发现:
CLASSIFY CITYDATA
ACCORDING TO UNEMPLOYMENT_RATE
IN RELEVANCE TO US_LOCATION,FAMILY_INCOME,POVERTY_PCT,
CRIME_RATE,BACHELOR_PCT
FROM LABORINCOME,CRIMEEDUCATION
注意到该发现任务中的维US_LOCATION对应着几个有层次关系的数据库属性:area-name→county→state→region→big region→country,这些属性在概念层次Us location中都对应着相应的层次。每一维的阈值为5。
根据算法,我们首先作初始化,对family income,poverty pct,crime_rate,bachelor_pct由于它们是数值型的属性,所以概念层次可以自动提取出来,下面便是自动提取出来的概念层次:
运行算法二、三、四步,得到六维的基本立方体和泛化立方体,为方便起见本文给出其中三维的立方体图。
最后的泛化结果放在了表4。注意到cityid的属性已被移去。
表4 最后的泛化结果
4 结束语
数据泛化在线分类研究中占有重要地位,它是在线分类规则挖掘算法的基础。在线分类任务的一个重要特征就是数据量庞大,且数据中含有一定量的异常信息,这样的数据是不适合直接分类的。通过数据泛化,可以将数据整理、清洁,为分类提供较好的数据环境。另外数据泛化采用了概念层次技术,可以发现高层的分类规则,从而使分类结果更易理解。
本文结合基本的面向属性归纳技术,提出了一种数据立方体的数据泛化算法,给在线分类提供了较好的数据预处理技术。
参考文献
[1] Han J, Fu Y. Exploration of the power of attribute-oriented inction in data mining. In: Fayyad U M et al eds. Advances in Knowledge Discover and Data Mining. Cambridge: AAAI/MIT Press, 1996. 399~421
[2] J. Han, Y. Cai, and N. Cercone. Knowledge discovery in databases: An attribute_Oriented approach. In Proc. 18th Int. Conf. Very Large Data Bases, pages 547--559, Vancouver, Canada, August 1992.
[3] Cheung D W, Fu A W C, Han J. Knowledge discovery in databases: a rule based attribute oriented approach. In: Zbigniew R ed. Methodologies for Intelligent systems: 8th International Symposium. Berlin: Springer-Verlag, 1994. 164~173
[4] Han, J., Chiang, J., Chee, S., Chen, J., Chen, Q., Cheng, S., Gong, W., Kamber, M., Liu, G., Koperski, K., Lu, Y., Stefanovic, N., Winstone, L., Xia, B., Zaiane, O. R., Zhang, S. & Zhu, H. (1997), DBMiner: A system for data mining in relational databases and data warehouses, in `Proc. CASCON'97: Meeting of Minds', Toronto, Canada, pp. 249--260.
作者简介:
黄建国(1974年10月-- ) ,男,安徽省合肥市人,合肥幼儿师范学校讲师,中国科技大学计算机应用工程硕士。
㈢ 大数据BI里面大家都有提到Cube,有的提倡打Cube,有的说不打Cube,到底哪个才是最好的
各有来各的好处,如果你的自大数据产品不能直接处理超大数据量,通过打cube的方式能够减低系统压力,如果能够运算足够多的数据,当然是不打cube的方式更好!
首先,不打cube能够让你的分析层的数据更厚,分析的结果也就更准确;其次,也能让你的数据分析更加灵活,因为原始的数据全部都能调配出来,进行运算,当你的分析需求改变的时候,不会因为cube造成分析的阻碍,这点我觉得很重重要,当每次的业务部门分析需求发生变化时如果都需要数周或数月的重新搭建,将造成很大的损失,都说商场如战场,争分夺秒嘛。
目前国内传统的打cube的大数据产品很多,不打cube的,敏捷型的产品也有,比如永洪科技的大数据产品,就是很不错的,在面对国内某电信行业巨头大规模超过百亿级的数据分析需求时,永洪的产品也能有很好的表现。当然也不是所有公司都能有百亿级的数据产生,但是灵活的需求分析,以及厚重的数据层都将是所有数据分析非常重要的组成部分,如果不灵活将会失去分析的先机或分析的意义,如果数据层过薄将严重影响分析的准确性。
如果一定要说的话,永洪科技那种那么不打cube的大数据BI才是行业发展的趋势,应该是要远远优于传统BI的模式的。
㈣ 数据分析软件最基本的的五款介绍
想要做好数据分析,一定要提前了解好关于数据分析的一些相关知识,比如数据分析常用的软件有哪些?我们在做数据分析时,一定要提前做好充分的了解。今天要和大家分享的内容是数据分析中常用的五种软件,下面让我们一起来好好理解一下吧。
Excel是我们最常用的一个办公软件,可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。包括有数据透视功能、统计分析、图表功能、高级筛选、自动汇总功能、高级数学计算等众多功能。
SAS软件,是全球最大的软件公司之一,是统计分析软件。SAS把数据存取、管理、分析和展现有机地融为一体。它有3个优点,第一点1、功能强大,统计方法齐,全,新;SAS提供了从基本统计数的计算到各种试验设计的方差分析,相关回归分析以及多变数分析的多种统计分析过程,几乎囊括了所有最新分析方法,其分析技术先进,可靠。第二点,使用简便,操作灵活;SAS以一个通用的数据(DATA)步产生数据集,尔后以不同的过程调用完成各种数据分析。第三点,提供联机帮助功能;使用过程中按下功能键F1,可随时获得帮助信息,得到简明的操作指导。
R软件,R是一套完整的数据处理、计算和制图软件系统。优点有:数据存储和处理系统;数组运算工具;完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。
SPSS,是世界上最早的统计分析软件。优点有:操作简便:界面友好,除了数据录入及部分命令程序等少数输入工作需要键盘键之外,大多数操作可通过鼠标拖曳、点击“菜单”、“按钮”和“对话框”来完成;编程方便:具有第四代语言的特点,告诉系统要做什么,无需告诉怎样做。只要了解统计分析的原理,无需通晓统计方法的各种算法,即可得到需要的统计分析结果;功能强大:具有完整的数据输入、编辑、统计分析、报表、图形制作等功能。自带11种类型136个函数;数据接口:能够读取及输出多种格式的文件;模块组合:SPSS for Windows软件分为若干功能模块;针对性强:SPSS针对初学者、熟练者及精通者都比较适用。
Python是一种面向对象、解释型计算机程序设计语言。Python语法简洁而清晰,具有丰富和强大的类库。它的优点有:简单;易学;速度快;免费、开源;高层语言;可移植性;解释性;面向对象;可扩展性;可嵌入型;丰富的库;规范的代码。
上文就是小编为大家介绍的数据分析常用的五大常用软件,为大家简单做一下介绍。Excel、SAS软件、R软件、SPSS、Python是数据分析中使用最频繁的五种工具,掌握着五种常用工具是想要从事数据分析这个行业的基础,如果您有意愿加入数据分析行业,从事数据分析师的职位,那就赶快学习起来吧。