包含java熵值java代码的词条

求python 熵值法实现代码

一、基本原理

企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,成都创新互联公司面向各种领域:混凝土搅拌罐车网站设计营销型网站建设解决方案、网站设计等建站排名服务。


在信息论中,熵是对不确定性的一种度量。信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性越大,熵也越大。

根据熵的特性,可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响(权重)越大,其熵值越小。

二、熵值法步骤

1. 选取n个国家,m个指标,则为第i个国家的第j个指标的数值(i=1, 2…, n; j=1,2,…, m);

2. 指标的归一化处理:异质指标同质化

由于各项指标的计量单位并不统一,因此在用它们计算综合指标前,先要对它们进行标准化处理,即把指标的绝对值转化为相对值,并令,从而解决各项不同质指标值的同质化问题。而且,由于正向指标和负向指标数值代表的含义不同(正向指标数值越高越好,负向指标数值越低越好),因此,对于高低指标我们用不同的算法进行数据标准化处理。其具体方法如下:

正向指标:

负向指标:

则为第i个国家的第j个指标的数值(i=1, 2…, n; j=1, 2,…, m)。为了方便起见,归一化后的数据仍记为;

3. 计算第j项指标下第i个国家占该指标的比重:

4. 计算第j项指标的熵值:

其中. 满足;

5. 计算信息熵冗余度:

6. 计算各项指标的权值:

7. 计算各国家的综合得分:

[code]function [s,w]=shang(x)

% 函数shang.m, 实现用熵值法求各指标(列)的权重及各数据行的得分

% x为原始数据矩阵, 一行代表一个国家, 每列对应一个指标

% s返回各行得分, w返回各列权重

[n,m]=size(x); % n=23个国家, m=5个指标

%% 数据的归一化处理

% Matlab2010b,2011a,b版本都有bug,需如下处理. 其它版本直接用[X,ps]=mapminmax(x',0,1);即可

[X,ps]=mapminmax(x');

ps.ymin=0.002; % 归一化后的最小值

ps.ymax=0.996; % 归一化后的最大值

ps.yrange=ps.ymax-ps.ymin; % 归一化后的极差,若不调整该值, 则逆运算会出错

X=mapminmax(x',ps);

% mapminmax('reverse',xx,ps); % 反归一化, 回到原数据

X=X'; % X为归一化后的数据, 23行(国家), 5列(指标)

%% 计算第j个指标下,第i个记录占该指标的比重p(i,j)

for i=1:n

for j=1:m

p(i,j)=X(i,j)/sum(X(:,j));

end

end

%% 计算第j个指标的熵值e(j)

k=1/log(n);

for j=1:m

e(j)=-k*sum(p(:,j).*log(p(:,j)));

end

d=ones(1,m)-e; % 计算信息熵冗余度

w=d./sum(d); % 求权值w

s=w*p'; % 求综合得分[\code]

测试程序:

data.txt 数据如下:

114.6 1.1 0.71 85.0 346

55.3 0.96 0.4 69.0 300

132.4 0.97 0.54 73.0 410

152.1 1.04 0.49 77.0 433

103.5 0.96 0.66 67.0 385

81.0 1.08 0.54 96.0 336

179.3 0.88 0.59 89.0 446

29.8 0.83 0.49 120.0 289

92.7 1.15 0.44 154.0 300

248.6 0.79 0.5 147.0 483

115.0 0.74 0.65 252.0 453

64.9 0.59 0.5 167.0 402

163.6 0.85 0.58 220.0 495

95.7 1.02 0.48 160.0 384

139.5 0.70 0.59 217.0 478

89.9 0.96 0.39 105.0 314

76.7 0.95 0.51 162.0 341

121.8 0.83 0.60 140.0 401

42.1 1.08 0.47 110.0 326

78.5 0.89 0.44 94.0 280

77.8 1.19 0.57 91.0 364

90.0 0.95 0.43 89.0 301

100.6 0.82 0.59 83.0 456

执行代码:

[code]x=load('data.txt'); % 读入数据

[s,w]=shang(x)[\code]

运行结果:

s =

Columns 1 through 9

0.0431 0.0103 0.0371 0.0404 0.0369 0.0322 0.0507 0.0229 0.0397

Columns 10 through 18

0.0693 0.0878 0.0466 0.0860 0.0503 0.0800 0.0234 0.0456 0.0536

Columns 19 through 23

0.0272 0.0181 0.0364 0.0202 0.0420

w =

0.1660 0.0981 0.1757 0.3348 0.2254

linux程序影响java程序连接数据库速度

1、random生成的随机值不够,大致就是连接oracle数据库时需要从随机熵池中取随机数,而这熵池就是/dev/random这个文件产生的。而这个文件是阻塞产生熵值的,会导致连接阻塞。

2、未在/etc/hosts文件中添加本机主机名和IP的映射,且没有dns域名解析有可能会导致获取连接的时间太久。

熵值法用excel计算的程序,谁有请发给我一份,不胜感激。在线等

程序如下,希望你可以看懂并选为满意答案,我的知道上没财富值了,谢谢!

Dimzbdf0(), zbdfl(), min_zb(), max_zb(), zbh(), p0(), pl(), pclogp(), h(), w(),sum_h As Single

Dim temp, fw, df As Variant

Dim SZfCommandBar As CommandBar

Dim SZfCommandBarButton As CommandBarButton

Public n, m

Private Sub Workbook_BeforeClose(CanceI As Boolean)

Application.CommandBars("熵值法").Delete

End Sub

Private SubWorkbook_open()

On Error ResumeNext

Application.CommandBars("熵值法").Delete

Set SZfCommandBar =Application.CommandBars.Add("熵值法")

WithSZfCommandBar.Controls

SetSZfCommandBarButton = .Add(msoControlButton)

With szfCommand.BarButton

.Style =msoButtonlconAndCaption

.Caption = "熵值法"

.OnAction ="S2F"

End With

End With

SZfCommandBar.ViSmle= True

End Sub

Private Sub S2F()

On Error ResumeNext

fw =InputBox("请输入数据在EXCEL中的起始结束位置" vbCrLf vbCrLf " ※一定要正确输入,否则按确定后将会出错! ", "输入范围", ActiveWindow.RangeSelection.AddressLocal(0, 0))

If Len(Trim(fw)) =0 Then

MsgBox "没有输入正确范围,请重新执行程序输入正确的数据范围!",vbOKOnly, "没有输入"

Else

n =Range(fw).Rows.Count

m =Range(fw).Coluruns.Count

ReDim zbdf0(n, m),zbdfl(n, m), min_zb(m), max_zb(m), zbh(m), pO(n, m), pl(n, m), pclogp(n, m),h(m), w(m)

For i = l To n

For J = 1 To m

zbdf0(i, J) =ActiveSheet.Range(fw).Cells(i, J)

Next

Next

For J = 1 To m

min_zb(J) =zbdfO(1, J)

max_zb(J) =zbdfO(1, J)

zbh(J) = 0

For i = l To n

If min_zb(J) zbdfO(i, J) Then

min_zb(J) =zbdf0(i, J)

End If

If max_zb(J) zbdf0(i, J) Then

max_zb(J) =zbdf0(i, J)

End If

zbh(J) = zbh(J) +zbdf0(i, J)

Next

Next

For J = 1 To m

zbh(J) = 0

For i = 1 To n

zbdfl(i, J) =IIf((min_zb(J)) = 0, zbdf0(i, J), (zbdm(i, J) - mm_zb(J)) / (max_zb(J) -mim_zb(J)))

zbh(J) = zbh(J) +zbdfl(i, J)

Next

Next

sum_h = 0

For J = 1 To m

h(J) = 0

For i = l To n

p0(i, J) = zbdfl(i,J) / zbh(J)

pl(i, J) = 10000 *pO(i, J) + 1

pclogp(i, J) =pl(i, J) * ApplicaonWorksheetFunction.Logl0(pl(i, J))

h(J) = h(J) +pelogp(i, J)

Next

sum_h = sum_h +h(J)

Next

For J = 1 To m

w(J) = h(J) / sum_h

Next

df =Applicatin.WorksheetFunction.MMun(pclogp,Application.WorksheetFunction.Transpose(w))

Application.Worksheets("熵值法输出").Delete

Worksheets.Addafter:=Sheets(Application.Worksheets.Count)

Appliction.ActiveSheet.Name= "熵值法输出"

Columns("B:B").ColumnWidth= 15

[B1] = "熵值法得分"

For i = 2 To n + 1

Cells(i, 2).Value =df(i - 1, 1)

Next

[C1] = "熵值法排名"

Range("C2:C" (n + l)).FormulaArray = "=RANK(RC[-1 ]:R[" (n - 1) "l]C[-1 ],R2C2:R" n + l "C21)"

End If

End Sub

「开源」比 MyBatis 效率快 100 倍的条件检索引擎,天生支持联表

比 MyBatis 效率快 100 倍的条件检索引擎,天生支持联表,使一行代码实现复杂列表检索成为可能!

使用Apache-2.0开源协议

你的产品给你画了以上一张图,还附带了一些要求:

这时候,后台接口该怎么写???使用 Mybatis 或 Hibernate 写 100 行代码是不是还打不住?而使用 Bean Searcher,只需 一行代码 便可实现上述要求!!!

使用 Bean Searcher 可以极大节省后端的复杂列表检索接口的开发时间

可以和任意 Java Web 框架集成,如:SpringBoot、Grails、Jfinal 等

面向接口设计,用户可自定义扩展 Bean Searcher 中的任何组件

约定优于配置,可省略注解,可复用原有域类,同时支持自定义注解

分库分表?在这里特别简单,告别分库分表带来的代码熵值增高问题

同一个实体类,可指定只 Select 其中的某些字段,或排除某些字段

支持添加多个参数过滤器,可自定义参数过滤规则

支持添加多个字段转换器,可自定义数据库字段到实体类字段的转换规则

支持添加多个 SQL 拦截器,可自定义 SQL 生成规则

虽然 增删改 是 hibernate 和 mybatis、data-jdbc 等等 ORM 的强项,但查询,特别是有 多条件 、 联表 、 分页 、 排序 的复杂的列表查询,却一直是它们的弱项。

传统的 ORM 很难用较少的代码实现一个复杂的列表检索,但 Bean Searcher 却在这方面下足了功夫,这些复杂的查询,几乎只用一行代码便可以解决。

后端需要写一个检索接口,而如果用传统的 ORM 来写,代码之复杂是可以想象的。

而 Bean Searcher 却可以:

首先,你有一个实体类:

然后你就可以用一行代码实现这个用户检索接口:

这一行代码实现了以下功能:

例如,该接口支持如下请求:

快速开发

使用 Bean Searcher 可以极大地节省后端的复杂列表检索接口的开发时间!

可以和任意 Java Web 框架集成,如:SpringBoot、Spring MVC、Grails、Jfinal 等等。

接着便可在 Controller 或 Service 里注入检索器:

然后可以使用 SearcherBuilder 构建一个检索器:

面向接口设计,用户可自定义扩展 Bean Searcher 中的任何组件!

比如你可以:

访问一飞开源:


名称栏目:包含java熵值java代码的词条
网站链接:http://pwwzsj.com/article/doiseoo.html