线性回归
线性回归线性回归介绍学习目标: 1.理解线性回归是什么? 2.知道一元线性回归和多元线性回归的区别 3.知道线性回归的应用场景 【理解】举个栗子假若有了身高和体重数据,来了播仔的身高,你能预测播仔体重吗? 这是一个回归问题,该如何求解呢? 思路:先从已知身高X和体重Y中找规律,再预测 •数学问题:用一条线来拟合身高和体重之间的关系,再对新数据进行预测 方程 Y = kX + b k160 + b = 56.3 – (1) k166 + b = 60.6 –- (2) 。。。。 k: 斜率 b:截距 若:y = 0.9 x + (-93) 0.9*176 +(-93)= ? 【理解】线性回归线性回归(Linear regression)是利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。 注意事项: 1 为什么叫线性模型?因为求解的w,都是w的零次幂(常数项)所以叫成线性模型 2 在线性回归中,从数据中获取的规律其实就是学习权重系数w 3 某...
KNN算法
KNN算法KNN算法简介【理解】KNN算法思想K-近邻算法(K Nearest Neighbor,简称KNN)。比如:根据你的“邻居”来推断出你的类别 KNN算法思想:如果一个样本在特征空间中的 k 个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别 思考:如何确定样本的相似性? 样本相似性:样本都是属于一个任务数据集的。样本距离越近则越相似。 利用K近邻算法预测电影类型 【知道】K值的选择 【知道】KNN的应用方式 解决问题:分类问题、回归问题 算法思想:若一个样本在特征空间中的 k 个最相似的样本大多数属于某一个类别,则该样本也属于这个类别 相似性:欧氏距离 分类问题的处理流程: 1.计算未知样本到每一个训练样本的距离 2.将训练样本根据距离大小升序排列 3.取出距离最近的 K 个训练样本 4.进行多数表决,统计 K 个样本中哪个类别的样本个数最多 5.将未知的样本归属到出现次数最多的类别 回归问题的处理流程: 1.计算未知样本到每一个训练样本的距离 2.将训练样本根据距离大小升序排列 3.取出距离最近的 K 个训练样本 ...
机器学习概述
机器学习概述人工智能三大概念【知道】人工智能 Artificial Intelligence 人工智能 释义 - 仿智; 像人一样机器智能的综合与分析;机器模拟人类 【知道】机器学习 Machine Learning 释义:机器学习 Field of study that gives computers the ability to learn without being explicitly programmed 释义:让机器自动学习,而不是基于规则的编程(不依赖特定规则编程) 人类识别车:根据车的特征归纳出车的规律;来了一个新的图片,判断预测是否是车 机器学习识别车: 从数据中获取规律;来了一个新的数据,产生一个新的预测 【知道】深度学习深度学习(DL, Deep Learning) : ,也叫深度神经网络,大脑仿生,设计一层一层的神经元模拟万事万物 【知道】三者之间的关系 机器学习是实现人工智能的一种途径 深度学习是机器学习的一种方法 【了解】学习方式【了解】基于规则的学习•基于规则的预测 : 程序员根据经验利用手工的if-else方式进行...
Matplotlib
一、Matplotlib简介1.1 什么是MatplotlibMatplotlib是Python中最常用的数据分析可视化库,可快速绘制各类静态、高质量的图表(如折线图、柱状图、散点图、直方图等),支持自定义图表样式、标签、颜色等细节,是数据分析中“数据呈现”的核心工具。 Matplotlib与NumPy、Pandas的关系: Matplotlib可直接接收NumPy数组和Pandas的Series、DataFrame数据,无需额外数据格式转换; Pandas的绘图功能(如df.plot())底层就是基于Matplotlib实现的,可快速生成基础图表; 三者协同使用,可完成“数据读取(Pandas)→ 数据处理(NumPy+Pandas)→ 数据可视化(Matplotlib)”的完整数据分析流程。 核心模块:matplotlib.pyplot(通常简写为plt),是绘制图表的主要接口,提供了简洁的函数式绘图方法。 1.2 安装Matplotlib使用pip命令安装,与NumPy、Pandas兼容,建议安装最新稳定版: 12345# 安装最新版本Matplotlibpi...
Pandas
一、Pandas简介1.1 什么是PandasPandas(Python Data Analysis Library)是基于NumPy开发的Python数据分析库,专门用于处理结构化数据(如表格数据、CSV文件、Excel文件等),提供了直观、高效的数据读取、清洗、筛选、分组、聚合等功能,是数据分析、数据挖掘的核心工具。 Pandas与NumPy的关系: Pandas基于NumPy实现,底层使用ndarray存储数据,继承了NumPy的高效运算能力; NumPy专注于多维数组运算,而Pandas专注于结构化数据处理,提供了更贴近实际业务的API; 两者协同使用,可高效完成从数据读取到分析的全流程。 核心数据结构:Series(一维结构化数据)、DataFrame(二维结构化数据,类似Excel表格)。 1.2 安装Pandas使用pip命令安装,建议同时安装openpyxl(用于读取Excel文件): 12345# 安装最新版本Pandas和openpyxlpip install pandas openpyxl# 安装指定版本(适配NumPy 1.24.3,避免版本...
Numpy
一、NumPy简介1.1 什么是NumPyNumPy(Numerical Python)是Python中用于科学计算的核心库,主要用于处理高维数组(ndarray),并提供了大量的数学函数、线性代数、傅里叶变换、随机数生成等功能,是Pandas、Matplotlib等数据分析工具的基础。 核心优势: 高效的数组运算:基于C语言实现,运算速度远快于Python原生列表 简洁的API:提供直观的函数,简化数据处理流程 多维度支持:轻松处理1维、2维及更高维度的数组 与其他库无缝衔接:是数据分析、机器学习的必备工具 1.2 安装NumPy使用pip命令安装(最常用): 12345# 安装最新版本pip install numpy# 安装指定版本(如1.24.3,适配多数数据分析环境)pip install numpy==1.24.3 验证安装是否成功: 12import numpy as npprint(np.__version__) # 输出版本号,如1.24.3即安装成功 二、NumPy核心:ndarray数组2.1 什么是ndarrayndarray(N-d...
LangChain4j之RAG
RAG (检索增强生成)LLM 的知识仅限于它已经训练过的数据。 如果你想让 LLM 了解特定领域的知识或专有数据,你可以: 使用 RAG,我们将在本节中介绍 用你的数据微调 LLM 结合 RAG 和微调 什么是 RAG?简单来说,RAG 是一种在发送给 LLM 之前,从你的数据中找到并注入相关信息片段到提示中的方法。 这样 LLM 将获得(希望是)相关信息,并能够使用这些信息回复, 这应该会降低产生幻觉的概率。 相关信息片段可以使用各种信息检索方法找到。 最流行的方法有: 全文(关键词)搜索。这种方法使用 TF-IDF 和 BM25 等技术, 通过匹配查询(例如,用户提问的内容)中的关键词与文档数据库进行搜索。 它根据每个文档中这些关键词的频率和相关性对结果进行排名。 向量搜索,也称为”语义搜索”。 文本文档使用嵌入模型转换为数字向量。 然后根据查询向量和文档向量之间的余弦相似度 或其他相似度/距离度量找到并排序文档, 从而捕捉更深层次的语义含义。 混合搜索。结合多种搜索方法(例如,全文 + 向量)通常可以提高搜索的有效性。 目前,本页主要关注向量搜索...
LangChain4j之函数调用
工具(函数调用)一些 LLM 除了生成文本外,还可以触发操作。 有一个被称为”工具”或”函数调用”的概念。 它允许 LLM 在必要时调用一个或多个可用的工具,通常由开发者定义。 工具可以是任何东西:网络搜索、调用外部 API 或执行特定代码片段等。 LLM 实际上不能自己调用工具;相反,它们在响应中表达调用特定工具的意图(而不是以纯文本形式响应)。 作为开发者,我们应该使用提供的参数执行这个工具,并将工具执行的结果反馈回来。 例如,我们知道 LLM 本身在数学计算方面并不擅长。 如果您的用例涉及偶尔的数学计算,您可能希望为 LLM 提供一个”数学工具”。 通过在请求中向 LLM 声明一个或多个工具, 如果它认为合适,它可以决定调用其中一个工具。 给定一个数学问题和一组数学工具,LLM 可能会决定为了正确回答问题, 它应该首先调用提供的数学工具之一。 让我们看看这在实践中是如何工作的(有工具和没有工具的情况): 没有工具的消息交换示例: 12345678请求:- 消息: - UserMessage: - 文本:475695037565 的平方根是多少?响应:...
LangChain4j之高阶api
AI Services到目前为止,我们一直在介绍底层组件,如 ChatLanguageModel、ChatMessage、ChatMemory 等。 在这个层面上工作非常灵活,给予您完全的自由,但也迫使您编写大量的样板代码。 由于 LLM 驱动的应用程序通常不仅需要单个组件,还需要多个组件协同工作 (例如,提示模板、聊天记忆、LLM、输出解析器、RAG 组件:嵌入模型和存储) 并且经常涉及多次交互,协调所有这些组件变得更加繁琐。 我们希望您专注于业务逻辑,而不是低级实现细节。 因此,LangChain4j 中目前有两个高级概念可以帮助您:AI 服务和链。 Chains (legacy)链的概念源自 Python 的 LangChain(在引入 LCEL 之前)。 其思想是为每个常见用例(如聊天机器人、RAG 等)提供一个 Chain。 链组合多个低级组件并协调它们之间的交互。 它们的主要问题是,如果您需要自定义某些内容,它们过于僵化。 LangChain4j 只实现了两个链(ConversationalChain 和 ConversationalRetrievalChain)...
LangChain4j之会话记忆
聊天记忆手动维护和管理ChatMessage是很麻烦的。 因此,LangChain4j提供了ChatMemory抽象以及多种开箱即用的实现。 ChatMemory可以作为独立的低级组件使用, 或者作为高级组件(如AI服务)的一部分。 ChatMemory作为ChatMessage的容器(由List支持),具有以下额外功能: 淘汰策略 持久化 对SystemMessage的特殊处理 对工具消息的特殊处理 记忆与历史请注意,”记忆”和”历史”是不同的概念。 历史保持用户和AI之间的所有消息完整无缺。历史是用户在UI中看到的内容。它代表实际对话内容。 记忆保存一些信息,这些信息呈现给LLM,使其表现得好像”记住”了对话。 记忆与历史有很大不同。根据使用的记忆算法,它可以以各种方式修改历史: 淘汰一些消息,总结多条消息,总结单独的消息,从消息中删除不重要的细节, 向消息中注入额外信息(例如,用于RAG)或指令(例如,用于结构化输出)等等。 LangChain4j目前只提供”记忆”,而不是”历史”。如果您需要保存完整的历史记录,请手动进行。 淘汰策略淘汰策略是必要的,原因如...