机器/深度学习KeystoneML、Petuum、GoLearn、Shifu介绍

以下为你介绍的机器学习/深度学习软件都可用在Linux系统上:KeystoneML(机器学习框架)、Petuum(分布式机器学习框架)、GoLearn(Go 机器学习框架)、Shifu(机器学习框架)。

1、KeystoneML(机器学习框架)

KeystoneML 是一个用 Scala 编写的软件框架,来自伯克利大学 AMPLab 实验室。该项目主要目的是简化构造大规模、端到端的机器学习管道,基于 Apache Spark 构建。

示例代码:

val trainData = NewsGroupsDataLoader(sc, trainingDir)

val predictor = Trim.then(LowerCase())

.then(Tokenizer())

.then(new NGramsFeaturizer(1 to conf.nGrams))

.then(TermFrequency(x => 1))

.thenEstimator(CommonSparseFeatures(conf.commonFeatures))

.fit(trainData.data)

.thenLabelEstimator(NaiveBayesEstimator(numClasses))

.fit(trainData.data, trainData.labels)

.then(MaxClassifier)

测试:

val test = NewsGroupsDataLoader(sc, testingDir)

val predictions = predictor(test.data)

val eval = MulticlassClassifierEvaluator(predictions, test.labels, numClasses)

println(eval.summary(newsgroupsData.classes))

输出:

Avg Accuracy:0.980

Macro Precision:0.816

Macro Recall:0.797

Macro F1:0.797

Total Accuracy:0.804

Micro Precision:0.804

Micro Recall:0.804

Micro F1:0.804

生成KeystoneML项目:

./sbt/sbt assembly

make # This builds the native libraries used in KeystoneML

示例:MNIST管道

# Get the data from S3

wget http://mnist-data.s3.amazonaws.com/train-mnist-dense-with-labels.data

wget http://mnist-data.s3.amazonaws.com/test-mnist-dense-with-labels.data

KEYSTONE_MEM=4g ./bin/run-pipeline.sh \

 keystoneml.pipelines.images.mnist.MnistRandomFFT \

 --trainLocation ./train-mnist-dense-with-labels.data \

 --testLocation ./test-mnist-dense-with-labels.data \

 --numFFTs 4 \

 --blockSize 2048

下载地址:https://github.com/amplab/keystone

2、Petuum(分布式机器学习框架)

Petuum 是一个分布式机器学习框架。它致力于提供一个超大型机器学习的通用算法和系统接口。它主要集中在系统上 "plumbing work"和算法加速的优化上面,当简化分布式 ML 程序实现时——允许你聚焦在模型优化和大数据分析方面。Petuum 能够在集群和云计算(比如:Amazon EC2 和 Google GCE)上高效运行。(ML 是指 ML 算法)  。

Petuum 除了增加了分布式 ML 程序工具,同时还增加了用于大数据分析上的分布式ML算法库。此外它还包含这些工具(在不断丰富中):

卷机神经网络、度量学习、多级逻辑回归、非负矩阵分解、稀疏编码、K-均值、高级 MedLDA 主题模型、LDA 主题模型、矩阵分解(协同过滤)、完全连接的深度神经网络、随机森林分类器。

3、GoLearn(Go 机器学习框架)

机器/深度学习KeystoneML、Petuum、GoLearn、Shifu介绍

GoLearn 是一款 Go 语言机器学习框架,示例代码:

package main

import (

"fmt"

"github.com/sjwhitworth/golearn/base"

"github.com/sjwhitworth/golearn/evaluation"

"github.com/sjwhitworth/golearn/knn"

)

func main() {

// Load in a dataset, with headers. Header attributes will be stored.

// Think of instances as a Data Frame structure in R or Pandas.

// You can also create instances from scratch.

rawData, err := base.ParseCSVToInstances("datasets/iris.csv", false)

if err != nil {

panic(err)

}

// Print a pleasant summary of your data.

fmt.Println(rawData)

//Initialises a new KNN classifier

cls := knn.NewKnnClassifier("euclidean", 2)

//Do a training-test split

trainData, testData := base.InstancesTrainTestSplit(rawData, 0.50)

cls.Fit(trainData)

//Calculates the Euclidean distance and returns the most popular label

predictions := cls.Predict(testData)

fmt.Println(predictions)

// Prints precision/recall metrics

confusionMat, err := evaluation.GetConfusionMatrix(testData, predictions)

if err != nil {

panic(fmt.Sprintf("Unable to get confusion matrix: %s", err.Error()))

}

fmt.Println(evaluation.GetSummary(confusionMat))

}

例子:

GoLearn附带了一些实际示例:

cd $GOPATH/src/github.com/sjwhitworth/golearn/examples/knnclassifier

go run knnclassifier_iris.go

cd $GOPATH/src/github.com/sjwhitworth/golearn/examples/instances

go run instances.go

cd $GOPATH/src/github.com/sjwhitworth/golearn/examples/trees

go run trees.go

下载地址:https://github.com/sjwhitworth/golearn

4、Shifu(机器学习框架)

Shifu 是一个基于 Hadoop 的快速和可伸缩的机器学习框架。端到端机器学习和数据挖掘框架,Shifu专为数据科学家而设计,可简化构建机器学习模型的生命周期,虽然Shifu最初是为欺诈建模而构建的,但它可以推广到许多其他建模领域。

Shifu的优点之一是机器学习中的端到端建模管道,仅通过配置设置,就可以构建整个机器流水线,并且可以更轻松地开发模型并将其推向生产。Shifu中定义的管道如下:

机器/深度学习KeystoneML、Petuum、GoLearn、Shifu介绍

Shifu为模型构建过程的每个步骤提供了一个简单的命令行界面,包括:

统计计算和变量选择,以确定数据中最具预测性的变量。

变量归一化。

基于敏感性分析的分布式变量选择。

分布式神经网络模型训练。

分布式树集成模型训练。

培训后分析和模型评估。

Shifu上的分布式Tensorflow。

下载地址:https://github.com/ShifuML/shifu

注明

以上就是机器/深度学习KeystoneML、Petuum、GoLearn、Shifu的介绍内容,这些机器学习/深度学习软件都能使用在Linux操作系统中。

栏目相关文章