作为一名 JavaScript 开发人员,深入研究机器学习并不像看起来那么令人畏惧。虽然在技术上可以使用 Node.js 包处理所有事情,但 Python ML 生态系统太丰富且完善,不容忽视。另外,Python 的使用起来非常方便。因此,使用 Python 来处理后端的繁重工作是有意义的。准备好模型后,您可以将其导出为前端友好的格式并将其加载到客户端上以运行预测。
在这篇文章中,我们将建立一个模型,根据 Twitter 粉丝数量来预测艺术家的受欢迎程度。
第一步是获取数据集。对于此项目,我们将使用如下所示的 arts.csv 文件:
twitter_followers,popularity,handle 111024636,94,justinbieber 107920365,91,rihanna 106599902,89,katyperry 95307659,97,taylorswift13 66325495,87,selenagomez 66325135,71,selenagomez 60943147,83,jtimberlake 54815915,82,britneyspears 53569307,85,shakira
正如您所看到的,这里有两个关键值:twitter_followers 和受欢迎度。这很好地为我们建立了序列模型,其中 x 将是 twitter_followers,y 将是流行度。
序列模型是构建模型最简单的选项之一。虽然选择最终取决于具体的用例,但我现在保持简单并坚持使用这种方法。
当您构建模型时,您需要解决一些基本任务:
下面的代码让您对这些任务有一个很好的概述,尽管它不是完整的图片。你可以在Github上查看完整代码。
def get_model(x, y): x_normalized = layers.Normalization( axis=None, ) x_normalized.adapt(np.array(x)) model = tensorflow.keras.Sequential([x_normalized, layers.Dense(units=1)]) model.compile( optimizer=tensorflow.keras.optimizers.Adam(learning_rate=0.1), loss="mean_squared_error", ) model.fit( x, y, epochs=2, verbose=0, validation_split=0.2, ) return model def main: train_features, test_features, train_labels, test_labels = split_data(dataset) model = get_model( train_features["twitter_followers"], train_labels, ) test_loss = model.evaluate( test_features["twitter_followers"], test_labels, verbose=2 ) model.export("./saved_model")
如您所见,Python 代码非常简单。有一个主要函数处理数据的分割、获取模型、评估它,最后保存它。
简而言之,这些是创建模型的基本步骤。但让我们面对现实吧:建立一个真正有效的模型既是一门艺术,也是一门科学。我的目标只是展示 Python 入门是多么容易。然而,要创建一个性能良好的模型,需要做很多工作,比如拥有可靠的数据集、清理和规范化数据、选择正确的模型和设置,以及拥有训练它的计算能力。所有这些任务都需要大量的时间和精力投入!
现在我们已经训练并保存了模型,是时候将其引入前端了。在这一步中,我们将以网络友好的格式加载模型,以便我们可以直接在浏览器中运行预测。无论您使用 TensorFlow.js 还是其他库,将机器学习集成到您的 Web 应用程序中都会打开一个充满可能性的世界。让我们深入探讨如何做到这一点!
TensorFlow 提供了一个名为 tensorflowjs_converter 的 npm 包,可帮助将保存的模型转换为 JSON 和二进制文件。
tensorflowjs_converter --input_format=tf_saved_model model/saved_model out/public
ls -la out/public group1-shard1of1.bin model.json
此设置可以轻松访问 Web 应用程序所需的文件。
完整代码可以在Github上查看。
const model = await tensorflow.loadGraphModel("model.json"); const getPopularity = (followers) => { const followers = 1_000; const normalized = followers; const x = tensorflow.tensor(normalized).reshape([-1, 1]); const result = model.predict(x); const values = result.arraySync(); const y = values[0][0].toFixed(2) * 100; const popularity = y; return popularity; };
如前所述,该模型旨在根据 Twitter 关注者数量“预测受欢迎程度”。虽然它看起来像是一个简单的示例,但它有效地演示了如何在后端生成模型并在前端使用它。
稍微看一下getPopularity是如何处理输入的,但关键一行是model.predict(x),它使用模型根据输入x预测一个值(y)。
前往演示页面并尝试一些 Twitter 手柄。这是一种有趣的方式来了解模型如何根据关注者数量预测受欢迎程度。
TensorFlow 是一个很棒的库,为后端和前端开发提供工具。任何 JavaScript 开发人员都可以深入使用 Python 或类似语言创建模型,然后轻松将该模型导入前端以运行预测。
虽然机器学习是一个广阔的领域,需要大量知识,但 TensorFlow 等工具有助于弥合软件和机器学习开发人员之间的差距。对于那些希望将 ML 融入到他们的项目中的人来说,这让旅程变得更加顺利!
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3