全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1628 5
2015-12-13
for(i in c(1:4,9:15,18,20:21,23))
{b[,i]=(b[,i]-min(b[,i]))/(max(b[,i])-min(b[,i]))}

for(i in c(5:8,16:17,19,22,24:25))
{b[,i]=(max(b[,i])-b[,i])/(max(b[,i])-min(b[,i]))}
b
for(i in 1:11){for(j in 1:25){
  if(b[i,j]==0){if(a[i,j]==max(a[,j])){b[i,j]=(a[i,j]-mean(a[,j])/sd(a[,j]))}
  else{b[i,j]=(mean(a[,j])-a[i,j])/sd(a[,j])}}
}}
请问熵值法首先对数据进行均值化处理,依然有负值,请问错在哪里?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-12-13 18:27:05
a和b分别是几行几列的矩阵。首先这样是没法定义矩阵的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-12-13 18:41:36
jiangbeilu 发表于 2015-12-13 18:27
a和b分别是几行几列的矩阵。首先这样是没法定义矩阵的
已经定义过了
a=as.matrix(data[,2:26])
b=as.matrix(data[,2:26])
a,b都是原始数据
想用标准化的非负值取代零值,不知错在哪里
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-12-13 22:21:58
hawaq 发表于 2015-12-13 18:41
已经定义过了
a=as.matrix(data[,2:26])
b=as.matrix(data[,2:26])
不介意的话,可以上传部分数据,可以实际操作一下。
你这样,其实也只告诉了a是25列的,但是没说是多少行的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-12-14 02:19:32
根据观察代码的结果,问题应该出在代码的最内层else。if判断a[i,j]是否为第j列的最大值,如果不是的话执行else,这时候a[i,j]虽然不是第j列的最大值,但是一定会有一些a[i,j]会大于第j列的平均值吧?也就是说,else里的mean(a[,j])-a[i,j]有可能小于0.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-12-14 10:38:33
mean(a[,j])-a[i,j]可能会是负的,最后吐槽下,你这代码风格10个人看了11个人都不愿意去改
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群