Coding the Matrix Week 1 The Vector Space作业
Coding the Matrix: Linear Algebra through Computer Science Applications
本周的作业较少,只有一个编程任务hw2.作业比较简单,如果大学学习过矩阵代数的话,基本上没有什么问题,不过要注意的一点是基2的Span的求法。
基2空间上,在所有基向量中取任意个数个,叠加组合就得到了Span。但是如何取任意个呢?下面给出几种方法。
一种方法是对于任意可能的个数,利用Python中的排列组合module生成对应于此个数的所有排列,即得到Span。感兴趣的话可以百度一下。这种方法概念较为清晰,但需要对Python的库较为了解。
第二种方法,利用了从n个元素中任选任意个的方法只有2^n个的排列组合知识。具体来说,就是对于任意从0到2^n-1的整数,使用bin()函数得到其二进制表示,对应位为1即代表选中此基向量。这种方法稍微Smart一些。但过程较为冗杂。
第三种,就是下面程序给出的方法,一行语句就可以完成运算,原理和上一种方法相同,就不再赘述。但要注意结果为0的情况下要单独考虑。
其他的向量运算都比较简单,最后几道判断是否为向量空间的问题,只需要牢记向量空间三特征(包含0,加减和向量乘法组合仍在空间内)就不会出错。
作业代码如下,模版中注释部分给出了验证范例。
# version code 761
# Please fill out this stencil and submit using the provided submission script. from vec import Vec
from GF2 import one ## Problem 1
def vec_select(veclist, k):
'''
>>> D = {'a','b','c'}
>>> v1 = Vec(D, {'a': 1})
>>> v2 = Vec(D, {'a': 0, 'b': 1})
>>> v3 = Vec(D, { 'b': 2})
>>> v4 = Vec(D, {'a': 10, 'b': 10})
>>> vec_select([v1, v2, v3, v4], 'a') == [Vec(D,{'b': 1}), Vec(D,{'b': 2})]
True
'''
return [x for x in veclist if x[k]==0] def vec_sum(veclist, D):
'''
>>> D = {'a','b','c'}
>>> v1 = Vec(D, {'a': 1})
>>> v2 = Vec(D, {'a': 0, 'b': 1})
>>> v3 = Vec(D, { 'b': 2})
>>> v4 = Vec(D, {'a': 10, 'b': 10})
>>> vec_sum([v1, v2, v3, v4], D) == Vec(D, {'b': 13, 'a': 11})
True
'''
return sum(veclist) if len(veclist)!=0 else Vec(D,{}) def vec_select_sum(veclist, k, D):
'''
>>> D = {'a','b','c'}
>>> v1 = Vec(D, {'a': 1})
>>> v2 = Vec(D, {'a': 0, 'b': 1})
>>> v3 = Vec(D, { 'b': 2})
>>> v4 = Vec(D, {'a': 10, 'b': 10})
>>> vec_select_sum([v1, v2, v3, v4], 'a', D) == Vec(D, {'b': 3})
True
'''
return vec_sum(vec_select(veclist,k),D) ## Problem 2
def scale_vecs(vecdict):
'''
>>> v1 = Vec({1,2,3}, {2: 9})
>>> v2 = Vec({1,2,4}, {1: 1, 2: 2, 4: 8})
>>> scale_vecs({3: v1, 5: v2}) == [Vec({1,2,3},{2: 3.0}), Vec({1,2,4},{1: 0.2, 2: 0.4, 4: 1.6})]
True
'''
return [y/x for (x,y) in vecdict.items()] ## Problem 3
def GF2_span(D, L):
'''
>>> from GF2 import one
>>> D = {'a', 'b', 'c'}
>>> L = [Vec(D, {'a': one, 'c': one}), Vec(D, {'b': one})]
>>> len(GF2_span(D, L))
4
>>> Vec(D, {}) in GF2_span(D, L)
True
>>> Vec(D, {'b': one}) in GF2_span(D, L)
True
>>> Vec(D, {'a':one, 'c':one}) in GF2_span(D, L)
True
>>> Vec(D, {x:one for x in D}) in GF2_span(D, L)
True
'''
if len(L)==0:return []
maxind=2**len(L)-1
res=[sum([L[j] for j in range(len(L)) if i//(2**j)%2]) for i in range(maxind+1)]
res.append(Vec(D,{}))
del res[0]
return res ## Problem 4
# Answer with a boolean, please. is_it_a_vector_space_1 = True
is_it_a_vector_space_2 = False ## Problem 5
is_it_a_vector_space_3 = True
is_it_a_vector_space_4 = False ## Problem 6 is_it_a_vector_space_5 = True
is_it_a_vector_space_6 = False
Coding the Matrix Week 1 The Vector Space作业的更多相关文章
- 【Python】Coding the Matrix:Week 5: Dimension Homework 5
这一周的作业,刚压线写完.Problem3 没有写,不想证明了.从Problem 9 开始一直到最后难度都挺大的,我是在论坛上看过了别人的讨论才写出来的,挣扎了很久. Problem 9在给定的基上分 ...
- pytorch --- word2vec 实现 --《Efficient Estimation of Word Representations in Vector Space》
论文来自Mikolov等人的<Efficient Estimation of Word Representations in Vector Space> 论文地址: 66666 论文介绍了 ...
- Coding the Matrix作业Python Lab及提交方法
Coding the Matrix: Linear Algebra through Computer Science Applications 这是一门用python实现矩阵运算的课,第一次作业就感觉 ...
- 向量空间模型(Vector Space Model)的理解
1. 问题描述 给你若干篇文档,找出这些文档中最相似的两篇文档? 相似性,可以用距离来衡量.而在数学上,可使用余弦来计算两个向量的距离. \[cos(\vec a, \vec b)=\frac {\v ...
- In abstract algebra, a congruence relation (or simply congruence) is an equivalence relation on an algebraic structure (such as a group, ring, or vector space) that is compatible with the structure in
https://en.wikipedia.org/wiki/Congruence_relation In abstract algebra, a congruence relation (or sim ...
- Solr相似度名词:VSM(Vector Space Model)向量空间模型
最近想学习下Lucene ,以前运行的Demo就感觉很神奇,什么原理呢,尤其是查找相似度最高的.最优的结果.索性就直接跳到这个问题看,很多资料都提到了VSM(Vector Space Model)即向 ...
- 转:Lucene之计算相似度模型VSM(Vector Space Model) : tf-idf与交叉熵关系,cos余弦相似度
原文:http://blog.csdn.net/zhangbinfly/article/details/7734118 最近想学习下Lucene ,以前运行的Demo就感觉很神奇,什么原理呢,尤其是查 ...
- ES搜索排序,文档相关度评分介绍——Vector Space Model
Vector Space Model The vector space model provides a way of comparing a multiterm query against a do ...
- 向量空间模型(Vector Space Model)
搜索结果排序是搜索引擎最核心的构成部分,很大程度上决定了搜索引擎的质量好坏.虽然搜索引擎在实际结果排序时考虑了上百个相关因子,但最重要的因素还是用户查询与网页内容的相关性.(ps:百度最臭名朝著的“竞 ...
随机推荐
- JS基础——数组总结
JS中数组被觉得是一种对象,慢慢的,怎么忽然感觉,JS中仅仅要能够独立出来的概念怎么都能够当成对象来解释呢?有点儿怀疑.继续学吧.先来总结一下JS中数组是怎样详细使用的. 一.创建 数组的创建在JS中 ...
- Ubuntu 14.04 LAMP搭建(Apache 2.47+MySQL 5.5+PHP5.5)
原文:Ubuntu LAMP搭建 为了数据库课程设计,只好自己搭一个数据库系统,采用LAMP方式. 一.安装 1.安装Apache sudo apt-get install apache2 Apach ...
- contentWindow,
a>contentWindow 兼容各个浏览器,可取得子窗口的 window 对象.b>contentDocument Firefox 支持,> ie8 的ie支持.可取得子窗口的 ...
- TortoiseGit安装与配置(转)
TortoiseGit 简称 tgit, 中文名海龟Git. 海龟Git只支持神器 Windows 系统, 有一个前辈海龟SVN, TortoiseSVN和TortoiseGit都是非常优秀的开源的版 ...
- UML对象图和包图
UML九已经介绍过的基本图,然后,我们再来看看对象图和包图. 一.对象图 谈到对象.我们不得不说一下对象.对象(Object)是对象类的实例(Instance),用于模型化特定的实体.对象是唯一的. ...
- hdu 4972 A simple dynamic programming problem(高效)
pid=4972" target="_blank" style="">题目链接:hdu 4972 A simple dynamic progra ...
- hdu1086(线段相交)
题目意思: 给出n个线段,推断这n条线段中,线段相交的对数. http://acm.hdu.edu.cn/showproblem.php?pid=1086 题目分析: 此题主要写出推断线段相交的函数, ...
- T4模板使用技巧
=============C#.Net 篇目录============== 示例代码:示例代码__你必须懂的T4模板:浅入深出.rar (一)什么是T4模板? T4,即4个T开头的英文字母组合:Tex ...
- 分享一下我的部分毕设内容:基于Windows Phone平台的污染源管理应用
原文:分享一下我的部分毕设内容:基于Windows Phone平台的污染源管理应用 毕业半年,又总结了一下之前的工作,发现很多知识不复习都忘记了.最近新闻总是报道北京的空气污染,各种雾霾,各种PM X ...
- js小记 function 的 length 属性
原文:js小记 function 的 length 属性 [1,2,3]., ,这个略懂js的都知道. 但是 eval.length,RegExp.length,"".toStr ...