查看: 1709| 回复: 6
跳转到指定楼层
上一主题 下一主题
收起左侧

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

全局:

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

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是不是标准化后的结果
谢谢!








评分

参与人数 1大米 +1 收起 理由
小亩_0718 + 1 =-=

查看全部评分


上一篇:[Coursera] Cluster Analysis in Data Mining @Illinois week#1
下一篇:[Coursera] Cluster Analysis in Data Mining @Illinois week#2
🔗
 楼主| 五农 2015-5-3 15:48:45 | 只看该作者
全局:
浮点数好像没问题,但是结果有好多的1
肯定不会有这么多1的
但是也不知道这么标准化对不对
越想越糊涂,有没有大腿。。。
随便说两句也行啊
k姐统计好,能抽空看看嘛@小K  

点评

就是用sql写协方差矩阵...  发表于 2015-5-4 07:28
sorry 没看懂到底要问什么,这题好像跟统计没什么关系吧  发表于 2015-5-4 02:20
回复

使用道具 举报

🔗
 楼主| 五农 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()试一下?

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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