MarkovModel 1.0.2

MarkovModel 1.0.2

Diney Bomfim 维护。



  • Diney Bomfim

MarkovModel

Build Status codecov codebeat badge Version Platform CocoaPods Compatible Carthage compatible

描述

MarkovModel 是一个 Swift 框架,它利用马尔可夫模型的强大功能来处理和计算已知系统中的状态。可以用于机器学习、游戏和其他方面多个目标。要了解更多关于马尔可夫模型的信息,请访问 https://wikipedia.org/wiki/Markov_model

特性

  • 自动根据给定的交易序列创建马尔可夫链;
  • 允许手动矩阵操作以更改成员;
  • 用于调试的漂亮矩阵打印;
  • 马尔可夫决策过程,包括加权随机过程;
  • 预测下一个状态;
  • 完整的 API 文档.

安装

使用 CocoaPods

添加到您的 Podfile 文件

pod 'MarkovModel'

使用 Carthage

将您要添加的代码放入您的 CartfileCartfile.private 文件中。

github "db-in/MarkovModel"

使用 Swift Package Manager

将您要添加的代码放入您的 Package.swift 文件中。

let package = Package(
    name: "myproject",
    dependencies: [
        .package(url: "https://github.com/db-in/MarkovModel.git"),
    ],
    targets: [
        .target(
            name: "myproject",
            dependencies: ["MarkovModel"]),
    ]
)

需求

版本 语言 Xcode iOS
1.0.0 Swift 4.1 9.0 10.0

编程指南

马尔可夫模型可以用以达到许多目标。本节将解释其用法,并提供一些可能的场景。

  • 模型训练
  • 决策过程
  • 调试

模型训练

首先在您想要使用模型的地方导入包。处理模型有两种方式:通过实例化或通过静态训练。

import MarkovModel
...
let markovModel = MarkovModel(transitions: ["A", "B", "C", "A", "C"])

对于非常大的数据量(转换),您可能更愿意采取静态方法,因为它可以在闭包中一次性训练和操作模型。

import MarkovModel
...
MarkovModel.process(transitions: ["A", "B", "C", "A", "C"]) { model in
	// perform the operations on model
}

决策过程

为了性能和更好的API设计,所有马尔可夫决策过程算法都在矩阵本身中完成。您可以通过调用 next 来计算任何未来状态。有三种可能的决策过程选项: predictrandomweightedRandom

markovModel.chain.next(given: "B", process: .random)

您可以省略过程参数,默认选项将是 predict

markovModel.chain.next(given: "B")

有时您可能想获取矩阵本身的某些列。使用 probabilities 方法可以检索从给定状态的所有可能的转换。

markovModel.chain.probabilities(given: "B")

选择过程

为了性能和更好的API设计,所有马尔可夫决策过程算法都在矩阵本身中完成。您可以通过调用 next 来计算任何未来状态。有三种可能的决策过程选项: predictrandomweightedRandom

let markovModel = MarkovModel(transitions: ["A", "A", "B"])
print(markovModel)
// or
print(markovModel.chain)

// It will print
   B     A    

| 0.00  0.50 |  B   
|            |
| 0.00  0.50 |  A   

常见问题

对于没有转换的状态怎么办?

  • 为了内存安全和高性能,一旦这些状态不影响选择过程,它们就不会被《MarkovModel》考虑。