encryption - 加密数据的机器学习

标签 encryption go machine-learning

我想使用 GO 在加密数据上实现机器学习模型(KNN 或随机森林)。

我的数据是用 HElib(同态加密)加密的,这意味着我仍然可以对加密数据执行 ADD 和 MUL。

我的问题是:我是否必须使用 GO 重新实现所有机器学习算法,或者我可以使用一些“golearn”库吗?

使用 golearn 库的 GO 的 KNN 实现示例:

rawData, err := base.ParseCSVToInstances("../datasets/iris_headers.csv", true)
if err != nil {
    panic(err)
}

//Initialises a new KNN classifier
cls := knn.NewKnnClassifier("euclidean", "linear", 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, err := cls.Predict(testData)
if err != nil {
    panic(err)
}
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))

谢谢

最佳答案

您需要创建自己的基础 csv 包的解密版本; https://github.com/sjwhitworth/golearn/blob/master/base/csv.go

然后,您可以照常将客户 ParseCSVToInstances 函数的原始数据输出传递给 KNN 函数 InstancesTrainTestSplit

关于encryption - 加密数据的机器学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43676520/

相关文章:

go - 扇入 channel 至单 channel

haskell - 垃圾收集器如何找出堆栈中的对象引用?

matlab - 使用数据库的最近原型(prototype) Matlab 实现

java - 图片加密,为什么不能解密?

nginx - 让我们加密未经授权的 403 禁止

c++ - 如何在基数 256 中以其唯一的 xLen 数字表示形式写入整数 x?

go - 在 VSCode 中使用命令行参数调试 Go 测试

python-2.7 - 哪一个更快?逻辑回归还是带有线性核的 SVM?

machine-learning - 先验分布在分类中重要吗?

c - 对于 CTR 模式,我是否需要输出缓冲区为 AES block 大小的倍数?