BoikoML_framework
序言
科技和科学的最近发展为数据的增长提供了巨大的动力,同时也增加了数据的可用性。从 2005 年到 2020 年,数字宇宙预计将增长 300 倍,从 130 千兆字节增长到 40,000 千兆字节,或 40 万万亿字节(每人、每女、每孩超过 5,2000 千兆字节)。这部分增长的一部分是由于由计算机网络、智能手机、可穿戴设备和各种传感器产生的海量数据,这些设备产生实时数据。所有这些数据只有在其能否被高效处理时才有用,这样个人才能基于它们做出及时决策。
原始数据的问题在于它不允许识别模式,为了这个目的,广泛使用机器学习(ML)技术。ML 技术在社会中的许多领域中得到应用,从日常生活到国家安全。ML 技术用来解决问题的ăyrıca,它生成模型的高效率,以及人类在做某些分析时容易出错,或者试图在各种特征之间找到关联,而这种关联通常不与 ML 有关。
去年 Apple 宣布了 CoreML。这是一个框架,允许开发者将预训练的 ML 模型嵌入到自己的项目中。这个框架最大的缺点是开发者仍然需要使用外部软件来收集他们的数据,将其处理以使其适合挖掘、调整和训练一个符合其需求的模型,最后将模型导出到 CoreML。这个流程使得大多数 iOS 开发者只使用预训练的图像识别模型,而几乎没有人为预测创建自己的模型,这意味着这个框架的大部分功能都没有得到充分利用,因为 ML 的一个重要目标就是提供定制解决方案。
一年过去了,苹果发布了CreateML。这次,简化了之前的一些管道,允许大多数工作在本地以Swift本地化完成。在图像和文本识别方面做出了非常好的工作,使得iOS开发者只需“几点击”即可训练模型。尽管如此,对于通用ML任务并没有太多改进。正如其名所示,通用任务是最常见的。i设备始终在使用者身边,并产生大量数据,可以用来学习用户习惯并提供定制功能。
我们的框架是开源的,完全使用Swift编写。该框架涵盖生成自定义ML模型的所有步骤,直接集成到iOS开发者项目中,包括数据处理和选择、ML算法的训练和调优、针对每种情况验证协议和评估指标。还可以将模型导出到CoreML。我们的框架基于当今最常用的框架之一Scikit-learn。Scikit-learn的一个主要优点是它大部分是用Python编写的,即使是非程序员也能访问。此外,我们框架中集成的数据处理基于Pandas。我们主要的目的是通过专注于提高生产力的框架,将机器学习的优势带给每位iOS开发者,为最终用户带来更丰富、更具沉浸感的体验。
与playgrounds的主要使用
let datasetName = "german.csv" let testFileUrl = playgroundSharedDataDirectory.appendingPathComponent(datasetName)
let dataset = ReadCsv(path: testFileUrl, separator:",") var dfHeader = Header(features: dataset.getCsvHeader())
var df = DataFrame(inputData: dataset.getData(), header: dfHeader, metaAttributeIndex: 24) var data = df.trainTestSplit(percent: 0.8)
var train = data["train"]!, test = data["test"]! var treino = train.splitMetaAttribute(dataframe: train), teste = train.splitMetaAttribute(dataframe: test)
let clf = Knn(k: 7) clf.fit(x_train: treino["x"]!, y_train: treino["y"]!) let pred = clf.predict(x_test: teste["x"]!, y_test: teste["y"]!)
let cf = ConfusionMatrix(y_pred: pred, y_real: teste["y"]!.showDf()[teste["y"]!.getMetaIndex()]!)
cf.matrix()
teste["x"]!.shape()
teste["x"]!.getValues(index: 1)["values"] teste["x"]!.getValues(index: 1, normalize: true) teste["x"]!.getValues(index: 1)["values"]