一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 602|回复: 6
收起左侧

【coursera】intro to data sci 关于sql浮点数

[复制链接] |试试Instant~ |关注本帖
五农 发表于 2015-5-3 14:10:03 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
本帖最后由 五农 于 2015-5-3 18:59 编辑

楼主之前报了这课 去年6月 ,可是突击GRE,就把这课当成self-paced 的了。
闲下来了又把这么课捡起来了

现在在做数据库的sql(assignment2)作业。问题是这样的:


有一个sparse matrix table :   frequency(docid,term,count)作业是计算相关性矩阵 DD'(转置不会打),数据是 https://github.com/uwescience/da ... ignment2/reuters.db
最后一问是在把D矩阵加一行docid=’q‘,一行有3个term 分别是washington,taxes,treasury

为了方便就把frequency加这一行create成一个view
  1. create view fre2 as
  2. SELECT * FROM frequency
  3. UNION
  4. SELECT 'q' as docid, 'washington' as term, 1 as count
  5. UNION
  6. SELECT 'q' as docid, 'taxes' as term, 1 as count
  7. UNION
  8. SELECT 'q' as docid, 'treasury' as term, 1 as count;
复制代码
然后只算q和矩阵D的相关性,就是三个词和所有其他docid行的相关性,这个楼主也做好了
  1. select a.docid,b.docid,sum(a.count*b.count)
  2. from fre2 a,fre2 b
  3. where a.term=b.term and a.docid='q'
  4. group by a.docid,b.docid;
复制代码
但是他说了这个是未标准化的,楼主想做标准化后的,同时还有考虑浮点数,所以楼主加了一个“/1.0
  1. select a.docid,b.docid,sum(a.count*b.count)*sum(a.count*b.count)/1.0/(sum(a.count*a.count)*sum(b.count*b.count))
  2. from fre2 a,fre2 b
  3. where a.term=b.term and a.docid='q'
  4. group by a.docid,b.docid;
复制代码
算是算出来了,不知道对不对,而且虽然结果中也有小数,但是1还是很多。感觉还是有未转化成浮点数的,
所以请大家具体分析一下,我这样些类型能全部转化对吗?
顺便看下第二个sql是不是标准化后的结果
谢谢!








 楼主| 五农 发表于 2015-5-3 15:48:45 | 显示全部楼层
浮点数好像没问题,但是结果有好多的1
肯定不会有这么多1的
但是也不知道这么标准化对不对
越想越糊涂,有没有大腿。。。
随便说两句也行啊
k姐统计好,能抽空看看嘛@小K  
回复 支持 反对

使用道具 举报

 楼主| 五农 发表于 2015-5-5 02:14:21 | 显示全部楼层
本帖最后由 五农 于 2015-5-5 02:16 编辑

发现错误了。
因为是稀疏矩阵,所以join后有些位置上的数就没有了比如2*2的矩阵,如果有一个0 那么join后就是3*3=9个record。(正常是4*4=16)少了7个。如果只是算非标准化的就没有关系,因为a*b没来就是零. 但是如果需要标准化,就不行,因为需要全部16个结果来计算向量的模,而我这样写实际有9个,模就算少了。一开始我以为标准化不需要那7个record(16-9=7),但是这7个中,只有一个是0*0=0,这个record加不加结果都一样;另外六个(2*(4-1))虽然是一个为零,但是另一个不为零,所以这六个record中不为零的项是要算进向量的模中的,但是由于是稀疏矩阵,只要含有零,这项就不存在,join后少了这六项,结果就 错了

不是join 是笛卡尔积

先写这么多,省着自己忘了,碎觉了。
回复 支持 反对

使用道具 举报

tensorrank 发表于 2015-8-23 12:50:17 | 显示全部楼层
用round()试一下?
回复 支持 反对

使用道具 举报

 楼主| 五农 发表于 2015-8-24 20:09:41 | 显示全部楼层
tensorrank 发表于 2015-8-23 12:50
用round()试一下?

不是函数的问题,是稀疏矩阵本能简单地这么相乘
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-5 21:15

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表