我想在加密数据上使用GO实现机器学习模型(KNN或随机森林)。
我的数据用HElib(同态加密)加密,意味着我仍然可以执行ADD&加密数据上的MUL。
我的问题是:我是否必须使用GO重新实现所有机器学习算法,或者我可以使用一些" golearn" LIB?
使用golearn lib使用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))
谢谢
答案 0 :(得分:0)
您需要创建自己的基本csv包的解密版本; https://github.com/sjwhitworth/golearn/blob/master/base/csv.go
然后您可以照常将客户ParseCSVToInstances
函数的rawData输出传递给KNN函数InstancesTrainTestSplit
。