LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭

LOFTER-网易轻博

数据处理

380浏览    31参与
榜单数据更新于2019-11-21 23:02
The Nine

delphi编写的载封包

在Windows XP,D7编译测试通过

HOOK.DLL源码

library HOOK;

{ Important note about DLL memory management: ShareMem must be the

  first unit in your library's USES clause AND your project's (select

  Project-View Source) USES clause if your DLL exports any procedures or

  functions that pass...

在Windows XP,D7编译测试通过

HOOK.DLL源码

library HOOK;

{ Important note about DLL memory management: ShareMem must be the

  first unit in your library's USES clause AND your project's (select

  Project-View Source) USES clause if your DLL exports any procedures or

  functions that pass strings as parameters or function results. This

  applies to all strings passed to and from your DLL--even those that

  are nested in records and classes. ShareMem is the interface unit to

  the BORLNDMM.DLL shared memory manager, which must be deployed along

  with your DLL. To avoid using BORLNDMM.DLL, pass string information

  using PChar or ShortString parameters. }


uses

SysUtils,

windows,

Messages,

APIHook in 'APIHook.pas';

type

PData = ^TData;

TData = record

Hook: THandle;

Hooked: Boolean;

end;

var

DLLData: PData;

{------------------------------------}

{过程名:HookProc

{过程功能:HOOK过程

{过程参数:nCode, wParam, lParam消息的相

{ 关参数

{------------------------------------}

procedure HookProc(nCode, wParam, lParam: LongWORD);stdcall;

begin

if not DLLData^.Hooked then

begin

HookAPI;

DLLData^.Hooked := True;

end;

//调用下一个Hook

CallNextHookEx(DLLData^.Hook, nCode, wParam, lParam);

end;

{------------------------------------}

{函数名:InstallHook

{函数功能:在指定窗口上安装HOOK

{函数参数:sWindow:要安装HOOK的窗口

{返回值:成功返回TRUE,失败返回FALSE

{------------------------------------}

function InstallHook(SWindow: LongWORD):Boolean;stdcall;

var

ThreadID: LongWORD;

begin

Result := False;

DLLData^.Hook := 0;

ThreadID := GetWindowThreadProcessId(sWindow, nil);

//给指定窗口挂上钩子

DLLData^.Hook := SetWindowsHookEx(WH_GETMESSAGE, @HookProc, Hinstance, ThreadID);

if DLLData^.Hook > 0 then

Result := True //是否成功HOOK

else

exIT;

end;

{------------------------------------}

{过程名:UnHook

{过程功能:卸载HOOK

{过程参数:无

{------------------------------------}

procedure UnHook;stdcall;

begin

UnHookAPI;

//卸载Hook

UnhookWindowsHookEx(DLLData^.Hook);

end;

{------------------------------------}

{过程名:DLL入口函数

{过程功能:进行DLL初始化,释放等

{过程参数:DLL状态

{------------------------------------}

procedure MyDLLHandler(Reason: Integer);

var

FHandle: LongWORD;

begin

case Reason of

DLL_PROCESS_ATTACH:

begin //建立文件映射,以实现DLL中的全局变量

FHandle := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, $ffff, 'MYDLLDATA');

if FHandle = 0 then

if GetLastError = ERROR_ALREADY_EXISTS then

begin

FHandle := OpenFileMapping(FILE_MAP_ALL_ACCESS, False, 'MYDLLDATA');

if FHandle = 0 then Exit;

end else Exit;

DLLData := MapViewOfFile(FHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0);

if DLLData = nil then

CloseHandle(FHandle);

end;

DLL_PROCESS_DETACH:

begin

if Assigned(DLLData) then

begin

UnmapViewOfFile(DLLData);

DLLData := nil;

end;

end;

end;

end;

{$R *.res}

exports

InstallHook, UnHook, HookProc;

begin

DLLProc := @MyDLLHandler;

MyDLLhandler(DLL_PROCESS_ATTACH);

DLLData^.Hooked := False;

end.

'APIHook.pas'源码

unit APIHook;

interface

uses

SysUtils,

Dialogs,

Windows, WinSock;

type

//要HOOK的API函数定义

TSockProc = function (s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;

PJmpCode = ^TJmpCode;

TJmpCode = packed record

JmpCode: BYTE;

Address: TSockProc;

MovEAX: Array [0..2] of BYTE;

end;

//--------------------函数声明---------------------------

procedure HookAPI;

procedure UnHookAPI;

procedure SaveInfo(var buf); stdcall;

function recvout(var Rbuf;RLen:Integer):Integer;

var

OldSend, OldRecv: TSockProc; //原来的API地址

JmpCode: TJmpCode;

OldProc: array [0..1] of TJmpCode;

AddSend, AddRecv: pointer; //API地址

TmpJmp: TJmpCode;

ProcessHandle: THandle;

implementation

procedure SaveInfo(var buf); stdcall;

var

  f: file;

  FileName:string;

begin

  {保存为文件信息}

  FileName:='c:\test.txt';

  assignfile(f, FileName);

  closefile(f);

end;

function recvout(var Rbuf;RLen:Integer):Integer;

Var

buf1:pchar;

i:integer;

ss:string;

Begin

buf1:=@Rbuf;

for i:=1 to Rlen do

    Begin

      ss:=ss+inttohex(byte(buf1^),2)+' ';

      buf1:=buf1+1;

    End;

ShowMessage('封包内容[16进制]:'+ss);

ShowMessage('发送封包长度:'+inttostr(Rlen));

End;

{---------------------------------------}

{函数功能:Send函数的HOOK

{函数参数:同Send

{函数返回值:integer

{---------------------------------------}

function MySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;

var

dwSize: cardinal;

begin

//这儿进行发送的数据处理

MessageBeep(1000); //简单的响一声

recvout(Buf,len);

//SaveInfo(Buf);

//调用直正的Send函数

WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);

Result := OldSend(S, Buf, len, flags);

JmpCode.Address := @MySend;

WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);

end;

{---------------------------------------}

{函数功能:Recv函数的HOOK

{函数参数:同Recv

{函数返回值:integer

{---------------------------------------}

function MyRecv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;

var

dwSize: cardinal;

begin

//这儿进行接收的数据处理

MessageBeep(1000); //简单的响一声

//调用直正的Recv函数

WriteProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);

Result := OldRecv(S, Buf, len, flags);

JmpCode.Address := @MyRecv;

WriteProcessMemory(ProcessHandle, AddRecv, @JmpCode, 8, dwSize);

end;

{------------------------------------}

{过程功能:HookAPI

{过程参数:无

{------------------------------------}

procedure HookAPI;

var

DLLModule: THandle;

dwSize: cardinal;

begin

ProcessHandle := GetCurrentProcess;

DLLModule := LoadLibrary('ws2_32.dll');

AddSend := GetProcAddress(DLLModule, 'send'); //取得API地址

AddRecv := GetProcAddress(DLLModule, 'recv');

JmpCode.JmpCode := $B8;

JmpCode.MovEAX[0] := $FF;

JmpCode.MovEAX[1] := $E0;

JmpCode.MovEAX[2] := 0;

ReadProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);

JmpCode.Address := @MySend;

WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize); //修改Send入口

ReadProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);

JmpCode.Address := @MyRecv;

WriteProcessMemory(ProcessHandle, AddRecv, @JmpCode, 8, dwSize); //修改Recv入口

OldSend := AddSend;

OldRecv := AddRecv;

end;

{------------------------------------}

{过程功能:取消HOOKAPI

{过程参数:无

{------------------------------------}

procedure UnHookAPI;

var

dwSize: Cardinal;

begin

WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);

WriteProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);

end;

end.

测试代码

procedure TForm1.Button1Click(Sender: TObject);

var

  MOduleHandle:THandle;

  TmpWndHandle:THandle;

begin

  TmpWndHandle:=0;

  //TmpWndHandle:=FindWindow('IEFrame', nil);

  TmpWndHandle:=FindWindowA(nil,'《风云online》');

 

  if not IsWindow(TmpWndHandle) then

  begin

    MessageBox(Self.Handle,'没有找到窗口','!!',MB_OK);

    Exit;

  end;

  MOduleHandle:=LoadLibrary('HOOK.dll');

  @InstallHook:=GetProcAddress(MOduleHandle,'InstallHook');

  @UnHook:=GetProcAddress(MOduleHandle,'UnHook');

  if InstallHook(FindWindowA(nil,'《风云online》')) then

  ShowMessage('Hook OK');

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

UnHook;

end;

CDA数据分析师
博客已迁移,请看签名

Kettle常用组件使用教程(入门级二)

直接接到入门级一开始,未观看入门一,请移步观看入门级一

飞机直达:http://lcryblog.lofter.com/post/1e131973_11e346a4


组件:设置值Null


名称:选择替换的字段

需要转换成NULL的值:需要转换成NULL的值

实验八:


如图,自定义常量name,age两个字段,具体值如上,李3两个。

设置值为NULL选择:


执行结果:


----------------------------------------------------------------

组件:执行SQL脚本


数据库连接:选择数据库

SQL script...

直接接到入门级一开始,未观看入门一,请移步观看入门级一

飞机直达:http://lcryblog.lofter.com/post/1e131973_11e346a4


组件:设置值Null


名称:选择替换的字段

需要转换成NULL的值:需要转换成NULL的值

实验八:


如图,自定义常量name,age两个字段,具体值如上,李3两个。

设置值为NULL选择:


执行结果:


----------------------------------------------------------------

组件:执行SQL脚本


数据库连接:选择数据库

SQL script :输入要执行的SQL语句

参数:设置要替换的参数字段

实验九:


如图,自定义两个字段number,nage,具体数据如上

执行SQL脚本选择:


分析:执行插入语句,将自定义数据插入oracle数据表中,两个?的意思作为参数的字段

执行结果:


------------------------------------------------------------------

组件:Java Script代码 


Java Script:脚本的输入

字段名称:定义的字段名

input fields:输入字段

output fields:输出字段

改成为:新的字段名

类型:字段类型

实验十:


如图:自定义三个字段number1,number2,name,具体值如上。

执行Java Script选择:


分析:定义sum字段,将number1和number2相加,定义sumname字段不修改值,修改名为我是改名的方便观察结果。

执行结果:


-----------------------------------------------------------------------------

组件:合并记录


旧数据源:输入数据源

新数据源:输入数据源

匹配关键字段:匹配关键字段

数据字段:数据字段

实验十一:



如图,自定义常量和自定义常量2分别是两个字段no1和no2,具体值如上

注:合并记录一定要先对数据排序,按照一个关键字排序。


我这里就是按照no1排序

合并记录选择:


执行结果:


---------------------------------------------------------------

组件:排序合并


字段名称:选择字段的名称

实验十二:



如图:定义one1,one2两个字段,具体值如上

排序合并选择:


执行结果:


--------------------------------------------------------------------

组件:插入/更新


数据库连接:选择数据库

目标表:选择目标表

不执行任何更新:是否执行更新操作

查询的关键字:关键字

更新字段:选择要插入更新的字段

实验十三:


如图:自定义常量student_name,student_number两个字段,具体值如上

插入/更新选择:


执行结果:


testkettle数据库查询如下:


--------------------------------------------------------------




数控小J

数据驱动业务——梦想成真,只差一步

长久以来,作为在信息管理领域服务多年的IBM人,就一直有个梦想:当业务人员需要分析公司的经营状况时,当市场部需要在特定时间做精准营销时,当老总紧急临时需要某条业务线的汇总数据时,我们可以有个系统马上及时、准确提供数据,漂亮美观地满足各种需求,实现数据驱动业务的目标!我们长久向往超市的模式:需要买东西的顾客轻松自在地在宽敞、整洁的货架上自由选择,当选择结束后,自行去收银台结账付款,需求满足、货品组合完全由顾客自主完成!超市员工所要做的就是整理货架、安排新货品、设计新的商品组合......

好吧,我们先设定一个小目标:

在经典的数据分析场景中,我们需要至少4类人员参与,分别是业务分析师、数据工...

长久以来,作为在信息管理领域服务多年的IBM人,就一直有个梦想:当业务人员需要分析公司的经营状况时,当市场部需要在特定时间做精准营销时,当老总紧急临时需要某条业务线的汇总数据时,我们可以有个系统马上及时、准确提供数据,漂亮美观地满足各种需求,实现数据驱动业务的目标!我们长久向往超市的模式:需要买东西的顾客轻松自在地在宽敞、整洁的货架上自由选择,当选择结束后,自行去收银台结账付款,需求满足、货品组合完全由顾客自主完成!超市员工所要做的就是整理货架、安排新货品、设计新的商品组合......

好吧,我们先设定一个小目标:

在经典的数据分析场景中,我们需要至少4类人员参与,分别是业务分析师、数据工程师、应用开发员以及数据科学家。

分析过程需要业务分析师提需求,数据工程师整理数据和按照一定原则设计数据组合,然后数据科学家按照业务的理解设计合适的数学模型以及验证其合理性,最后由应用开发员把一切变成最终业务分析人员使用的应用。

我们今天提供这么一个应用(假设原型)吧:我们姑且称之为数据集市

今天业务分析师打开以上界面,可以通过关键字查找有没有她想要的数据。或者根据她登录的用户行为分析,自动推荐相应的数据集给她,又或说和她相关岗位的人经常在查找某某数据集...(这不是在网购吗?)

当业务员打开某个她想要的数据集:

她发现这个数据集的提供方是财务部、有信息概览、有详细字段介绍、有样例数据查看。哦,最关键的还有评分!它的质量如何?它的变更历史是怎样,还有其它使用用户的评论!最后她又发现,天啊:还有派生出来的集合、应用的场景以及在这个数据集合上设定好的模型。(详细的菜谱以及好味的魔法!)

是否你想大叫了:这就是我想要的!

IBM变了,我们也在研究"设计思维”,用户的想法,就是我们产品设计的出发点。历时两年的研发,我们离这个目标越来越近!积沙成塔,我们提供的下一代数据分析平台DataWorks即将完型!

这个平台一次性满足你的需求:

1、基于云的架构 - 满足用户海量数据分析的需求,你再也不需要担心有朝一日业务急剧扩展的IT瓶颈限制 ;当然,它也兼顾与你的私有数据中心技术互通有无!

2、开源 - 互联网的时代,强调的是共享经济,这里有你想要的所有开源软件的实现,IBM除了拿来所用,还积极贡献!我们是Spark 2.0 ML的第一贡献公司;

3、敏捷迭代 - 速度是想法到实现、推广的最重要原则,我们支持你先尝试验证一小步,从1000个点子中找到可能的100个实现,最后助你将10个变成企业级的部署!

今天,对于不同角色的用户,你可以单独体验我们的实现。

例如你是数据工程师,你需要每天整理数据集市货架的数据或新上数据产品,我们提供了工具: Forge

你不需要安装对应的软件,主要工作放在分析数据质量,对应整理、匹配类型就好了!

若你是业务分析师,你试试把数据集市里面找到的数据,扔到Watson Anaytics 里面,让IBM的认知技术帮你问问题,帮你自动生成炫丽报表:

对于你是数据科学家,我们即将推出:Data Science Experience (数据科学家体验中心) http://ibm.com/datascience

这个平台可以实现学习、创建以及分享的一站式数据科学家体验,我们拭目以待!

你是开发员?没有忘记你,快上BlueMix,尝试使用IBM大数据分析服务吧!里面有无数的案例,一键式从GitHub部署到BlueMix平台运行,你会体验到极速的敏捷开发!开发应用是如此的简单,再也不用求着系统管理员装环境了,需要的各种高大上服务:语音识别、图像识别、数据存储、海量数仓、天气数据、机器挖掘甚至区块链等,分钟级可得!

更多大数据与分析相关行业资讯、解决方案、案例、教程等请点击查看>>>

详情请咨询在线客服

客服热线:023-66090381

zlfenjoy
拖延的惩罚,为了两个简单的数据...

拖延的惩罚,为了两个简单的数据分析熬到了这个点,真是眼王(。ŏ_ŏ)

拖延的惩罚,为了两个简单的数据分析熬到了这个点,真是眼王(。ŏ_ŏ)

数控小J

Hadoop 信息集成平台,让大数据分析更简单!

就本身而言,Hadoop 不是很有用的东西,原因是它需要编写大量复杂和定制的程序代码,难以治理,也没有数据质量概念和数据治理可谈了。企业用户都忙于去研究如何解决使用 Hadoop 所碰到的问题,主要是涉及到项目实施时间、成本和风险等,而 Hadoop 自身的客户化编程就增加了项目实施时间、成本和风险。

大数据项目实施仅靠 Hadoop 是不会成功的,除非你能有效地做好大数据集成这部分的工作,所以,大数据集成对 Hadoop 系统的初期建设来说就变得非常重要。 大部分 Hadoop 系统初期建设仅是侧重于“无价值的数据折腾进来,无价值的数据折腾出去”,考虑着在 Hadoop...

就本身而言,Hadoop 不是很有用的东西,原因是它需要编写大量复杂和定制的程序代码,难以治理,也没有数据质量概念和数据治理可谈了。企业用户都忙于去研究如何解决使用 Hadoop 所碰到的问题,主要是涉及到项目实施时间、成本和风险等,而 Hadoop 自身的客户化编程就增加了项目实施时间、成本和风险。

大数据项目实施仅靠 Hadoop 是不会成功的,除非你能有效地做好大数据集成这部分的工作,所以,大数据集成对 Hadoop 系统的初期建设来说就变得非常重要。 大部分 Hadoop 系统初期建设仅是侧重于“无价值的数据折腾进来,无价值的数据折腾出去”,考虑着在 Hadoop 系统在处理大数据量情况下,是否能够可以更快些、成本更低些?IBM 研究发现,只有在大数据集成这部分任务实施成功,才能解决 Hadoop 系统有效性问题,是值得大家去重点地关注。

目前,仅有 IBM 能在帮助全球的客户通过大数据集成和治理,把 Hadoop Swamp(沼泽)转变成 Hadoop Lake (湖)这部分工作做得最优秀。

IBM解决方案说明

IBM 为 IBM BigInsights 在内的 Apache Hadoop 系统提供了数据集成(InfoSphere Data Integration)和数据质量治理(InfoSphere Data Quality)解决方案,以帮助客户建设一个真正有用和高效的 Hadoop 平台系统。

1. InfoSphere Data Integration

  • 按照各种需求在不同的源和目标之间整合与转换数据,强大运行扩展性满足很复杂的转换需求;

  • 转换和汇聚任何的数据量,数百种内置转换控件和函数,基于元数据驱动的技术和产品,大大地提升团队协作能力;

  • 通过基于Web浏览器仪表盘来快速地监控管理运行环境,管理好你的数据转换以满足业务要求;

  • 任性地运行在任何地方,无论是传统的 Unix、Linux、Windows操作系统,还是新兴的 Apache Hadoop系统。这些活儿,都是不容易做到呀!

2. InfoSphere Data Quality

  • 分析:利用源数据分析了解您的问题,自动发现关键数据和隐藏的数据关系。

  • 清洗:分析、标准化、匹配、存留数据,最大范围地定制出适合你的解决方案。

  • 监控数据质量:在任意位置和跨系统的访问,都能监控到你的数据质量(数据库或数据流),通过独一无二的功能去优化数据质量指标,从而满足业务与治理目标。

IBM解决方案重点

  • 针对 Hadoop 平台而发布的 Data Integration 和 Data Quality 解决方案,还有 BigMatch for Hadoop、BigSQL、BigSheet 这几个“铁哥们”一起去打天下。

  • 迎合科技潮流 DataLake 发展方向,能全面地解决把任何 Hadoop 数据进行分发和推送所遇到的问题,是一个能提供管理和人见人爱的软件解决方案。

IBM解决方案价值

  • IBM 独有价值:拥有先进技术,并成为市场领导者。

  • 自然运行在 Hadoop 平台上,提供强大的数据转换处理和数据质量提升的可扩展的引擎处理能力,还无需要编写那怕是一行的程序代码,让技术人员爽歪歪。

  • 基于 Hadoop 平台上的整体解决方案级别,让你能更了解每条数据记录,洞察埋藏在信息中的奥秘。

  • 是 IBM BigInsight Hadoop 平台加速器,还能在其他 ODP(Open Data Platform)平台系统上分发数据,并提供 Big SQL、Big Sheets、BigMatch 等武器装备。

  • 目前在技术水平上,IBM 数据处理速度和扩展能力还没有对手能够超越,真正是一个面向企业级用户的大数据信息集成与治理解决方案。

  • 为大数据生态环境提供了最佳的配套软件工具,并遵循 ODP 规范,四海之内皆兄弟,无论是多大数据量、多复杂、多变化的数据,都能全面和高效地集成。

哇!当你把在 Hadoop 平台上搞信息集成的重点内容都搞清楚后,就可马上进入高效的大数据世界,叹世界啦!

更多大数据与分析相关行业资讯、解决方案、案例、教程等请点击查看>>>

详情请咨询在线客服

客服热线:023-66090381

zhangyanxia2008

R正则表达式

-----转义字符(元字符)

.                 任意单个字符,除\n

[ ]               选择方括号中的任意一个,如[a-z]表示任意一个小写字符

^               放在表达式开始,表示匹配文本开始位置

$                匹配输...

-----转义字符(元字符)

.                 任意单个字符,除\n

[ ]               选择方括号中的任意一个,如[a-z]表示任意一个小写字符

^               放在表达式开始,表示匹配文本开始位置

$                匹配输入字符串的结束位置

                  放在方括号内[^],表示非方括号内的任一字符

{n}              匹配确定的n次

{n,}             至少匹配n次 

{n,m}          最少匹配n次,最多匹配m次 

|                 可选项,即|前后的表达式各选一个

\                 换码符号

 *                匹配前面的子表达式零次或多次

?               匹配前面的子表达式零次或一次

 +               匹配前面的子表达式一次或多次

\b               匹配单词边界,即单词和空格间的位置,如never中er

\B               匹配非单词边界

\d               数字字符

\D              非数字字符

\f                换页符

\n               换行符

\r                回车符

\s               空白字符,如空格、制表符、换页符等

\S               非空白字符

\t                制表符

\v               垂直制表符

\w               包括下划线在内的任何单词字符。《=》 [A-Za-z0-9_]


-----案例

^[a-zA-Z0-9_]{1,}$     所有包含一个以上的字母、数字或下划线的字符串     《=》^[a-zA-Z0-9_]+$

^[0-9]{1,}$                 所有的正数          《=》^[0-9]+$

^-{0,1}[0-9]{1,}$         所有的整数          《=》^-?[0-9]+$ 

^-{0,1}[0,9]{0,}\.{0,1}[0-9]{0,}$          所有的小数          《=》^-?[0,9]*\.?[0-9]*$


{0,1} 《=》?          {0,} 《=》*          {1,}《=》+


^[a-zA-Z_]$     所有的字母和下划线

^[[:alpha:]]{3}$     所有3个字母的单词

^a$          字母a

^a{5}$       字母aaaaa

^a{2,5}$     字母aa,aaa,aaaa,aaaaa

.{2}               所有的2个字符

[\f\r\t\n]          匹配所有的白字符  《=》\s


 

数控小J

大数据环境下的多维分析技术

引言

之前我们有一篇文章《一文读懂多维分析技术(OLAP)的进化过程》为大家介绍了多维分析技术(即联机分析处理(On-Line Analytical Processing),简称OLAP)的前世今生及发展方向。正是由于多维分析技术在业务分析系统的核心功能中的不可替代性,随着商业智能系统的深入应用,分析系统的数据量呈指数级增长,原有依赖硬盘IO处理性能(包括传统数据库、多维立方体文件)的多维分析技术遭遇到性能瓶颈。与此同时,随着服务器内存价格的下降,一种新的基于内存的OLAP技术架构出现了。这种新架构既能够保证类似于MOLAP方式的高性能,也能基于更大的数据量进行分析,还不用定期将数据库里的数...

引言

之前我们有一篇文章《一文读懂多维分析技术(OLAP)的进化过程》为大家介绍了多维分析技术(即联机分析处理(On-Line Analytical Processing),简称OLAP)的前世今生及发展方向。正是由于多维分析技术在业务分析系统的核心功能中的不可替代性,随着商业智能系统的深入应用,分析系统的数据量呈指数级增长,原有依赖硬盘IO处理性能(包括传统数据库、多维立方体文件)的多维分析技术遭遇到性能瓶颈。与此同时,随着服务器内存价格的下降,一种新的基于内存的OLAP技术架构出现了。这种新架构既能够保证类似于MOLAP方式的高性能,也能基于更大的数据量进行分析,还不用定期将数据库里的数据刷新到OLAP服务器来防止数据过期。这种新的体系架构当之无愧地成为大数据环境下搭建多维分析功能的流行选择,而IBM Cognos的Dynamic Cubes就是它的代表作。

动态立方体(Dynamic Cubes)作为一种新的技术架构最先应用在Cognos的10.2.0版本。下面我们以Cognos的11.0版本来看看怎样对动态立方体进行性能调优。

影响因素

动态立方体是以原有ROLAP技术为基础,使用服务器内存作缓存的一种新型技术架构。它的响应性能的影响因素包括。

数据仓库(数据集市):由于DynamicCubes的事实表数据都存储在数据仓库中,因此,有时数据仓库的性能好坏会影响前端多维分析查询的响应速度。在数据仓库的多维数据模型中,需要注意:

  • 维表中的连接事实表的代理键的数据类型应该采用integer类型

  • 维表中的各个层级的层级键的数据类型应该采用integer类型

2.数据库:提高数据库的查询性能,有助于提高最终多维分析展现的响应速度。

  • 有时候多维分析的性能严重依赖于数据库运行大数据量多任务查询任务的性能

  • 数据库基于的硬件资源(内存、CPU及IO)应该考虑到大数据量并行查询的性能,因此基于物理机的数据库性能当然比基于虚拟机的更优

  • 尽量少用或者不用视图,因为视图的数据不是物理存在的

  • 最好采用分析型的MPP数据库,因为多维分析都是针对大数据量的汇总查询

  • 采用列存储技术的数据库对于大量并发并联查询性能更优

  • 要确保查询性能最优化,可以通过数据库的性能分析监控、执行计划分析等工具

  • 索引的设计,对于非MPP数据库,索引的设计对于查询性能影响很大

动态立方体性能调优

1.由于动态立方体使用机器内存和CPU进行性能增强,所以在对应用服务器的硬件进行评估时应该为将来的性能扩展留一定的预留空间。硬件评估可以通过Cognos提供的建模工具Cube Designer里的“评估硬件需求”功能初步估算。如下图所示。

2.在多维立方体模型设计时,使用模型验证功能,可以知道影响性能的问题所在。可能的问题有:连接字段类型、星形模型与雪花模型、过滤器的使用、视图的使用等等。如下图所示。

3.评估模型的复杂度。如果多维模型的维度和度量很多,数据量也很大,可以通过设计聚合表或者聚合内存来提升查询性能。动态立方体会通过聚合感知技术找到最合适的聚合数据集进行查询以提高查询性能。如下图所示。

4.JVM设置。动态立方体使用Java虚拟机作为内存管理的容器载体,所以Cognos也提供了一些JVM堆设置来优化数据查询性能。你可以在Cognos Administration界面上找到Query Service服务进行参数调整。如下图所示。

5.您还可以通过Cognos的Dynamic Query Analyzer (DQA)工具来对动态立方体的查询性能进行评估并得到优化建议。在进行评估之前,记得将Dynamic Cubes的工作日志打开,如下图所示。

结束语

如需了解更多,请猛击以下链接,发现惊喜!

http://bigdata.evget.com/

更多大数据与分析相关行业资讯、解决方案、案例、教程等请点击查看>>>

详情请咨询在线客服

客服热线:023-66090381

ftutor

hive query注意点

1.不支持in 后面为子查询

...

where

field in (select field ...)

此处可以使用join进行代替。


2. 如果一个查询语句存在嵌套,那么最外层的子查询必须指定名称


select *

from

(

query1

...

) n


3.考虑将count( distinct field..)与 group by同时使用,在join的时候可能会引入大量冗余数据,通过distinct 某一、多个字段能够达到去重的目的。


4.对表的属性要有足够的理解,比如一张日志表,可能每天要插入几亿条记录,此时在hive中及时取一个比较短的时...

1.不支持in 后面为子查询

...

where

field in (select field ...)

此处可以使用join进行代替。


2. 如果一个查询语句存在嵌套,那么最外层的子查询必须指定名称


select *

from

(

query1

...

) n


3.考虑将count( distinct field..)与 group by同时使用,在join的时候可能会引入大量冗余数据,通过distinct 某一、多个字段能够达到去重的目的。


4.对表的属性要有足够的理解,比如一张日志表,可能每天要插入几亿条记录,此时在hive中及时取一个比较短的时间范围的日志,可能都会消耗很多map reduce,如果将这样的表互相进行join,数据量会是特别庞大,执行效率很低。


5. 时刻记住拉链表、全量表、增量表、快照表的含义, 重点是要注意partition 字段的使用。


6. left join 不能够被正确解析,需要为left outer join。


7.了解数据的性质,在group by 的时候,group by一个字段可能和group by多个字段得出的结果一致。


8. 最重要的一点是拿到数据后要首先进行初步的审查、看看是否符合逻辑,这样能够找到很多潜在的问题,

后期数据处理同样重要,熟练使用excel对数据进行处理。

数控小J

备份恢复、多租户,样样都不能少 -- 谈谈BigInsights企业管理模块的作用

作为企业级大数据平台,各厂商在集成开源技术的同时,也会在其基础之上发展各种针对性的技术,满足企业各方面的需求。下面我们就简要给大家介绍IBM在BigInsights大数据平台中,针对企业的备份恢复、多租户等需求所进行的一系列扩展。

文件系统的扩展(Spectrum Scale)

说到文件系统的扩展,肯定很对人会有这样的疑问:“什么?Hadoop的基础之一就是HDFS,企业级大数据平台会把这个基础也改了吗?”。自然HDFS作为Hadoop中的基础模块,其重要性不言自明。然而作为开源的组件,在企业级应用中很难达到企业及应用的要求,例如数据备份和数据加密,直到Hadoop2.6出现之后,HDFS...

作为企业级大数据平台,各厂商在集成开源技术的同时,也会在其基础之上发展各种针对性的技术,满足企业各方面的需求。下面我们就简要给大家介绍IBM在BigInsights大数据平台中,针对企业的备份恢复、多租户等需求所进行的一系列扩展。

文件系统的扩展(Spectrum Scale)

说到文件系统的扩展,肯定很对人会有这样的疑问:“什么?Hadoop的基础之一就是HDFS,企业级大数据平台会把这个基础也改了吗?”。自然HDFS作为Hadoop中的基础模块,其重要性不言自明。然而作为开源的组件,在企业级应用中很难达到企业及应用的要求,例如数据备份和数据加密,直到Hadoop2.6出现之后,HDFS中才开始正式加入数据加密模块并且还在不断完善中。其实,现行各种不同的文件系统都具有各自的特色,适用于不同的企业应用场景,如ClusterFS就是Mac系统中使用的文件系统,具有良好的数据压缩特性。

从上表可看出,除了IBM,其他业界主流的大数据厂商也在企业级大数据产品中使用了扩展自HDFS的文件系统,如MapR扩展文件系统可提供全读写操作等。IBM在BigInsights中,在HDFS基础之上集成了来自于GPFS的各项成熟技术,使得大数据平台能满足更多企业级需求,其主要特点举例如下:

1. Hadoop兼容:

BigInsigths扩展文件系统由于实现了HDFS文件系统的全部接口,对于Hadoop生态圈中的所有其他组件可以实现完全兼容,这意味着不管是Hive还是HBASE等,所有对HDFS有依赖的组件都可以无缝运行在BigInsights扩展文件系统之上。

2. 全POSIX文件接口:

POSIX(PortableOperating System Interface)是Linux/UNIX广泛使用的文件系统接口,BigInsights扩展文件系统在Hadoop之上完全实现了POSIX接口,可以比HDFS实现更多、更便捷的功能,如下面例子所示。

实现跨文件系统的文件拷贝,不用选择麻烦的参数,提高了操作便捷程度:

移动文件时,可以使用相对路径,缩短了命令的长度,更加简洁方便了:

还可以使用系统工具,使得处理文件更方便了:

3. 数据备份:

很多企业客户,很重视数据的备份和恢复需求,而HDFS默认的备份方式是通过dstcp将文件备份到另外一个HDFS中。这意味着很多企业客户中现有的各种备份策略、备份设备没有办法发挥作用,在成本、管理各方面都带来很大的挑战。而BigInsights扩展之后的文件系统,可支持各种传统的备份方式,包括把数据备份到磁带设备等:

资源调度的扩展

Hadoop 2.X之后的版本中,Yarn的使用为Hadoop的资源管理、任务调度能力带来飞速提升。然而开源社区中自带的几种调度方式FIFO、Fair(公平调度)、Capacity(资源能力调度)有较大局限使用场景有限,如都不支持基于时间控制的调度策略,FIFO和Capacity不支持任务抢占等等。

BigInsights中扩展的调度器在这方面也是进行了有效的扩展。

我们来假设这样一个应用场景:

某企业经过巨大的人力和物力的投入,搭建了一套大数据平台,并希望同一个平台可以同时承载多个部门的服务,实现多工作负载并可以根据需要灵活调整资源配置(即多租户需求)。对平台提出的要求是:在正常工作日时间段,平台优先保证业务部门的在线数据分析任务,而在非工作日时间段,例如周末、节假日等,可以全力支持后台的批处理任务,以保证在指定时间窗口内完成批量任务;然而在有特殊业务要求时,如针对审计进行数据核查等,还需要动态调整批任务的资源占用参数,优先完成数据核查任务。

这样的场景使用开源HDFS中的默认调度器是很难实现的,原因是HDFS不支持动态调整资源调度策略,任何资源调度策略的更改都必须后台修改参数然后重启,这会带来业务中断并且无法通过自动调整的方式完成。而BigInsights扩展调度器可以很好的支持这样的应用场景,能满足多用户、混合负载时资源调度的动态调整。

本文中我们简单对BigInsights企业级管理模块的功能进行简要介绍,如果您想了解针对企业级应用场景BigInsights还做了哪些细致的扩展,请访问下面链接:

http://bigdata.evget.com/product/385.html

更多大数据与分析相关行业资讯、解决方案、案例、教程等请点击查看>>>

详情请咨询在线客服

客服热线:023-66090381

硅地硒道

如何检验数据是否服从正态分布

一、图示法

1、P-P图

以样本的累计频率作为横坐标,以安装正态分布计算的相应累计概率作为纵坐标,把样本值表现为直角坐标系中的散点。如果资料服从整体分布,则样本点应围绕第一象限的对角线分布。

2、Q-Q图

以样本的分位数作为横坐标,以按照正态分布计算的相应分位点作为纵坐标,把样本表现为指教坐标系的散点。如果资料服从正态分布,则样本点应该呈一条围绕第一象限对角线的直线。

以上两种方法以Q-Q图为佳,效率较高。

3、直方图

判断方法:是否以钟形分布,同时可以选择输出正态性曲线。

4、箱式图

判断方法:观测离群值和中位数。

5、茎叶图

类似与直方图...

一、图示法

1、P-P图

以样本的累计频率作为横坐标,以安装正态分布计算的相应累计概率作为纵坐标,把样本值表现为直角坐标系中的散点。如果资料服从整体分布,则样本点应围绕第一象限的对角线分布。

2、Q-Q图

以样本的分位数作为横坐标,以按照正态分布计算的相应分位点作为纵坐标,把样本表现为指教坐标系的散点。如果资料服从正态分布,则样本点应该呈一条围绕第一象限对角线的直线。

以上两种方法以Q-Q图为佳,效率较高。

3、直方图

判断方法:是否以钟形分布,同时可以选择输出正态性曲线。

4、箱式图

判断方法:观测离群值和中位数。

5、茎叶图

类似与直方图,但实质不同。

二、计算法

1、偏度系数(Skewness)和峰度系数(Kurtosis)

计算公式:

如何检验数据是否服从正态分布
g1表示偏度,g2表示峰度,通过计算g1g2及其标准误σg1σg2然后作U检验。两种检验同时得出U0.05=1.96,即p>0.05的结论时,才可以认为该组资料服从正态分布。由公式可见,部分文献中所说的“偏度和峰度都接近0……可以认为……近似服从正态分布”并不严谨。

2、非参数检验方法

非参数检验方法包括Kolmogorov-Smirnov检验(D检验)和Shapiro- Wilk (W 检验)。

SAS中规定:当样本含量n 2000时,结果以Shapiro – Wilk(W 检验)为准,当样本含量n >2000 时,结果以Kolmogorov – Smirnov(D 检验)为准。

SPSS中则这样规定:(1)如果指定的是非整数权重,则在加权样本大小位于3和50之间时,计算 Shapiro-Wilk 统计量。对于无权重或整数权重,在加权样本大小位于3 和 5000 之间时,计算该统计量。由此可见,部分SPSS教材里面关于“Shapiro – Wilk适用于样本量3-50之间的数据”的说法是在是理解片面,误人子弟。(2)单样本 Kolmogorov-Smirnov 检验可用于检验变量(例如income)是否为正态分布。

对于此两种检验,如果P值大于0.05,表明资料服从正态分布。

三、SPSS操作示例

SPSS中有很多操作可以进行正态检验,在此只介绍最主要和最全面最方便的操作:

1、工具栏--分析—描述性统计—探索性


2、选择要分析的变量,选入因变量框内,然后点选图表,设置输出茎叶图和直方图,选择输出正态性检验图表,注意显示(Display)要选择双项(Both)。


3、Output结果

1Descriptives描述中有峰度系数和偏度系数,根据上述判断标准,数据不符合正态分布。

Sk=0Ku=0时,分布呈正态,Sk>0时,分布呈正偏态,Sk<0时,分布呈负偏态,时,Ku>0曲线比较陡峭,Ku<0时曲线比较平坦。由此可判断本数据分布为正偏态(朝左偏),较陡峭。


2Tests of NormalityD检验和W检验均显示数据不服从正态分布,当然在此,数据样本量为1000,应以W检验为准。


3直方图

直方图验证了上述检验结果。


4此外还有茎叶图、P-P图、Q-Q图、箱式图等输出结果,不再赘述。结果同样验证数据不符合正态分布。

188808881

皮尔逊相关系数(Pearson Correlation Coefficient)

以上三个公式都是Pearson相关系数计算公式。

 

一个具体的计算的例子:
X Y
1 2
2 5
3 6


而利用matlab计算:函数 corrcoef

例如:

help corrcoef

x = randn(30,4); % Uncorrelated data
x(:,4) = sum(x,2); % Introduce correlation.
[r,p] = corrcoef(x) % Compute sample correlation and p-values.
[i,j] = find(p<0.05); % Find significant correlations...

皮尔逊相关系数(Pearson Correlation Coefficient) - 188808881 - 伟大的事业,属于伟大的人民

以上三个公式都是Pearson相关系数计算公式。

 

一个具体的计算的例子:
X Y
1 2
2 5
3 6

皮尔逊相关系数(Pearson Correlation Coefficient) - 188808881 - 伟大的事业,属于伟大的人民

而利用matlab计算:函数 corrcoef

例如:

help corrcoef

x = randn(30,4); % Uncorrelated data
x(:,4) = sum(x,2); % Introduce correlation.
[r,p] = corrcoef(x) % Compute sample correlation and p-values.
[i,j] = find(p<0.05); % Find significant correlations.
[i,j] % Display their (row,col) indices.

r =
1.0000 -0.3566 0.1929 0.3457
-0.3566 1.0000 -0.1429 0.4461
0.1929 -0.1429 1.0000 0.5183
0.3457 0.4461 0.5183 1.0000

p =
1.0000 0.0531 0.3072 0.0613
0.0531 1.0000 0.4511 0.0135
0.3072 0.4511 1.0000 0.0033
0.0613 0.0135 0.0033 1.0000

ans =
4 2
4 3
2 4

3 4

r(i,j)就表示x(:,i)和x(:,j)的相关系数.

相关系数r的值介于–1与+1之间,即–1≤r≤+1。其性质如下:

1.当r>0时,表示两变量正相关,r<0时,两变量为负相关。
2.当|r|=1时,表示两变量为完全线性相关,即为函数关系。
3.当r=0时,表示两变量间无线性相关关系。
4.当0<|r|<1时,表示两变量存在一定程度的线性相关。且|r|越接近1,两变量间线性关系越密切;|r|越接近于0,表示两变量的线性相关越弱。
一般可按三级划分:|r|<0.4为低度线性相关;0.4≤|r|<0.7为显著性相关;0.7≤|r|<1为高度线性相关。


 
硅地硒道

处理不完备数据集的方法

 处理不完备数据集的方法主要有以下三大类:

(一)删除元组

      也就是将存在遗漏信息属性值的对象(元组,记录)删除,从而得到一个完备的信息表。这种方法简单易行,在对象有多个属性缺失值、被删除的含缺失值的对象与信息表中的数据量相比非常小的情况下是非常有效的,类标号(假设是分类任务)缺少时通常使用。然而,这种方法却有很大的局限性。它是以减少历史数据来换取信息的完备,会造成资源的大量浪费,丢弃了大量隐藏在这些对象中的信息。在信息表中本来包含的对象很少的情况下,删除少量对象就足以严重影响到信息表信息的客观性和结果的正确性;...

 处理不完备数据集的方法主要有以下三大类:

(一)删除元组

      也就是将存在遗漏信息属性值的对象(元组,记录)删除,从而得到一个完备的信息表。这种方法简单易行,在对象有多个属性缺失值、被删除的含缺失值的对象与信息表中的数据量相比非常小的情况下是非常有效的,类标号(假设是分类任务)缺少时通常使用。然而,这种方法却有很大的局限性。它是以减少历史数据来换取信息的完备,会造成资源的大量浪费,丢弃了大量隐藏在这些对象中的信息。在信息表中本来包含的对象很少的情况下,删除少量对象就足以严重影响到信息表信息的客观性和结果的正确性;当每个属性空值的百分比变化很大时,它的性能非常差。因此,当遗漏数据所占比例较大,特别当遗漏数据非随机分布时,这种方法可能导致数据发生偏离,从而引出错误的结论。

(二)数据补齐

      这类方法是用一定的值去填充空值,从而使信息表完备化。通常基于统计学原理,根据决策表中其余对象取值的分布情况来对一个空值进行填充,譬如用其余属性的平均值来进行补充等。数据挖掘中常用的有以下几种补齐方法:

      (1)人工填写(filling manually)

由于最了解数据的还是用户自己,因此这个方法产生数据偏离最小,可能是填充效果最好的一种。然而一般来说,该方法很费时,当数据规模很大、空值很多的时候,该方法是不可行的。

      (2)特殊值填充(Treating Missing Attribute values as Special values)将空值作为一种特殊的属性值来处理,它不同于其他的任何属性值。如所有的空值都用“unknown”填充。这样将形成另一个有趣的概念,可能导致严重的数据偏离,一般不推荐使用。

     (3)平均值填充(Mean/Mode Completer)

      将信息表中的属性分为数值属性和非数值属性来分别进行处理。如果空值是数值型的,就根据该属性在其他所有对象的取值的平均值来填充该缺失的属性值;如果空值是非数值型的,就根据统计学中的众数原理,用该属性在其他所有对象的取值次数最多的值(即出现频率最高的值)来补齐该缺失的属性值。另外有一种与其相似的方法叫条件平均值填充法(Conditional MeanCompleter)。在该方法中,缺失属性值的补齐同样是靠该属性在其他对象中的取值求平均得到,但不同的是用于求平均的值并不是从信息表所有对象中取,而是从与该对象具有相同决策属性值的对象中取得。这两种数据的补齐方法,其基本的出发点都是一样的,以最大概率可能的取值来补充缺失的属性值,只是在具体方法上有一点不同。与其他方法相比,它是用现存数据的多数信息来推测缺失值。

(4)热卡填充(Hot deck imputation,或就近补齐)

      对于一个包含空值的对象,热卡填充法在完整数据中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。该方法概念上很简单,且利用了数据间的关系来进行空值估计。这个方法的缺点在于难以定义相似标准,主观因素较多。

(5)K最近距离邻法(K-means clustering)

      先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。

(6)使用所有可能的值填充(Assigning All Possible values of the Attribute)

      这种方法是用空缺属性值的所有可能的属性取值来填充,能够得到较好的补齐效果。但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大,可能的测试方案很多。另有一种方法,填补遗漏属性值的原则是一样的,不同的只是从决策相同的对象中尝试所有的属性值的可能情况,而不是根据信息表中所有对象进行尝试,这样能够在一定程度上减小原方法的代价。

(7)组合完整化方法(Combinatorial Completer)

      这种方法是用空缺属性值的所有可能的属性取值来试,并从最终属性的约简结果中选择最好的一个作为填补的属性值。这是以约简为目的的数据补齐方法,能够得到好的约简结果;但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大。另一种称为条件组合完整化方法(Conditional Combinatorial Complete),填补遗漏属性值的原则是一样的,不同的只是从决策相同的对象中尝试所有的属性值的可能情况,而不是根据信息表中所有对象进行尝试。条件组合完整化方法能够在一定程度上减小组合完整化方法的代价。在信息表包含不完整数据较多的情况下,可能的测试方案将巨增。

(8)回归(Regression)

      基于完整的数据集,建立回归方程(模型)。对于包含空值的对象,将已知属性值代入方程来估计未知属性值,以此估计值来进行填充。当变量不是线性相关或预测变量高度相关时会导致有偏差的估计。

(9)期望值最大化方法(Expectation maximization,EM)

      EM算法是一种在不完全数据情况下计算极大似然估计或者后验分布的迭代算法[43]。在每一迭代循环过程中交替执行两个步骤:E步(Excepctaion step,期望步),在给定完全数据和前一次迭代所得到的参数估计的情况下计算完全数据对应的对数似然函数的条件期望;M步(Maximzation step,极大化步),用极大化对数似然函数以确定参数的值,并用于下步的迭代。算法在E步和M步之间不断迭代直至收敛,即两次迭代之间的参数变化小于一个预先给定的阈值时结束。该方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。

(10)多重填补(Multiple Imputation,MI)

      多重填补方法分为三个步骤:①为每个空值产生一套可能的填补值,这些值反映了无响应模型的不确定性;每个值都被用来填补数据集中的缺失值,产生若干个完整数据集合。②每个填补数据集合都用针对完整数据集的统计方法进行统计分析。③对来自各个填补数据集的结果进行综合,产生最终的统计推断,这一推断考虑到了由于数据填补而产生的不确定性。该方法将空缺值视为随机样本,这样计算出来的统计推断可能受到空缺值的不确定性的影响。该方法的计算也很复杂。

(11)C4.5方法

      通过寻找属性间的关系来对遗失值填充。它寻找之间具有最大相关性的两个属性,其中没有遗失值的一个称为代理属性,另一个称为原始属性,用代理属性决定原始属性中的遗失值。这种基于规则归纳的方法只能处理基数较小的名词型属性。

      就几种基于统计的方法而言,删除元组法和平均值法差于hot deck、EM和MI;回归是比较好的一种方法,但仍比不上hotdeck和EM;EM缺少MI包含的不确定成分。值得注意的是,这些方法直接处理的是模型参数的估计而不是空缺值预测本身。它们合适于处理无监督学习的问题,而对有监督学习来说,情况就不尽相同了。譬如,你可以删除包含空值的对象用完整的数据集来进行训练,但预测时你却不能忽略包含空值的对象。另外,C4.5和使用所有可能的值填充方法也有较好的补齐效果,人工填写和特殊值填充则是一般不推荐使用的。

      补齐处理只是将未知值补以我们的主观估计值,不一定完全符合客观事实,在对不完备信息进行补齐处理的同时,我们或多或少地改变了原始的信息系统。而且,对空值不正确的填充往往将新的噪声引入数据中,使挖掘任务产生错误的结果。因此,在许多情况下,我们还是希望在保持原始信息不发生变化的前提下对信息系统进行处理。这就是第三种方法:

(三)不处理

      直接在包含空值的数据上进行数据挖掘。这类方法包括贝叶斯网络和人工神经网络等。 贝叶斯网络是用来表示变量间连接概率的图形模式,它提供了一种自然的表示因果信息的方法,用来发现数据间的潜在关系。在这个网络中,用节点表示变量,有向边表示变量间的依赖关系。贝叶斯网络仅适合于对领域知识具有一定了解的情况,至少对变量间的依赖关系较清楚的情况。否则直接从数据中学习贝叶斯网的结构不但复杂性较高(随着变量的增加,指数级增加),网络维护代价昂贵,而且它的估计参数较多,为系统带来了高方差,影响了它的预测精度。当在任何一个对象中的缺失值数量很大时,存在指数爆炸的危险。

      人工神经网络可以有效的对付空值,但人工神经网络在这方面的研究还有待进一步深入展开。人工神经网络方法在数据挖掘应用中的局限性,本文在2.1.5节中已经进行了阐述,这里就不再介绍了。

总结:

      大多数数据挖掘系统都是在数据挖掘之前的数据预处理阶段采用第一、第二类方法来对空缺数据进行处理。并不存在一种处理空值的方法可以适合于任何问题。无论哪种方式填充,都无法避免主观因素对原系统的影响,并且在空值过多的情形下将系统完备化是不可行的。从理论上来说,贝叶斯考虑了一切,但是只有当数据集较小或满足某些条件(如多元正态分布)时完全贝叶斯分析才是可行的。而现阶段人工神经网络方法在数据挖掘中的应用仍很有限。值得一提的是,采用不精确信息处理数据的不完备性已得到了广泛的研究。不完备数据的表达方法所依据的理论主要有可信度理论、概率论、模糊集合论、可能性理论,D-S的证据理论等


以上为转载

188808881

拉依达准则(3σ准则)

设对被测量进行等精度测量,独立得到x1,x2...,xn,算出其算术平均值x及剩余误差vi=xi-x(i=1,2,...,n),并按贝塞尔公式算出标准误差σ,若某个测量值xb的剩余误差vb(1<=b<=n),满足下式

|vb|=|xb-x|>3σ

则认为xb是含有粗大误差值的坏值,应予剔除。

在整理试验数据时,往往会遇到这样的情况,即在一组试验数据里,发现少数几个偏差特别大的可疑数据,这类数据称为Outlier或Exceptional Data,他们往往是由于过失误差引起。

对于可疑数据的取舍要慎重。在试验进行中时,若发现异常数据,应立即停止试验,分析原因并及时纠正错

设对被测量进行等精度测量,独立得到x1,x2...,xn,算出其算术平均值x及剩余误差vi=xi-x(i=1,2,...,n),并按贝塞尔公式算出标准误差σ,若某个测量值xb的剩余误差vb(1<=b<=n),满足下式

|vb|=|xb-x|>3σ

则认为xb是含有粗大误差值的坏值,应予剔除。

在整理试验数据时,往往会遇到这样的情况,即在一组试验数据里,发现少数几个偏差特别大的可疑数据,这类数据称为Outlier或Exceptional Data,他们往往是由于过失误差引起。

对于可疑数据的取舍要慎重。在试验进行中时,若发现异常数据,应立即停止试验,分析原因并及时纠正错误;当为试验结束后时,应先找原因,在对数据进行取舍。如发现生产(施工)、试验过程中,有可疑的变异时,该测量值则应予舍弃。


这类数据的不能清楚地判定原因时,可以借助一些统计方法进行验证处理,方法很多,

如常用的

1."拉依达准则"和"格拉布斯准则",还有如

2.狄克逊准则,

3.肖维勒准则、

4.t检验法,

5.F检验法等。

这些方法,都有各自的特点,例如,拉依达准则不能检验样本量较小(显著性水平为0.1时,n必须大于10)的情况,格拉布斯准则则可以检验较少的数据。在国际上,常推荐格拉布斯准则和狄克逊准则。


但对于异常数据一定要慎重,不能任意的抛弃和修改。往往通过对异常数据的观察,可以发现引起系统误差的原因,进而改进过程和试验。

Dream Of Flea

我有一个MR程序会生成N列数据,然后其中一列是日期,而我需要把输出按日期分到不同的文件上。这个问题可以在MR后续加入自己扩展的OutputFormat来解决,在扩展代码中可以得到最终输出的数据,然后解析里面的日期信息,把日期拼接到目标输出目录上就可以了。

然而这个方法的坏处就是必须要写java代码,写好,编译,然后在启动MR的时候指定用这个扩展代码包,虽说不复杂,但要维护的依赖就多了点。

这两天既学了pig也学了hive,想着能不能解决这个问题,如果可以的话,直接在脚本里面加逻辑,比起分散代码和脚本要好。但经过一系列尝试和咨询,结果发现是不可以的。

我有一个MR程序会生成N列数据,然后其中一列是日期,而我需要把输出按日期分到不同的文件上。这个问题可以在MR后续加入自己扩展的OutputFormat来解决,在扩展代码中可以得到最终输出的数据,然后解析里面的日期信息,把日期拼接到目标输出目录上就可以了。

然而这个方法的坏处就是必须要写java代码,写好,编译,然后在启动MR的时候指定用这个扩展代码包,虽说不复杂,但要维护的依赖就多了点。

这两天既学了pig也学了hive,想着能不能解决这个问题,如果可以的话,直接在脚本里面加逻辑,比起分散代码和脚本要好。但经过一系列尝试和咨询,结果发现是不可以的。

研数科技
ljp1981-2004
m15756321504_1

我们该如何解决企业在数据采集中遇到的难题


       摘要:搜索是任何有效的网站或应用程序的关键组件,将用户连接到他们做出决策所需的数据,无论是查找文档,进行研究还是完成在线购买。现代搜索引擎在过去5年中发生了显着的变化,其中包括机器学习和人工智能技术在文档和查询处理的各个方面,以及用户分析和个性化。这些技术需要大量高质量的培训和评估数据才能有效。


       在数据采集方面,由海归技术团队、知名学者、行业精英共同打造的专注于互联网和大数据领域研究与运用的高新技术企业--成都探码科技公司...


       摘要:搜索是任何有效的网站或应用程序的关键组件,将用户连接到他们做出决策所需的数据,无论是查找文档,进行研究还是完成在线购买。现代搜索引擎在过去5年中发生了显着的变化,其中包括机器学习和人工智能技术在文档和查询处理的各个方面,以及用户分析和个性化。这些技术需要大量高质量的培训和评估数据才能有效。


       在数据采集方面,由海归技术团队、知名学者、行业精英共同打造的专注于互联网和大数据领域研究与运用的高新技术企业--成都探码科技公司依托自研强大的大数据技术核心,致力于大数据产业生态链的构建,已在互联网、健康、农业、交通等产业都成功实现了产品运用。


文本数据采集


       探码科技CEO宋学江认为:在新的地理市场中,工作的开发技术要求专家必须能够收集语言数据以及特定于区域的数据。并且为了能够快速渗透新市场,许多公司以及企业都需要一个在各种环境以及各种领域中可以快速升级数据收集项目经验的合作伙伴。


       探码科技依托自研强大的大数据技术核心可以在客户指定的任何领域提供数据收集,例如商家信息,音乐标题,艺术家姓名,缩写和首字母缩略词,食品,运输,计算或地理位置。我们有能力从各种用户人口统计和领域收集各种各样的自然语言文本数据。然后,该数据可用于开发Web或应用程序用户界面,语音交互设备或自动电话系统的提示和语法规范,特定于域名的词典和专业词表。


图像和视频数据收集


       为了使您的基于机器学习的解决方案能够正确识别图像和视频,需要对这些特定数据类型进行足够的训练。虽然公共数据集可用,但通常它们不足以满足您的需求,也没有足够的量来有效地训练算法。


       只有通过与客户密切合作,才能量身开发定制化程序,以满足他们的特定需求,并可以快速招募大批参与者进行数据收集项目。我们可以满足参与者人口统计,背景视觉等多样性的各种要求,我们熟练的项目经理可以确保每个数据收集项目的质量结果。通过这些方法,收集高质量的数据,以提升您的解决方案的规模;收集数百万个高质量的数据样本,来确保您的产品满足全球客户的需求。


语音数据收集


       在自动语音识别系统中,客户需要高质量的语言数据,以确保系统能够在各种环境和环境中理解和响应人类语言。更需要大量的数据来有效地训练机器学习模型。


      利用端到端语音数据收集服务提供了效率和质量,即使是并行的多个大型收藏。


我们的服务包括

  • 电话

  • 嵌入式设备

  • 单/多扬声器

  • 迅速变化

  • 言语模式

  • 文本语料库等资源


作为标准系列的一部分,我们为您提供:

  • 详细的语言和文化研究

  • 脚本准备和本地化

  • 母语人群众多

  • 本地和远程语音录音

  • 收集数据的转录和注释

  • 质量保证和项目管理

  • 符合数据库内容的词典条目


本文转自探码科技官网:http://www.tanmer.com/bigdata/283

LOFTER

让兴趣,更有趣

简单随性的记录
丰富多彩的内容
让生活更加充实

下载移动端
关注最新消息