如何开展人工智能项目呢?

1.分析问题,确定输入和输出

比如:中英翻译,输入: 苹果 输出: apple
确定了输入和输出后,要想办法将输入和输出抽象成一些数字,因为计算机只能为你处理数字。比如说,你输入一朵花,输出一个分类。我们知道花是不输入到电脑的,我们要将一朵花抽象成一些数字,这些数字代表了这朵花的特征,一朵花可能会有许许多多特征,我们选出一些具有代表的特征来,将这些特征有数字来表达,比花瓣的长、宽、花萼的长、宽等等。它的输出我们也用数字来表征。

2.基于输入和输出,构建数据集

这个数据集包括了输入集和输出集,输入集的每行特征对就输出集的一行,它们是一一相对,特征对应标签。(记住,这些对应关系一定是正确的,不是凭空捏造的),因为人工智能算法是基于数据的,就是人工智能算法做就是帮忙构建出或找到一个函数,这个函数能够完成输入集到输出集的映射。说白了,就是为这些数据集找能一个映射函数。

3、寻找一个合适的算法来构建模型,完成输入到输出的映射

算法有很多,我们可以根据需要去拿一个合适的来使用。为什么说是构建模型呢,前面我们说了是要找一个映射函数,这个函数只在训练完成后才会有,此时模型才存在。

4、部署模型,进行系统集成

模型生成完成后,下一步就是要考虑到模型部署到服务器,与其他系统进行集成。

  1. 第一步要把生成的模型保存到硬盘,就是做模型的序列化工作
  2. 第二步就是在部署环境中加载模型,完成部署。
    以上两步可以pickle或joblib来完成。

代码演示

我们用scikit-learn这个机器学习库来完成一些演示,因为里面有现成的数据集,比较方便演示。
需求:鸢尾花分类问题,模型要做到在提供相应鸢尾花特征数据的输入后,输出这个鸢尾花的所属类。如果我们不懂鸢尾花的分类,那么我们就要请求相应的专家获得相关知识。对鸢尾花进行分类,已知它有三个分类。
第一步:确定输入与输出并用数字化刻画
输入:我们要数字化刻画鸢尾花这个实体。经过特征遴选,我们选择了它的四个主要特征::花瓣⻓,花瓣宽,花萼⻓,花萼宽
输出:从零开始编号0, 1, 2,我们用数字代表分类。对于创建数据的人,他/她当然是知道0,1,2具体代表什么分类名。
第二步:根据第一步准备数据集

# 引入鸢尾花数据集,scikit库它只提供了150条数据供我们使用,实际生产中,这肯定是远远不够的,
from sklearn.datasets import load_iris
# 下面的return_X为输入集,return_y输出集,其实这样叫不太好,最合适的叫法是return_X为特征集,return_y为标签集
return_X,return_y = load_iris(return_X_y=True)
# 我们数据集分出一部分用来测试,使用scikit库的train_test_split对数据集进行拆分
from sklearn.model_selection import train_test_split
# 留出%20的数据用于测试
X_train,X_test,y_train,y_test = train_test_split(return_X,return_y,test_size=0.2)

第三步:选择一种机器算法来进行训练,我这里选择K-nearest neighbors(K-紧近邻算法)

# 引入Knn算法
from sklearn.neighbors import KNeighborsClassifier
# Knn算法对象
knn=KNeighborsClassifier(5)
# 开始训练,中文也称其为拟合,其实就是为这一堆数据寻找一个从特征特征集到标签集的映射函数,所以现在知道为要数字化输入输出了吧。
knn.fit(X_train,y_train)
#fit执行完成就是训练完成了。

模型已生成,模型就是上面的knn对象,我们现在可以用到来预测一下,我就用X_test,看看它是否能够预测出对应的标签,答案在y_test中:

# 预测
re = knn.predict(X_test)
# 计算一下预测的准确率
(re == y_test).mean()
0.9

这个准确率是会波动的,也就是它不是固定的。预测肯定是有时准备一些有些差一些,这和提供的数据和算法有关。上面都用到numpy作为它的科学计算工具。

第四步:保存模型,并在部署环境部署模型,在软件领域,就是将对象按一定的字节顺序保存到硬盘的一个文件上,这叫序列化,反过来就是反序列化。
pickle和joblib两个python工具都能做这件事,我们分别演示一下:
pickle:
保存:

#将knn模型保存到knn.wong这个文件中
import pickle
pickle.dump(knn,open('knn.wong','wb'))

加载:

import pickle
loaded_knn = pickle.load(open('knn.wong','rb'))
# loaded_knn这个模型就可以拿来预测了,如:
from sklearn.datasets import load_iris
X,y = load_iris(return_X_y=True)
loaded_knn.score(X,y)
#因为手上确实没有其他数据了,所以只好再拿鸢尾花来作例

joblib:

保存:

import joblib
joblib.dump(knn,'knn.fling')

加载:

loaded_myknn=joblib.load('knn.fling')
# myknn这个模型就可以拿来预测了,如:
loaded_myknn.score(X,y)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/842733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

栈 队列

目录 1.1栈的基本概念 1.1.1栈的定义 1.1.2栈的基本操作 1.2栈的顺序存储结构 1.2.1构造原理 1.2.2基本算法 1.3栈的链式存储结构 1.3.1构造原理 1.3.2基本算法 2.1队列的基本概念 2.1.1队列的定义 2.1.2队列的基本运算 2.2队列的顺序存储结构 2.2.1构造原理 2.2.1基…

SAP项目中的国际化团队

参与过国际项目或者管理过国际化的团队的同仁是不是有同样的感受,管理SAP项目中的国际化团队是一项复杂的任务,需要考虑多种因素,包括跨文化沟通、时区管理、项目协调等。今天我就根据我多个国际项目的经验来给大家分享一下如何很好的管理国际…

深刻解析 volatile 关键字和线程本地存储ThreadLocal

1.volatile关键字在Java多线程编程中的重要性 在多线程编程中,volatile关键字扮演着至关重要的角色,它确保了变量在多个线程间的可见性,并且能防止指令重排序,从而达到线程安全的目的。 1.1 保证多线程环境下变量的可见性 在Ja…

CRLF注入漏洞

1.CRLF注入漏洞原理 Nginx会将 $uri进行解码,导致传入%0a%0d即可引入换行符,造成CRLF注入漏洞。 执行xss语句 2.漏洞扩展 CRLF 指的是回车符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII 10,\n&am…

Java中的事件驱动编程:增强应用的互动性和响应性

事件驱动编程是一种编程范式,其中程序的流程由外部事件决定,如用户操作、系统消息或其他程序的输入。在Java中,事件驱动编程广泛应用于图形用户界面(GUI)开发、网络编程和组件交互。本文将探讨Java中的事件驱动编程基础…

FTP协议——LightFTP安装(Linux)

1、简介 LightFTP是一个轻量级的FTP(File Transfer Protocol,文件传输协议)客户端软件。FTP是一种用于在网络上传输文件的标准协议,允许用户通过TCP/IP网络(如互联网)在计算机之间进行文件传输。 2、步骤…

在ARM开发板上,栈大小设置为2MB(常用设置)里面存放的数据

系列文章目录 在ARM开发板上,栈大小设置为2MB(常用设置)里面存放的数据 在ARM开发板上,栈大小设置为2MB(常用设置)里面存放的数据 系列文章目录 在ARM开发板上,栈(Stack)…

Flutter 中的 LimitedBox 小部件:全面指南

Flutter 中的 LimitedBox 小部件:全面指南 Flutter 是一个功能强大的 UI 框架,它提供了大量的小部件来帮助开发者构建美观且响应式的用户界面。在 Flutter 的布局小部件中,LimitedBox 是一个不太常见但非常有用的组件,它可以用来…

Keras深度学习框架第二十五讲:使用KerasNLP预训练Transformer模型

1、KerasNPL预训练Transformer模型概念 使用KerasNLP来预训练一个Transformer模型涉及多个步骤。由于Keras本身并不直接提供NLP的预训练模型或工具集,我们通常需要结合像TensorFlow Hub、Hugging Face的Transformers库或自定义的Keras层来实现。 以下是一个简化的…

Thingsboard规则链:Message Type Filter节点详解

一、Message Type Filter节点概述 二、具体作用 三、使用教程 四、源码浅析 五、应用场景与案例 智能家居自动化 工业设备监控 智慧城市基础设施管理 六、结语 在物联网(IoT)领域,数据处理与自动化流程的实现是构建智能系统的关键。作…

创新实训2024.05.28日志:记忆化机制、基于MTPE与CoT技术的混合LLM对话机制

1. 带有记忆的会话 1.1. 查询会话历史记录 在利用大模型自身能力进行对话与解答时,最好对用户当前会话的历史记录进行还原,大模型能够更好地联系上下文进行解答。 在langchain chat chat的chat函数中,通过实现langchain框架提供的ChatMemo…

【设计模式】创建型-工厂方法模式

前言 工厂方法模式是一种经典的创建型设计模式,它提供了一种灵活的方式来创建对象实例。通过本文,我们将深入探讨工厂方法模式的概念、结构和应用。 一、什么是工厂方法模式 工厂方法模式是一种创建型设计模式,旨在解决对象的创建过程和客…

Spring MVC的请求流程

Spring MVC(Model-View-Controller)是一种基于Java的实现了MVC设计模式的轻量级Web框架。它通过一套注解,可以快速地搭建一个可扩展、易维护的Web应用程序。下面是Spring MVC处理请求的基本流程: 用户发起请求:用户通过…

Parquet使用指南:一个超越CSV、提升数据处理效率的存储格式

前言 在大数据时代,数据存储和处理的效率越来越重要。同时,我们在工作中处理的数据也越来越多,从excel格式到csv格式,从文件文档传输到直接从数据库提取,数据单位也从K到M再到G。 当数据量达到了G以上,几…

ROS | 自动导航

保存&加载地图: image:地图文件 resolution:地图分辨率(珊格地图) origin:地图左下标 第三个参数是偏转角度 加载创建好的yaml文件: 年轻人第一次导航: 全局规划器: 代价地图设置参数&#…

K-means聚类模型入门介绍

K-means聚类是一种无监督学习方法,广泛应用于数据挖掘、机器学习和模式识别等领域,用于将数据集划分为K个簇(cluster),其中每个簇的数据具有相似的特征。其基本思想是通过迭代寻找使簇内点间距离平方和最小的簇划分方式…

纯命令行登录dlut-lingshui并实现断网重连

1 写在前面 本文章改写自《shell脚本登录dlut-lingshui并设置开机连网和断网重连》,旨在利用其脚本解决无图形界面情况下的校园网登录以及断网重连问题。本文仅作使用脚本的示范而不分析原理,若对脚本细节感兴趣可以查阅原文。 2 操作步骤 2.1 修改代…

【华为OD机试-C卷D卷-200分】运输时间(C++/Java/Python)

【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 M(1 ≤ M ≤ 20)辆车需要在一条不能超车的单行道到达终点,起点到终点的距离为 N(1 ≤ N ≤ 400)。速度快的车追上前车后,只能以前车的速度继续行驶,求最后一…

K8S-pod资源 探针

一.pod资源限制: 对pod资源限制原因:高并发占用所有的cpu资源、内存资源、会造成雪崩 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源。 方式: 对pod做…

UML-系统架构师(二)

1、UML(Unified Modeling Language)是面向对象设计的建设工具,独立于任何具体程序设计语言,以下()不属于UML中的模型。 A用例图 B协作图 C活动图 DPAD图 解析: UML一共14种图 结构图&…