用python进行形式概念分析

concepts的Python项目详细描述


Latest PyPI VersionLicenseSupported Python VersionsFormatReadthedocs

TravisCodecov

concepts是formal concept analysis的简单python实现 (FCA)。

fca提供了一个数学模型来描述一组对象(例如king 亚瑟,罗宾爵士和圣杯)有一套属性(例如人类, 骑士,国王,神秘的)每件物品都有或没有。一个 名为formal context的表定义哪些对象具有给定的属性和 反之亦然,给定对象具有的属性。

安装

这个包在python 2.7和3.5+下运行,使用pip安装:

$ pip install concepts

这也将安装来自pypi as的bitsetsgraphviz包 必需的依赖项。

呈现晶格图取决于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...>
https://raw.github.com/xflr6/concepts/master/docs/holy-grail.png

进一步阅读

概念格的生成基于c.lindig的算法。 Fast Concept Analysis。在Gerhard Stumme,编辑,与概念 结构-对ICCS 2000的贡献,Shaker Verlag,亚琛,德国,2000年。

包含的示例CXT文件取自uta priss'FCA homepage

另请参见

实现基于这些python包:

  • bitsets–预定义域上的有序子集
  • graphviz–graphviz的简单python接口

以下软件包是在概念的基础上构建的:

如果要将fca应用于更大的数据集,可能需要考虑基于more sophisticated algorithmsother implementations,比如In-Close 或者Fcbo

许可证

概念分布在MIT license下。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用jain api上的编解码器信息自动创建sdp消息   显示素数误报的java程序   java如何从存储x、y值和整数索引之间的时间变化的两个数组列表创建动画?   java CompletableFuture:转换与组合   具有多个in运算符的java CrudePository findBy方法签名?   java:扩展小程序进程超时   java如何做mvn scm插件匿名pserver cvs访问   java如何在选中项目时将项目从一个活动发送到另一个活动   java存储子网的最佳数据结构,用于将Ip地址与子网匹配   java Jackson序列化以报告无法序列化的字段列表   如何将java mysql连接器导入IntelliJ?   如果java只在构造函数中编写,它是线程安全的集合吗?   java正则表达式捕获组在OR运算符后返回null   java使用Jackson在运行时将实体动态序列化为其ID或完整表示形式