决定给定的注视点是否代表扫视、注视或某种未知的模式

gazeclassifier的Python项目详细描述


python包gazeclassifier提供了一些函数,用于确定给定的注视点是否表示眼跳、注视或某种未知的模式。

这个包gazeclassifier是在坦佩雷大学的Infant Cognition Laboratory开发的。

一。安装

使用pip

$ pip install gazeclassifier

与Python2.6、2.7、3.3、3.4和3.5兼容。

2.用法

导入库:

>>> import gazeclassifier as gaze

将注视点定义为点列表:

>>> g1 = [[0,0], [0,0], [1,1], [2,2], [2,2]]  # a saccade
>>> g2 = [[1,1], [1,1], [1,1], [1,1], [1,1]]  # a fixation
>>> g3 = [[1,1], [2,2], [0,0], [4,4], [1,1]]  # an unknown

创建分类器。它已经过预训练,因此能够predict

>>> gc = gaze.GazeClassifier()
>>> gc.predict(g1)
'saccade'
>>> gc.predict(g2)
'fixation'
>>> gc.predict(g3)
'unknown'

在内部,predict首先从分类之前的点列表中提取功能。这些特性可以用extract_featuresextract_raw_features显式提取:

>>> gaze.extract_features(g1)
{
  'saccade_reaction': 1,
  'saccade_duration': 3,
  'saccade_mse': 0.000623,
  'fixation_mse': 0.232406
}

>>> gaze.extract_raw_features(g1)
{
  'saccade': {
    'source_points': [[0,0]],
    'saccade_points': [[0,0], [1,1], [2,2]],
    'target_points': [[2,2]],
    'mean_squared_error': 0.000623
  },
  'fixation': {
    'centroid': [[1.0,1.0]]
    'mean_squared_error': 0.232406,
  }
}

作为使用默认预训练分类器的替代方法,您可以训练一个:

>>> training_data = [g1, g2, g3]
>>> classes = ['saccade', 'fixation', 'unknown']
>>> gc = gaze.GazeClassifier()
>>> gc.fit(training_data, classes)

经过训练的分类器的api与默认值相同:

>>> gc.predict(g1)
'saccade'

三。API

3.1条。gazeClassifier.predict(点列表)

参数:

  • 点列表:点列表,即列表
    • 或者是来自extract_features的结果dict。 如果您需要访问这些功能并希望 防止predict重新提取它们。

返回一个字符串,该字符串可以是以下之一:

  • 'saccade':凝视从A点移动到B点,其他方式保持静止
  • 'fixation':凝视主要停留在静止状态
  • 'unknown':凝视不能被视为以上任何一种

3.2条。gazeClassifier.提取特征(点列表)

参数:

  • 点列表:一个[x,y]点列表,即列表列表

返回包含每个假设的平均错误和详细信息的dict。dict可以输入classify进行分类。

3.3条。gazeClassifier.提取原始特征(点列表)

参数:

  • 点列表:一个[x,y]点列表,即列表列表

返回包含每个假设的平均错误和详细信息的dict。dict可以输入predict进行分类。

3.4条。gazeClassifier.gazeClassifier()

一个新的未经训练的分类器。

3.5条。gazeClassifier.gazeClassifier适合(点列表,类)

3.6条。gazeClassifier.gazeClassifier预测(点列表或特征)

3.7条。gazeClassifier.version

当前版本字符串:

>>> gazeclassifier.version
'1.2.3'

四。对于开发人员

为软件包开发人员提供的提示。

4.1条。使用git

要进行开发,请从github克隆存储库:

$ git clone https://github.com/infant-cognition-tampere/gazeclassifier-py

对文件进行更改,将其添加到提交,然后执行提交:

(edit README.rst)
$ git add README.rst
$ git commit -m "Improved documentation"

列出未添加或未提交的文件:

$ git status

将本地提交推送到github:

$ git push

通过编辑.gitignore

$ nano .gitignore

4.2条。virtualenv

使用virtualenv来管理python版本和需求:

$ virtualenv -p python3.5 gazeclassifier-py
$ cd gazeclassifier-py
$ source bin/activate
...
$ deactivate

4.3条。测试

按照instructions to install pyenv操作,然后运行快速测试:

$ python3.5 setup.py test

或者对tox.ini

中列出的多个python版本运行全面的测试
$ pyenv local 2.6.9 2.7.10 3.3.6 3.4.3 3.5.0
$ eval "$(pyenv init -)"
$ pyenv rehash
$ tox

安装新的pyenv环境,例如:

$ pyenv install 3.5.0

http://rst.ninjs.org/处验证readme.rst

4.4条。发布到pypi

跟随python packaging instructions

  1. 创建一个未打包的sdist:$ python setup.py sdist
  2. 创建通用控制盘:$ python setup.py bdist_wheel --universal
  3. 通过上载转到PyPI and register the project by filling the package formgazeclassifier.egg-info/PKG_INFO文件。
  4. 用绳线上传包裹:
    1. 在距离上签名:$ gpg --detach-sign-adist/gazeclassifier-1.2.3*
    2. 上传:twine upload dist/gazeclassifier-1.2.3*(将询问您的pypi密码)
  5. 包已发布!

更新软件包的步骤与第三步相同。

4.5版本发布

  1. 更改版本S在gazeclassifier/version.pysetup.py中字符串到 '1.2.3'
  2. 进行毒物测试。见4.3。测试
  3. git提交:$ git commit --all-m "v1.2.3 release"
  4. 创建标记:$ git tag -a 1.2.3 -m "v1.2.3 stable"
  5. 推送提交和标记:$ git push && git push --tags
  6. 发布到pypi。见4.4。发布到pypi

5个。版本控制

Semantic Versioning 2.0.0

6.许可证

MIT License

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

推荐PyPI第三方库


热门话题
java调用Python函数作为TEID中的UDF   java Android。支持v4导入不工作   java如何影响具有静态属性的类   java如何在从glTexImage2D()分配后编辑纹理的像素颜色   javaspringboot+rediscache+@Cacheable适用于某些方法,而不适用于其他方法   java无法将动态Web模块方面从3.0更改为2.5   java如何在新选项卡中显示打印的文档?   java Google Cloud Endpoints API方法仅在删除用户参数时成功调用   java为什么我可以使用Stack<Double>但不能使用Stack<Double>?   java JDBC PreparedStatement似乎忽略了占位符   java如何设置JInternalFrame的标准图标化位置?   Java文件。copy()不复制文件   基于另一个类的java显示arraylist?   java Android Studio:错误:非法字符:'\u2028'   对象(Java)无法实例化类型映像?   javascript错误:飞行前响应的HTTP状态代码401无效   java确保泛型vararg参数具有相同的类型