python | nupic,一个强大的 Python 库!

本文来源公众号“python”,仅用于学术分享,侵权删,干货满满。

原文链接:nupic,一个强大的 Python 库!

大家好,今天为大家分享一个强大的 Python 库 - nupic。

Github地址:https://github.com/numenta/nupic-legacy

随着人工智能和机器学习技术的迅猛发展,神经网络和深度学习已经成为许多应用的核心。然而,对于某些实时数据流和异常检测任务,传统的神经网络方法可能并不适用。NuPIC(Numenta Platform for Intelligent Computing)是一个基于HTM(Hierarchical Temporal Memory)理论的机器智能平台,旨在模拟大脑的新皮层功能,特别擅长处理时间序列数据和异常检测。本文将详细介绍NuPIC库,包括其安装方法、主要特性、基本和高级功能,以及实际应用场景,帮助全面了解并掌握该库的使用。

1 安装

要使用NuPIC库,首先需要安装它。可以通过pip工具方便地进行安装。

以下是安装步骤:

pip install nupic

安装完成后,可以通过导入nupic库来验证是否安装成功:

import nupic
print("NuPIC库安装成功!")

2 特性

  1. 时间序列数据处理:擅长处理时间序列数据,能够进行预测和异常检测。

  2. 基于HTM理论:模拟大脑的新皮层功能,具有自学习和自适应能力。

  3. 实时处理:支持实时数据流处理,适用于在线学习和实时异常检测。

  4. 多平台支持:支持多种操作系统和硬件平台,具有良好的扩展性和适应性。

  5. 丰富的API:提供丰富的API,方便开发者进行定制化开发。

3 基本功能

3.1 构建时间序列预测模型

使用NuPIC库,可以方便地构建时间序列预测模型。

以下是一个简单的示例:

from nupic.frameworks.opf.model_factory import ModelFactory
from nupic.data.datasethelpers import findDataset# 加载数据集
datasetPath = findDataset("extra/keyboard/rec-center-hourly.csv")
model = ModelFactory.create(modelConfig)# 训练模型
with open(datasetPath, "r") as f:for line in f:model.run(line.strip().split(','))print("时间序列预测模型构建成功!")

3.2 进行预测

训练完成后,可以使用模型进行预测。

以下是一个示例,演示如何进行预测:

from nupic.data.datasethelpers import findDataset# 加载数据集
datasetPath = findDataset("extra/keyboard/rec-center-hourly.csv")# 进行预测
with open(datasetPath, "r") as f:for line in f:result = model.run(line.strip().split(','))print("预测结果:", result.inferences["multiStepBestPredictions"][1])

3.3 异常检测

NuPIC库提供了强大的异常检测功能。

以下是一个示例:

from nupic.frameworks.opf.model_factory import ModelFactory
from nupic.data.datasethelpers import findDataset# 加载数据集
datasetPath = findDataset("extra/keyboard/rec-center-hourly.csv")
model = ModelFactory.create(modelConfig)# 训练模型并进行异常检测
with open(datasetPath, "r") as f:for line in f:result = model.run(line.strip().split(','))anomalyScore = result.inferences["anomalyScore"]if anomalyScore > 0.8:print("异常检测: 异常得分为", anomalyScore)

4 高级功能

4.1 自定义模型配置

NuPIC库允许用户自定义模型配置,以适应不同的数据和任务。

以下是一个示例:

from nupic.frameworks.opf.model_factory import ModelFactory
from nupic.data.datasethelpers import findDataset# 自定义模型配置
modelConfig = {"aggregationInfo": {"seconds": 0, "fields": [], "months": 0, "days": 0, "years": 0, "hours": 0, "microseconds": 0, "weeks": 0, "minutes": 0, "milliseconds": 0},"model": "HTMPrediction","modelParams": {"sensorParams": {"encoders": {"timestamp_dayOfWeek": {"fieldname": "timestamp", "type": "DateEncoder", "dayOfWeek": (21, 1)},"timestamp_timeOfDay": {"fieldname": "timestamp", "type": "DateEncoder", "timeOfDay": (21, 1)},"timestamp_weekend": {"fieldname": "timestamp", "type": "DateEncoder", "weekend": 21},"value": {"fieldname": "value", "type": "RandomDistributedScalarEncoder", "resolution": 0.88}}},"spEnable": True,"spParams": {"spVerbosity": 0, "globalInhibition": 1, "columnCount": 2048, "inputWidth": 0, "numActiveColumnsPerInhArea": 40, "seed": 1956, "potentialPct": 0.8, "synPermInactiveDec": 0.005, "synPermActiveInc": 0.04, "synPermConnected": 0.1, "minPctOverlapDutyCycle": 0.001, "dutyCyclePeriod": 1000, "maxBoost": 1.0},"tpEnable": True,"tpParams": {"verbosity": 0, "columnCount": 2048, "cellsPerColumn": 32, "inputWidth": 2048, "seed": 1960, "temporalImp": "cpp", "newSynapseCount": 20, "maxSynapsesPerSegment": 32, "maxSegmentsPerCell": 128, "initialPerm": 0.21, "permanenceInc": 0.1, "permanenceDec": 0.1, "globalDecay": 0.0, "maxAge": 0, "minThreshold": 9, "activationThreshold": 12, "outputType": "normal", "pamLength": 1},"clEnable": True,"clParams": {"regionName": "SDRClassifierRegion", "clVerbosity": 0, "alpha": 0.0001, "steps": "1"},"anomalyParams": {"anomalyCacheRecords": None, "autoDetectThreshold": None, "autoDetectWaitRecords": 5030}},"trainSPNetOnlyIfRequested": False
}# 加载数据集
datasetPath = findDataset("extra/keyboard/rec-center-hourly.csv")
model = ModelFactory.create(modelConfig)# 训练模型并进行预测
with open(datasetPath, "r") as f:for line in f:result = model.run(line.strip().split(','))print("预测结果:", result.inferences["multiStepBestPredictions"][1])

4.2 实时数据流处理

NuPIC库支持实时数据流处理,适用于在线学习和实时异常检测。

以下是一个示例:

import time
from nupic.frameworks.opf.model_factory import ModelFactory# 自定义模型配置
modelConfig = {"aggregationInfo": {"seconds": 0, "fields": [], "months": 0, "days": 0, "years": 0, "hours": 0, "microseconds": 0, "weeks": 0, "minutes": 0, "milliseconds": 0},"model": "HTMPrediction","modelParams": {"sensorParams": {"encoders": {"timestamp_dayOfWeek": {"fieldname": "timestamp", "type": "DateEncoder", "dayOfWeek": (21, 1)},"timestamp_timeOfDay": {"fieldname": "timestamp", "type": "DateEncoder", "timeOfDay": (21, 1)},"timestamp_weekend": {"fieldname": "timestamp", "type": "DateEncoder", "weekend": 21},"value": {"fieldname": "value", "type": "RandomDistributedScalarEncoder", "resolution": 0.88}}},"spEnable": True,"spParams": {"spVerbosity": 0, "globalInhibition": 1, "columnCount": 2048, "inputWidth": 0, "numActiveColumnsPerInhArea": 40, "seed": 1956, "potentialPct": 0.8, "synPermInactiveDec": 0.005, "synPermActiveInc": 0.04, "synPermConnected": 0.1, "minPctOverlapDutyCycle": 0.001, "dutyCyclePeriod": 1000, "maxBoost": 1.0},"tpEnable": True,"tpParams": {"verbosity": 0, "columnCount": 2048, "cellsPerColumn": 32,"inputWidth": 2048, "seed": 1960, "temporalImp": "cpp", "newSynapseCount": 20, "maxSynapsesPerSegment": 32, "maxSegmentsPerCell": 128, "initialPerm": 0.21, "permanenceInc": 0.1, "permanenceDec": 0.1, "globalDecay": 0.0, "maxAge": 0, "minThreshold": 9, "activationThreshold": 12, "outputType": "normal", "pamLength": 1},"clEnable": True,"clParams": {"regionName": "SDRClassifierRegion", "clVerbosity": 0, "alpha": 0.0001, "steps": "1"},"anomalyParams": {"anomalyCacheRecords": None, "autoDetectThreshold": None, "autoDetectWaitRecords": 5030}},"trainSPNetOnlyIfRequested": False
}# 创建模型
model = ModelFactory.create(modelConfig)# 模拟实时数据流
def stream_data():import randomimport datetimewhile True:value = random.gauss(10, 1)timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")yield {"timestamp": timestamp, "value": value}time.sleep(1)# 处理实时数据流
for data in stream_data():result = model.run([data["timestamp"], data["value"]])anomaly_score = result.inferences["anomalyScore"]print(f"时间: {data['timestamp']}, 值: {data['value']}, 异常得分: {anomaly_score}")if anomaly_score > 0.8:print("检测到异常!")

5 总结

NuPIC库是一个功能强大且独特的时间序列数据处理和异常检测工具,能够帮助开发者高效地处理各种实时数据流任务。通过支持基于HTM理论的时间序列预测、异常检测、多步预测和自定义模型配置等特性,NuPIC库能够满足各种复杂的应用需求。本文详细介绍了NuPIC库的安装方法、主要特性、基本和高级功能,以及实际应用场景。希望本文能帮助大家全面掌握NuPIC库的使用,并在实际项目中发挥其优势。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/19544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL各种锁

目录 1. 从粒度上区分锁 1.1 全局锁(第一粒度) 1.2 表级锁(第二粒度) 1.3 行锁(第三最小粒度) 2 从模式上区分锁 2.1 什么是乐观锁 2.2 什么是悲观锁 2.3 意向共享锁和意向排他锁 2.4 临键锁和记录…

autocad背景色、引线文字大小

一、改变背景 在命令行输入op,回车,弹出配置对话框: 二、改变引线文字大小 选中引线,右键选择【特性】,在文字选项卡中设置文字高度:

Linux学习笔记:日志文件的编写

日志文件Log.hpp 日志文件的作用简单的日志文件编写 日志文件的作用 日志文件可以很好的帮我们显示出程序运行的信息,例如,进程pid,运行时间,运行状况等,通过日志记录程序的执行路径、变量值、函数调用等,可以帮助我们快速定位和修复代码中的错误。 简单的日志文件…

磁盘配额的具体操作

磁盘配额: linux的磁盘空间有两个方面:第一个是物理空间,也就是磁盘的容量 第二个inode号耗尽,也无法写入 linux根分区:根分区的空间完全耗尽,服务程序崩溃,系统也无法启动了。 为了防止有人…

JavaWeb 请求响应路径调试

在使用mvc时&#xff0c;或许会遇到请求的页面响应不了&#xff0c;这种情况要对站下径。 站点根目录 启动服务器时&#xff0c;通常要知道哪个是站点根目录。相应在网页端的url的跟站点通常为http://localhost:8080/ &#xff0c;前端解析时用的是站点根目录。 <form act…

【嵌入式DIY实例】-OLED显示网络时钟

OLED显示网络时钟 文章目录 OLED显示网络时钟1、硬件准备与接线2、代码实现在上一个ESP8266 NodeMCU文章中,我们用DS3231 RTC芯片和SSD1306 OLED制作了一个简单的实时时钟,时间和日期显示在SSD1306屏幕上,并且可以通过两个按钮进行设置。 在本中,我们将使用ESP 8266 NodeMC…

【Gradle】Gradle的本地安装和使用

目录 1、Gradle 的安装 2、集成 IntelliJ IDEA 3、使用 Gradle Gradle 完全兼容 Maven 和 Ivy 仓库&#xff0c;你可以从中检索依赖也可以发布你的文件到仓库中&#xff0c;Gradle 提供转换器能把 Maven 的构建逻辑转换成 Gradle 的构建脚本。 1、Gradle 的安装 Gradle 的…

Python 将Word、Excel、PDF、PPT文档转为OFD文档

OFD&#xff08;Open Fixed-layout Document &#xff09;是我国自主制定的一种开放版式文件格式标准。OFD文档具有不易被篡改、格式独立、版式固定等特点&#xff0c;目前常用于政府公文、金融、电子发票等领域。 如果想要通过Python将Office文档&#xff08;如Word、Excel或…

Android 车载 Audio 中 有关系统按键无声的问题排查小结

本文简单记录一下&#xff0c;车载中系统按键音的问题排查从 App --> FrameWork --> HAL层 的问题排查。 通过日志分析&#xff1a; AudioStreamOutSink 这个有数据写入到 HAL 中&#xff08;方式一&#xff09; 查看 dump 文件。&#xff08;方式二&#xff09; 先 …

SAP 物料的与压缩库存数据不一致

在测试系统中进行501和561增加库存的时候,系统提示物料的预压缩库存数据不一致的报错。 如下图所示: 首先想到的就是搜SAP的NOTES,找到了相关的两个note:293356 note:2197042 表示:数据库表 ACDOCA 和 ACDOCA_M_EXTRACT 之间的差异。 经过查询发现是由于物料分类账中的…

Docker 图形化界面管理工具 Portainer | 让你更轻松的管理 Docker

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 Portainer 是一个 Docker 图形化管理工具&#xff0c;可以通过 Web UI 轻松的管理容器、镜像、网络、卷。与 Dockge 相比功能更加的完善&#xff0c;同时上手难度也更大一些 Portainer 分为社区版和商业版…

你是否正确地编写了 Git 提交信息?

介绍 在版本控制方面&#xff0c;Git 是一个非常有效的工具。然而&#xff0c;像任何其他工具一样&#xff0c;你必须正确使用它才能充分发挥其作用。你需要考虑不同的方面。本文着重介绍如何按照传统提交规范&#xff08;Conventional Commits specification&#xff09;编写…

线上商城API接口再次升级||电商API接口对接线上商城搭建

功能更新 商城对接【蚂蚁搬客】应用 API接口产品上传及订单状态修改 01 商城对接API应用 ▼ 使用场景 适用于多个电商平台&#xff08;如淘宝、京东、天猫、1688、苏宁、唯品会、当当等&#xff09;的产品搬家&#xff0c;包括产品标题、主图等信息&#xff0c;轻松完成商…

NFTScan 获 Google Cloud 战略支持!

近日&#xff0c;NFT 数据基础设施服务商 NFTScan 获得全球领先云计算服务提供商 Google Cloud 战略支持。未来&#xff0c;双方将在链上数据和区块链领域展开战略合作&#xff0c;高效联动&#xff0c;共同探索区块链技术的更多可能性&#xff0c;为用户和行业带来更多惊喜与成…

束测后台实操文档2-OpenWrt

束测后台实操文档1-PVE、PBS 上面文&#xff0c;把proxmox装好并添加好PBS上的镜像存储空间后&#xff0c;还原已经做好的镜像基本上就可以在已有的镜像下开展工作了。 调试的PVE环境一般两个网口&#xff0c;一个外网wan&#xff0c;一个子网lan&#xff0c;虚拟机一般在lan…

【UnityShader入门精要学习笔记】第十六章 Unity中的渲染优化技术 (上)

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 移动平台上…

【Python】解决Python报错:AttributeError: ‘module‘ object has no attribute ‘xxx‘

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

flink 操作mongodb的例子

简述 该例子为从一个Collection获取数据然后插入到另外一个Collection中。 Flink的基本处理过程可以清晰地分为以下几个阶段&#xff1a; 数据源&#xff08;Source&#xff09;&#xff1a; Flink可以从多种数据源中读取数据&#xff0c;如Kafka、RabbitMQ、HDFS等。Flink会…

21 厂商考证介绍(华为 华三 锐键 深信服)+AI 解析

一 认识考证体系 二 明确考证的大致方向 锐键 职业资格证书等级介绍 职业资格证书是由国家职业资格鉴定机构或相关行业主管部门颁发的&#xff0c;用于证明一个人在特定职业领域具备一定技能和知识水平的证明文件。职业资格证书的等级分为初级、中级、高级、技师、高级技师、…

【Python】解决Python报错:AttributeError: ‘NoneType‘ object has no attribute ‘xxx‘

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…