用python进行形式概念分析
concepts的Python项目详细描述
concepts是formal concept analysis的简单python实现 (FCA)。
fca提供了一个数学模型来描述一组对象(例如king 亚瑟,罗宾爵士和圣杯)有一套属性(例如人类, 骑士,国王,神秘的)每件物品都有或没有。一个 名为formal context的表定义哪些对象具有给定的属性和 反之亦然,给定对象具有的属性。
链接
安装
这个包在python 2.7和3.5+下运行,使用pip安装:
$ pip install concepts
这也将安装来自pypi as的bitsets和graphviz包 必需的依赖项。
呈现晶格图取决于Graphviz software。确保它 dot可执行文件位于系统路径上。
快速启动
创建一个形式上下文定义哪个对象具有哪个属性,例如 一个简单的ascii艺术风格的交叉表,包含object行和property列 (或者加载cxt或csv文件):
>>>fromconceptsimportContext>>>c=Context.fromstring(''' ... |human|knight|king |mysterious| ... King Arthur| X | X | X | | ... Sir Robin | X | X | | | ... holy grail | | | | X | ... ''')>>>c# doctest: +ELLIPSIS<Contextobjectmapping3objectsto4properties[dae7402a]at0x...>
查询对象的公共属性或属性的公共对象。 (派生):
>>>c.intension(['King Arthur','Sir Robin'])('human','knight')>>>c.extension(['knight','mysterious'])()
获取对象或属性的最近匹配objects properties对。 (形式概念):
>>>c['Sir Robin','holy grail'](('King Arthur','Sir Robin','holy grail'),())>>>c['king',](('King Arthur',),('human','knight','king'))
遍历所有对象属性对的概念格:
>>>forextent,intentinc.lattice:...print('%r%r'%(extent,intent))()('human','knight','king','mysterious')('King Arthur',)('human','knight','king')('holy grail',)('mysterious',)('King Arthur','Sir Robin')('human','knight')('King Arthur','Sir Robin','holy grail')()
对晶格进行图形可视化(使用.graphviz(view=True)to 直接渲染并显示生成的pdf):
>>>c.lattice.graphviz()# doctest: +ELLIPSIS<graphviz.dot.Digraphobjectat0x...>
进一步阅读
概念格的生成基于c.lindig的算法。 Fast Concept Analysis。在Gerhard Stumme,编辑,与概念 结构-对ICCS 2000的贡献,Shaker Verlag,亚琛,德国,2000年。
包含的示例CXT文件取自uta priss'FCA homepage
另请参见
实现基于这些python包:
以下软件包是在概念的基础上构建的:
- features–语言学的特征集代数
如果要将fca应用于更大的数据集,可能需要考虑基于more sophisticated algorithms的other implementations,比如In-Close 或者Fcbo。
许可证
概念分布在MIT license下。