Python中的多元曲线分辨率
项目描述
pyMCR:Python 中的多元曲线分辨率
可在https://pages.nist.gov/pyMCR在线获取文档
软件 DOI:https ://doi.org/10.18434/M32064
手稿 DOI:https ://doi.org/10.6028/jres.124.018
pyMCR 是一个用于执行多变量曲线解析的小包。目前,它实现了一个简单的交替回归方案(MCR-AR)。最常见的实现是使用普通的最小二乘回归 MCR-ALS。
在两个矩阵上具有非负约束的 MCR 与非负矩阵分解 (NMF) 相同。从历史上看,其他名称也用于 MCR:
自建模混合分析 (SMMA)
自建模曲线分辨率 (SMCR)
可用方法:
回归器:
普通最小二乘法(默认)
对scikit-learn 线性模型回归器的原生支持 (例如LinearRegression、 RidgeRegression、 Lasso)
约束
非消极性
正常化
零终点
累积求和的零(大约)端点(也可以指定节点)
累积和的非负性
压缩或剪切高于或低于阈值的值
用规定的目标替换跨特征总和样本(例如,0 浓度)
强制平面(“平面化”)。例如,浓度图像是一个平面。
错误度量/损失函数
均方误差
其他选项
修复已知目标(C 和/或 ST,并让其他目标有所不同)
它的作用:
通过最小化例程近似浓度和光谱矩阵。这是 MCR 方法的核心。
以用户定义的顺序启用某些约束的应用。
它不做什么:
估计样本中的组件数。这是一些更高级的 MCR-ALS 软件包中的附加功能。
依赖项
注意:这些是开发系统规格。某些软件包的旧版本可能会起作用。
蟒蛇> = 3.4
用 3.4.6、3.5.4、3.6.3、3.6.5、3.7.1 测试
麻木 (1.9.3)
用 1.12.1、1.13.1、1.13.3、1.14.3、1.14.6 测试
scipy (1.0.0)
用 1.0.0、1.0.1、1.1.0 测试
scikit-learn,可选 (0.2.0)
已知的问题
安装
使用 pip(硬安装)
# Only Python 3.* installed
pip install pyMCR
# If you have both Python 2.* and 3.* you may need
pip3 install pyMCR
使用 pip(软安装 [可以使用 git 更新])
# Make new directory for pyMCR and enter it
# Clone from github
git clone https://github.com/usnistgov/pyMCR
# Only Python 3.* installed
pip install -e .
# If you have both Python 2.* and 3.* you may need instead
pip3 install -e .
# To update in the future
git pull
使用设置工具
您将需要下载存储库 或使用 git 克隆存储库:
# Make new directory for pyMCR and enter it
# Clone from github
git clone https://github.com/usnistgov/pyMCR
执行安装:
python setup.py install
日志记录
pyMCR 0.4.* 中的新功能,日志模块现在在导入期间自动加载和设置(通过 __init__.py)以打印消息。您不需要在下面进行记录器设置。
pyMCR 0.3.1 中的新增功能,Python 的本机日志记录模块现在用于捕获消息。虽然这不如 print() 语句方便,但它有很多优点。
日志记录教程:https ://docs.python.org/3.7/howto/logging.html#logging-basic-tutorial
记录食谱:https ://docs.python.org/3.7/howto/logging-cookbook.html#logging-cookbook
将简化的日志消息打印到标准输出(命令行)的简单示例:
import sys
import logging
# Need to import pymcr or mcr prior to setting up the logger
from pymcr.mcr import McrAR
logger = logging.getLogger('pymcr')
logger.setLevel(logging.DEBUG)
# StdOut is a "stream"; thus, StreamHandler
stdout_handler = logging.StreamHandler(stream=sys.stdout)
# Set the message format. Simple and removing log level or date info
stdout_format = logging.Formatter('%(message)s') # Just a basic message akin to print statements
stdout_handler.setFormatter(stdout_format)
logger.addHandler(stdout_handler)
# Begin your code for pyMCR below
用法
from pymcr.mcr import McrAR
mcrar = McrAR()
# MCR assumes a system of the form: D = CS^T
#
# Data that you will provide (hyperspectral context):
# D [n_pixels, n_frequencies] # Hyperspectral image unraveled in space (2D)
#
# initial_spectra [n_components, n_frequencies] ## S^T in the literature
# OR
# initial_conc [n_pixels, n_components] ## C in the literature
# If you have an initial estimate of the spectra
mcrar.fit(D, ST=initial_spectra)
# Otherwise, if you have an initial estimate of the concentrations
mcrar.fit(D, C=initial_conc)
示例结果
Example /文件夹中提供了命令行和 Jupyter 笔记本示例。使用文档中可用的不同回归器实例化 McrAR 类的示例。
来自示例/Demo.ipynb:
引用本软件
如果您使用pyMCR,非常感谢引用以下文章:
参考
执照
该软件由联邦政府机构美国国家标准与技术研究院 (NIST) 的员工开发。根据 美国法典第 17 篇第 105 节,NIST 员工的作品在美国不受版权保护,被视为属于公共领域。特此授予免费使用、复制、修改和分发本软件及其文档的许可,前提是所有副本中均包含此通知和免责声明。
本软件按“原样”提供,不提供任何形式的明示、默示或法定保证,包括但不限于对本软件符合规范的任何保证、对适销性、特定适用性的任何默示保证目的和免于侵权,以及文档符合软件的任何保证,或软件无错误的任何保证。在任何情况下,NIST 均不对任何损害负责,包括但不限于直接、间接、特殊或后果性损害,由本软件引起、导致或以任何方式与本软件相关,无论是否基于保修,合同、侵权或其他,无论是否由人员或财产或其他原因造成伤害,以及是否因以下原因造成损失,或由以下结果引起,
接触
Charles H Camp Jr:查尔斯。营地@nist 。 _ 政府
贡献者
小查尔斯·H·坎普
Charles Le Losq ( charles . lelosq @ anu . edu . au )
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。