使用人工智能模型的网络应用程序
使用人工智能模型的网络应用程序
在当今数字化时代,人工智能(AI)和机器学习(ML)已成为推动技术创新的关键力量。从自动驾驶汽车到智能语音助手,从医疗诊断到金融分析,AI的应用无处不在。本文将为您详细介绍如何在网络应用程序中使用人工智能模型,特别是通过Jupyter Notebook使用Python库训练机器学习模型,并将其整合到Streamlit网络应用程序中。
使用人工智能模型的网络应用程序
在本课中,您将学习如何在Jupyter Notebook中使用Python库训练机器学习模型,并将训练有素的机器学习模型纳入Streamlit网络应用程序。这些是本课的活动:
- 活动:制作预测应用程序
使用机器学习模型
Jupyter Notebooks、Python和Streamlit的另一大特点是能够训练机器学习模型并进行预测。如果你是人工智能方面的新手,你可能需要先浏览本课程中的人工智能课程,学习基础知识,然后再学习这里涉及的更高级的编码。您可以使用像Teachable Machine这样的用户友好型机器学习模型平台来制作模型,并将其整合到Python网络应用程序中。
如果您在人工智能和使用Jupyter Notebooks处理数据集方面有过一些经验,那么这将是您下一步的良好选择。
在本课中,您将了解一些Python机器学习库,以及使用Python可以创建的一些不同的机器学习模型。回顾一下,创建机器学习模型主要有3个部分。
数据集
通过学习算法发现模式
预测:
数据集是模型的输入。它可以包括文本、图像、声音或姿势。我们在第二单元使用Jupyter笔记本处理了文本和数字数据。本课我们将继续使用电子表格形式的文本数据。
寻找模式本质上就是利用数据集构建机器学习模型。Python包含许多可以从数据中建立人工智能模型的库。在本课程中,我们将使用scikit-learn软件包中的许多函数。除了它提供的库之外,该网站还包含大量有关机器学习和构建模型过程的精彩信息。这是了解更多信息的绝佳资源!
一旦创建了模型,就可以根据新信息来预测结果。Python提供的库可以再次实现这一点。
数据预处理
在将数据集发送给算法建立模型之前,必须对其进行预处理或"清理",这样模型构建算法才能使用数据集,并尽可能建立最准确的模型。事实上,创建机器学习模型的大部分工作都在预处理中。您需要仔细查看数据,决定哪些数据是重要的,哪些可以忽略,哪些需要清理。
预处理包括哪些内容?对于基于文本的数据集,需要处理以下一些问题。
分割数据
对数据进行预处理后,需要将其分成训练集和测试集。训练集将用于训练和创建模型。然后,您将使用测试集测试模型的性能。
有标准的分割方法(通常75%用于培训,25%用于测试),但您也可以随意分割。同样,我们也提供了一些功能,可以自动完成这些工作。
创建模型
下一步是创建模型。要做的一个重大决定是,我应该使用哪种算法?有许多不同的监督学习算法可供选择,很难知道使用哪一种。一个好的方法是尝试几种不同的算法,然后看看哪种算法的准确率最高。
第一步是确定您是否需要一个分类算法还是回归算法。这取决于您想要预测什么。
分类算法用于预测离散目标或类别。例如,将电子邮件分为垃圾邮件或非垃圾邮件就是一个分类问题
回归算法用于预测连续范围内的事物。其中一个例子就是预测一个人将获得多少薪水。预测的是一个数字范围,输出可能是该范围内的任何值。
以下是几种常用的模型创建算法。
分类
- 决策树
- 随机森林
- K最近邻
- 直觉贝叶斯
- 逻辑回归
- 支持向量机
回归
- 线性回归
- 岭回归
- 拉索回归
- 多项式回归
- 贝叶斯线性回归
- 支持向量回归
请注意,有些算法同时属于这两种类型。例如,既有决策树分类器,也有决策树回归器。支持向量机用于分类,支持向量回归用于回归。
那么,如何决定使用哪种方法呢?您应该研究其他数据科学家在不同情况下使用的算法,看看哪种算法适合您的模型。您还应该用您的数据尝试一些不同的算法,然后找出哪种算法的准确性最高。您还可以调整特定算法的参数,看看它是否能返回更准确的模型。
scitkit-learn提供了所有这些算法的函数,因此创建模型非常简单。
评估模型
您希望模型达到最佳状态,因此需要对其性能进行评估。评估模型的两个常见变量是偏差和方差。
偏差是模型预测值与正确值之间的差值。
方差是指使用不同数据时预测结果的变化程度。
您希望在偏差和方差之间取得良好的平衡。
偏差大 -> 拟合不足。
拟合不足当模型过于简单,无法解释训练数据中的噪声时,就会出现这种情况。如果数据量不足或特征(列)不够,或者数据中的噪声太大,就会出现这种情况。如果一个模型在训练数据和测试数据上都表现不佳,就说明模型欠拟合。
高方差 -> 过度拟合。
过拟合过拟合是指在一组数据上训练出的模型表现很好,但如果再用新的数据来训练,它的表现就完全不好了。如果模型过于复杂,试图过于贴近训练数据,就会出现这种情况。模型可能会在训练数据上预测得很好,但在测试数据上却表现不佳。
检查模型性能的一种技术是交叉验证。
交叉验证即多次训练模型,每次使用不同的训练/测试数据。您的数据集被分成多个折叠或子集。然后将其中一个折叠作为验证集或测试集,其余的折叠用于训练。这样要进行多次,因此每次训练集和测试集都会发生变化。
sciikit-learn还提供了度量库,因此您可以轻松获得模型的性能评分。
- 准确率得分= 预测正确率/预测总数
- 精确度= 真阳性/(真阳性 + 假阳性)
- 召回率= 真阳性/(真阳性 + 假阴性)
- F1 分数= (2 x 精确度 x 召回率)/(精确度 + 召回率)
- 特异性= 真阴性/(真阳性 + 假阴性)
- 混淆矩阵- 显示真阳性、真阴性、假阳性和假阴性计数
通过检查各种算法的指标,您可以选择最佳模型。
预测!
有了满意的模型后,就可以在应用程序中使用它了。
通常的做法是在Jupyter Notebooks等环境中使用Python对模型进行预处理、创建和评估。在这里,您可以将模型导出为文件。
然后,您就可以在Streamlit应用程序中加载模型,并利用它进行预测。
在本课的活动中,您将使用中风风险数据集经历整个过程。您将看到如何预处理数据、使用不同算法创建模型,然后在一个简单的Streamlit应用程序中使用模型来预测中风风险(给定一些输入特征)。
挑战
尝试与Jupyter Notebook中的不同模型。
- 研究scikit-learn网站上的其他分类算法,并查看Kaggle上的其他建模示例。
- 选择一种算法,将代码添加到笔记本中,创建模型。
- 使用scikit-learn指标来检查准确性。
您的模型性能如何?是否优于笔记本中的其他算法?
挑战
鸢尾花数据集是一个经典数据集,它根据花瓣和萼片的尺寸将鸢尾花分为3个品种(setosa、versicolor和virginica)。
- 对数据集进行研究,了解其特征和目标。
- 您可以下载数据集并创建自己的模型,也可以使用使用K最近邻创建的模型(pickle文件)。请注意,该数据集不需要缩放器。pickle文件只包含模型。
- 导入模型并创建Streamlit应用程序,根据四个数据集特征预测虹膜种类。
技术创新灵感
以下是Technovation参与者使用Python和Streamlit构建包含机器学习模型的网络应用的一些令人惊叹的例子。
T.E.D.D.Y.
Quake It Off
T.E.D.D.Y.
T.E.D.D.Y--基于文本的青少年早期困扰探测器, 由美国TEDDY团队TEDDY可帮助教师和辅导员及早发现学生的心理健康问题。TEDDY使用人工智能来识别表达消极情绪的句子或显示抑郁症患者应有的语言模式。然后,学生可被转介给辅导员以获得支持。
Quake It Off
Quake It Off由势不可挡的技术女孩of India是一款基于机器学习和人工智能的应用程序,可预测地震,提供全面的地图分析,向用户介绍所有必要的地震安全信息,并提供传播地震意识的方法。
反思
您已经经历了预处理数据集、构建多个模型、评估并选择一个模型用于应用程序的整个过程。一堂课要学的东西太多了!
您认为解决方案需要哪种类型的模型--分类还是回归?
您觉得哪些部分难以理解?
您现在可以采取哪些措施来了解更多信息,从而构建自己的解决方案?
关键术语回顾
- 预处理- 获取数据集,确保其中的数据适合用来训练机器学习模型
- 分类算法- 一种用于训练机器学习模型的算法,可对离散值进行分类或预测
- 回归算法- 用于训练机器学习模型以预测连续范围内数值的算法
- 偏差- 由于简化模型的不正确假设而导致的模型预测值与正确值之间的差异
- 方差- 当模型在面对新数据时无法归纳时,模型预测的变异量
- 过度拟合- 当模型与训练数据的拟合程度过高时,无法很好地预测新数据,原因是模型的方差过大
- 欠拟合- 模型过于简化,在训练或测试数据中表现不佳,原因是模型中的偏差或假设过高
其他资源
机器学习
流光溢彩
- 与Patrick Loeber一起从零开始构建机器学习网络应用- 另一个从头到尾构建模型并将其用于网络应用的例子
- 使用Streamlit的图像分类器,如果您的模型是在图像上训练的