- Elasticsearch 指南其他版本
- 8.17 中的新功能
- Elasticsearch 基础
- 快速入门
- 设置 Elasticsearch
- 升级 Elasticsearch
- 索引模块
- 映射
- 文本分析
- 索引模板
- 数据流
- 摄取管道
- 别名
- 搜索您的数据
- 重新排名
- 查询 DSL
- 聚合
- 地理空间分析
- 连接器
- EQL
- ES|QL
- SQL
- 脚本
- 数据管理
- 自动缩放
- 监视集群
- 汇总或转换数据
- 设置高可用性集群
- 快照和还原
- 保护 Elastic Stack 的安全
- Watcher
- 命令行工具
- elasticsearch-certgen
- elasticsearch-certutil
- elasticsearch-create-enrollment-token
- elasticsearch-croneval
- elasticsearch-keystore
- elasticsearch-node
- elasticsearch-reconfigure-node
- elasticsearch-reset-password
- elasticsearch-saml-metadata
- elasticsearch-service-tokens
- elasticsearch-setup-passwords
- elasticsearch-shard
- elasticsearch-syskeygen
- elasticsearch-users
- 优化
- 故障排除
- 修复常见的集群问题
- 诊断未分配的分片
- 向系统中添加丢失的层
- 允许 Elasticsearch 在系统中分配数据
- 允许 Elasticsearch 分配索引
- 索引将索引分配过滤器与数据层节点角色混合,以在数据层之间移动
- 没有足够的节点来分配所有分片副本
- 单个节点上索引的分片总数已超过
- 每个节点的分片总数已达到
- 故障排除损坏
- 修复磁盘空间不足的数据节点
- 修复磁盘空间不足的主节点
- 修复磁盘空间不足的其他角色节点
- 启动索引生命周期管理
- 启动快照生命周期管理
- 从快照恢复
- 故障排除损坏的存储库
- 解决重复的快照策略失败问题
- 故障排除不稳定的集群
- 故障排除发现
- 故障排除监控
- 故障排除转换
- 故障排除 Watcher
- 故障排除搜索
- 故障排除分片容量健康问题
- 故障排除不平衡的集群
- 捕获诊断信息
- REST API
- API 约定
- 通用选项
- REST API 兼容性
- 自动缩放 API
- 行为分析 API
- 紧凑和对齐文本 (CAT) API
- 集群 API
- 跨集群复制 API
- 连接器 API
- 数据流 API
- 文档 API
- 丰富 API
- EQL API
- ES|QL API
- 功能 API
- Fleet API
- 图表探索 API
- 索引 API
- 别名是否存在
- 别名
- 分析
- 分析索引磁盘使用量
- 清除缓存
- 克隆索引
- 关闭索引
- 创建索引
- 创建或更新别名
- 创建或更新组件模板
- 创建或更新索引模板
- 创建或更新索引模板(旧版)
- 删除组件模板
- 删除悬挂索引
- 删除别名
- 删除索引
- 删除索引模板
- 删除索引模板(旧版)
- 存在
- 字段使用情况统计信息
- 刷新
- 强制合并
- 获取别名
- 获取组件模板
- 获取字段映射
- 获取索引
- 获取索引设置
- 获取索引模板
- 获取索引模板(旧版)
- 获取映射
- 导入悬挂索引
- 索引恢复
- 索引段
- 索引分片存储
- 索引统计信息
- 索引模板是否存在(旧版)
- 列出悬挂索引
- 打开索引
- 刷新
- 解析索引
- 解析集群
- 翻转
- 收缩索引
- 模拟索引
- 模拟模板
- 拆分索引
- 解冻索引
- 更新索引设置
- 更新映射
- 索引生命周期管理 API
- 推理 API
- 信息 API
- 摄取 API
- 许可 API
- Logstash API
- 机器学习 API
- 机器学习异常检测 API
- 机器学习数据帧分析 API
- 机器学习训练模型 API
- 迁移 API
- 节点生命周期 API
- 查询规则 API
- 重新加载搜索分析器 API
- 存储库计量 API
- 汇总 API
- 根 API
- 脚本 API
- 搜索 API
- 搜索应用程序 API
- 可搜索快照 API
- 安全 API
- 身份验证
- 更改密码
- 清除缓存
- 清除角色缓存
- 清除权限缓存
- 清除 API 密钥缓存
- 清除服务帐户令牌缓存
- 创建 API 密钥
- 创建或更新应用程序权限
- 创建或更新角色映射
- 创建或更新角色
- 批量创建或更新角色 API
- 批量删除角色 API
- 创建或更新用户
- 创建服务帐户令牌
- 委托 PKI 身份验证
- 删除应用程序权限
- 删除角色映射
- 删除角色
- 删除服务帐户令牌
- 删除用户
- 禁用用户
- 启用用户
- 注册 Kibana
- 注册节点
- 获取 API 密钥信息
- 获取应用程序权限
- 获取内置权限
- 获取角色映射
- 获取角色
- 查询角色
- 获取服务帐户
- 获取服务帐户凭据
- 获取安全设置
- 获取令牌
- 获取用户权限
- 获取用户
- 授予 API 密钥
- 具有权限
- 使 API 密钥失效
- 使令牌失效
- OpenID Connect 准备身份验证
- OpenID Connect 身份验证
- OpenID Connect 注销
- 查询 API 密钥信息
- 查询用户
- 更新 API 密钥
- 更新安全设置
- 批量更新 API 密钥
- SAML 准备身份验证
- SAML 身份验证
- SAML 注销
- SAML 失效
- SAML 完成注销
- SAML 服务提供商元数据
- SSL 证书
- 激活用户配置文件
- 禁用用户配置文件
- 启用用户配置文件
- 获取用户配置文件
- 建议用户配置文件
- 更新用户配置文件数据
- 具有用户配置文件权限
- 创建跨集群 API 密钥
- 更新跨集群 API 密钥
- 快照和还原 API
- 快照生命周期管理 API
- SQL API
- 同义词 API
- 文本结构 API
- 转换 API
- 使用情况 API
- Watcher API
- 定义
- 迁移指南
- 发行说明
- Elasticsearch 版本 8.17.0
- Elasticsearch 版本 8.16.1
- Elasticsearch 版本 8.16.0
- Elasticsearch 版本 8.15.5
- Elasticsearch 版本 8.15.4
- Elasticsearch 版本 8.15.3
- Elasticsearch 版本 8.15.2
- Elasticsearch 版本 8.15.1
- Elasticsearch 版本 8.15.0
- Elasticsearch 版本 8.14.3
- Elasticsearch 版本 8.14.2
- Elasticsearch 版本 8.14.1
- Elasticsearch 版本 8.14.0
- Elasticsearch 版本 8.13.4
- Elasticsearch 版本 8.13.3
- Elasticsearch 版本 8.13.2
- Elasticsearch 版本 8.13.1
- Elasticsearch 版本 8.13.0
- Elasticsearch 版本 8.12.2
- Elasticsearch 版本 8.12.1
- Elasticsearch 版本 8.12.0
- Elasticsearch 版本 8.11.4
- Elasticsearch 版本 8.11.3
- Elasticsearch 版本 8.11.2
- Elasticsearch 版本 8.11.1
- Elasticsearch 版本 8.11.0
- Elasticsearch 版本 8.10.4
- Elasticsearch 版本 8.10.3
- Elasticsearch 版本 8.10.2
- Elasticsearch 版本 8.10.1
- Elasticsearch 版本 8.10.0
- Elasticsearch 版本 8.9.2
- Elasticsearch 版本 8.9.1
- Elasticsearch 版本 8.9.0
- Elasticsearch 版本 8.8.2
- Elasticsearch 版本 8.8.1
- Elasticsearch 版本 8.8.0
- Elasticsearch 版本 8.7.1
- Elasticsearch 版本 8.7.0
- Elasticsearch 版本 8.6.2
- Elasticsearch 版本 8.6.1
- Elasticsearch 版本 8.6.0
- Elasticsearch 版本 8.5.3
- Elasticsearch 版本 8.5.2
- Elasticsearch 版本 8.5.1
- Elasticsearch 版本 8.5.0
- Elasticsearch 版本 8.4.3
- Elasticsearch 版本 8.4.2
- Elasticsearch 版本 8.4.1
- Elasticsearch 版本 8.4.0
- Elasticsearch 版本 8.3.3
- Elasticsearch 版本 8.3.2
- Elasticsearch 版本 8.3.1
- Elasticsearch 版本 8.3.0
- Elasticsearch 版本 8.2.3
- Elasticsearch 版本 8.2.2
- Elasticsearch 版本 8.2.1
- Elasticsearch 版本 8.2.0
- Elasticsearch 版本 8.1.3
- Elasticsearch 版本 8.1.2
- Elasticsearch 版本 8.1.1
- Elasticsearch 版本 8.1.0
- Elasticsearch 版本 8.0.1
- Elasticsearch 版本 8.0.0
- Elasticsearch 版本 8.0.0-rc2
- Elasticsearch 版本 8.0.0-rc1
- Elasticsearch 版本 8.0.0-beta1
- Elasticsearch 版本 8.0.0-alpha2
- Elasticsearch 版本 8.0.0-alpha1
- 依赖项和版本
评估数据框分析 API
编辑评估数据框分析 API
编辑评估带注释索引的数据框分析。
请求
编辑POST _ml/data_frame/_evaluate
描述
编辑该 API 将各种类型机器学习功能的常用评估指标打包在一起。它被设计用于数据框分析创建的索引。评估需要同时存在真实值字段和分析结果字段。
请求主体
编辑数据框分析评估资源
编辑异常值检测评估对象
编辑异常值检测评估异常值检测分析的结果,该分析输出每个文档是异常值的概率。
-
actual_field
- (必需,字符串)
index
中包含真实值
的字段。此字段的数据类型可以是布尔值或整数。如果数据类型是整数,则该值必须为0
(false) 或1
(true)。 -
predicted_probability_field
- (必需,字符串)
index
中定义项目是否属于相关类的概率的字段。它是包含分析结果的字段。 -
metrics
-
(可选,对象)指定用于评估的指标。如果未指定任何指标,则默认返回以下指标
-
auc_roc
(include_curve
: false), -
precision
(at
: [0.25, 0.5, 0.75]), -
recall
(at
: [0.25, 0.5, 0.75]), -
confusion_matrix
(at
: [0.25, 0.5, 0.75]).-
auc_roc
- (可选,对象)AUC ROC(接收器操作特性曲线下的面积)得分,以及可选的曲线。默认值为 {"include_curve": false}。
-
confusion_matrix
- (可选,对象)设置计算指标(
tp
- 真阳性,fp
- 假阳性,tn
- 真阴性,fn
- 假阴性)的异常值分数不同阈值。默认值为 {"at": [0.25, 0.50, 0.75]}。 -
precision
- (可选,对象)设置计算指标的异常值分数不同阈值。默认值为 {"at": [0.25, 0.50, 0.75]}。
-
recall
- (可选,对象)设置计算指标的异常值分数不同阈值。默认值为 {"at": [0.25, 0.50, 0.75]}。
-
-
回归评估对象
编辑回归评估评估回归分析的结果,该分析输出值的预测。
-
actual_field
- (必需,字符串)
index
中包含真实值
的字段。此字段的数据类型必须是数值。 -
predicted_field
- (必需,字符串)
index
中包含预测值的字段,换句话说,是回归分析的结果。 -
metrics
-
(可选,对象)指定用于评估的指标。有关
mse
、msle
和huber
的更多信息,请查阅 关于回归损失函数的 Jupyter 笔记本。如果未指定任何指标,则默认返回以下指标-
mse
, -
r_squared
, -
huber
(delta
: 1.0).-
mse
- (可选,对象)预测值与实际(
真实值
)值之间的平均平方差。有关更多信息,请阅读 此维基文章。 -
msle
-
(可选,对象)预测值的对数与实际(
真实值
)值的对数之间的平均平方差。-
offset
- (可选,双精度浮点数)定义从最小化二次误差切换到最小化二次对数误差的过渡点。默认为
1
。
-
-
huber
-
(可选,对象)伪 Huber 损失函数。有关更多信息,请阅读 此维基文章。
-
delta
- (可选,双精度浮点数)对于远小于 delta 的值,近似为 1/2 (prediction - actual)2,对于远大于 delta 的值,近似为斜率为 delta 的直线。默认为
1
。Delta 必须大于0
。
-
-
r_squared
- (可选,对象)可从自变量预测的因变量方差的比例。有关更多信息,请阅读 此维基文章。
-
-
分类评估对象
编辑分类评估评估分类分析的结果,该分析输出一个预测,标识每个文档属于哪个类。
-
actual_field
- (必需,字符串)
index
中包含真实值
的字段。此字段的数据类型必须是类别。 -
predicted_field
- (可选,字符串)
index
中包含预测值的字段,换句话说,是分类分析的结果。 -
top_classes_field
- (可选,字符串)
index
的字段,该字段是形式为{ "class_name": XXX, "class_probability": YYY }
的文档数组。此字段必须在映射中定义为nested
。 -
metrics
-
(可选,对象)指定用于评估的指标。如果未指定任何指标,则默认返回以下指标
-
accuracy
, -
multiclass_confusion_matrix
, -
precision
, -
recall
.-
accuracy
- (可选,对象)预测的准确性(每个类和总体)。
-
auc_roc
-
(可选,对象)AUC ROC(接收器操作特性曲线下的面积)得分,以及可选的曲线。它是针对特定类(提供为“class_name”)作为正类计算的。
-
class_name
- (必需,字符串)在 AUC ROC 计算期间被视为正类的唯一类的名称。其他类被视为负类(“一对多”策略)。所有被评估的文档的顶级类列表中都必须包含
class_name
。 -
include_curve
- (可选,布尔值)是否应返回曲线以及得分。默认值为 false。
-
-
multiclass_confusion_matrix
-
(可选,对象)多类混淆矩阵。
-
size
- (可选,双精度浮点数)指定多类混淆矩阵的大小。默认为
10
,这将生成一个大小为 10x10 的矩阵。
-
-
precision
- (可选,对象)预测的精度(每个类和平均值)。
-
recall
- (可选,对象)预测的召回率(每个类和平均值)。
-
-
示例
编辑异常值检测
编辑resp = client.ml.evaluate_data_frame( index="my_analytics_dest_index", evaluation={ "outlier_detection": { "actual_field": "is_outlier", "predicted_probability_field": "ml.outlier_score" } }, ) print(resp)
response = client.ml.evaluate_data_frame( body: { index: 'my_analytics_dest_index', evaluation: { outlier_detection: { actual_field: 'is_outlier', predicted_probability_field: 'ml.outlier_score' } } } ) puts response
const response = await client.ml.evaluateDataFrame({ index: "my_analytics_dest_index", evaluation: { outlier_detection: { actual_field: "is_outlier", predicted_probability_field: "ml.outlier_score", }, }, }); console.log(response);
POST _ml/data_frame/_evaluate { "index": "my_analytics_dest_index", "evaluation": { "outlier_detection": { "actual_field": "is_outlier", "predicted_probability_field": "ml.outlier_score" } } }
该 API 返回以下结果
{ "outlier_detection": { "auc_roc": { "value": 0.92584757746414444 }, "confusion_matrix": { "0.25": { "tp": 5, "fp": 9, "tn": 204, "fn": 5 }, "0.5": { "tp": 1, "fp": 5, "tn": 208, "fn": 9 }, "0.75": { "tp": 0, "fp": 4, "tn": 209, "fn": 10 } }, "precision": { "0.25": 0.35714285714285715, "0.5": 0.16666666666666666, "0.75": 0 }, "recall": { "0.25": 0.5, "0.5": 0.1, "0.75": 0 } } }
回归
编辑resp = client.ml.evaluate_data_frame( index="house_price_predictions", query={ "bool": { "filter": [ { "term": { "ml.is_training": False } } ] } }, evaluation={ "regression": { "actual_field": "price", "predicted_field": "ml.price_prediction", "metrics": { "r_squared": {}, "mse": {}, "msle": { "offset": 10 }, "huber": { "delta": 1.5 } } } }, ) print(resp)
response = client.ml.evaluate_data_frame( body: { index: 'house_price_predictions', query: { bool: { filter: [ { term: { 'ml.is_training' => false } } ] } }, evaluation: { regression: { actual_field: 'price', predicted_field: 'ml.price_prediction', metrics: { r_squared: {}, mse: {}, msle: { offset: 10 }, huber: { delta: 1.5 } } } } } ) puts response
const response = await client.ml.evaluateDataFrame({ index: "house_price_predictions", query: { bool: { filter: [ { term: { "ml.is_training": false, }, }, ], }, }, evaluation: { regression: { actual_field: "price", predicted_field: "ml.price_prediction", metrics: { r_squared: {}, mse: {}, msle: { offset: 10, }, huber: { delta: 1.5, }, }, }, }, }); console.log(response);
POST _ml/data_frame/_evaluate { "index": "house_price_predictions", "query": { "bool": { "filter": [ { "term": { "ml.is_training": false } } ] } }, "evaluation": { "regression": { "actual_field": "price", "predicted_field": "ml.price_prediction", "metrics": { "r_squared": {}, "mse": {}, "msle": {"offset": 10}, "huber": {"delta": 1.5} } } } }
数据框分析回归分析的输出目标索引。 |
|
在此示例中,为回归分析定义了测试/训练拆分( |
|
实际房价的真实值。这是评估结果所必需的。 |
|
回归分析计算出的房价的预测值。 |
以下示例计算训练误差
resp = client.ml.evaluate_data_frame( index="student_performance_mathematics_reg", query={ "term": { "ml.is_training": { "value": True } } }, evaluation={ "regression": { "actual_field": "G3", "predicted_field": "ml.G3_prediction", "metrics": { "r_squared": {}, "mse": {}, "msle": {}, "huber": {} } } }, ) print(resp)
response = client.ml.evaluate_data_frame( body: { index: 'student_performance_mathematics_reg', query: { term: { 'ml.is_training' => { value: true } } }, evaluation: { regression: { actual_field: 'G3', predicted_field: 'ml.G3_prediction', metrics: { r_squared: {}, mse: {}, msle: {}, huber: {} } } } } ) puts response
const response = await client.ml.evaluateDataFrame({ index: "student_performance_mathematics_reg", query: { term: { "ml.is_training": { value: true, }, }, }, evaluation: { regression: { actual_field: "G3", predicted_field: "ml.G3_prediction", metrics: { r_squared: {}, mse: {}, msle: {}, huber: {}, }, }, }, }); console.log(response);
POST _ml/data_frame/_evaluate { "index": "student_performance_mathematics_reg", "query": { "term": { "ml.is_training": { "value": true } } }, "evaluation": { "regression": { "actual_field": "G3", "predicted_field": "ml.G3_prediction", "metrics": { "r_squared": {}, "mse": {}, "msle": {}, "huber": {} } } } }
在此示例中,为回归分析定义了测试/训练拆分( |
|
包含学生实际表现的真实值的字段。这是评估结果所必需的。 |
|
包含回归分析计算出的学生表现预测值的字段。 |
下一个示例计算测试误差。与上一个示例相比,唯一的区别是这次将 ml.is_training
设置为 false
,因此查询将训练拆分排除在评估之外。
resp = client.ml.evaluate_data_frame( index="student_performance_mathematics_reg", query={ "term": { "ml.is_training": { "value": False } } }, evaluation={ "regression": { "actual_field": "G3", "predicted_field": "ml.G3_prediction", "metrics": { "r_squared": {}, "mse": {}, "msle": {}, "huber": {} } } }, ) print(resp)
response = client.ml.evaluate_data_frame( body: { index: 'student_performance_mathematics_reg', query: { term: { 'ml.is_training' => { value: false } } }, evaluation: { regression: { actual_field: 'G3', predicted_field: 'ml.G3_prediction', metrics: { r_squared: {}, mse: {}, msle: {}, huber: {} } } } } ) puts response
const response = await client.ml.evaluateDataFrame({ index: "student_performance_mathematics_reg", query: { term: { "ml.is_training": { value: false, }, }, }, evaluation: { regression: { actual_field: "G3", predicted_field: "ml.G3_prediction", metrics: { r_squared: {}, mse: {}, msle: {}, huber: {}, }, }, }, }); console.log(response);
POST _ml/data_frame/_evaluate { "index": "student_performance_mathematics_reg", "query": { "term": { "ml.is_training": { "value": false } } }, "evaluation": { "regression": { "actual_field": "G3", "predicted_field": "ml.G3_prediction", "metrics": { "r_squared": {}, "mse": {}, "msle": {}, "huber": {} } } } }
分类
编辑resp = client.ml.evaluate_data_frame( index="animal_classification", evaluation={ "classification": { "actual_field": "animal_class", "predicted_field": "ml.animal_class_prediction", "metrics": { "multiclass_confusion_matrix": {} } } }, ) print(resp)
response = client.ml.evaluate_data_frame( body: { index: 'animal_classification', evaluation: { classification: { actual_field: 'animal_class', predicted_field: 'ml.animal_class_prediction', metrics: { multiclass_confusion_matrix: {} } } } } ) puts response
const response = await client.ml.evaluateDataFrame({ index: "animal_classification", evaluation: { classification: { actual_field: "animal_class", predicted_field: "ml.animal_class_prediction", metrics: { multiclass_confusion_matrix: {}, }, }, }, }); console.log(response);
POST _ml/data_frame/_evaluate { "index": "animal_classification", "evaluation": { "classification": { "actual_field": "animal_class", "predicted_field": "ml.animal_class_prediction", "metrics": { "multiclass_confusion_matrix" : {} } } } }
API 返回以下结果
{ "classification" : { "multiclass_confusion_matrix" : { "confusion_matrix" : [ { "actual_class" : "cat", "actual_class_doc_count" : 12, "predicted_classes" : [ { "predicted_class" : "cat", "count" : 12 }, { "predicted_class" : "dog", "count" : 0 } ], "other_predicted_class_doc_count" : 0 }, { "actual_class" : "dog", "actual_class_doc_count" : 11, "predicted_classes" : [ { "predicted_class" : "dog", "count" : 7 }, { "predicted_class" : "cat", "count" : 4 } ], "other_predicted_class_doc_count" : 0 } ], "other_actual_class_count" : 0 } } }
分析尝试预测的实际类别名称。 |
|
索引中属于 |
|
此对象包含预测类别列表以及与该类别关联的预测数量。 |
|
数据集中被正确识别为猫的猫的数量。 |
|
数据集中被错误分类为狗的猫的数量。 |
|
被分类为未在 |
resp = client.ml.evaluate_data_frame( index="animal_classification", evaluation={ "classification": { "actual_field": "animal_class", "metrics": { "auc_roc": { "class_name": "dog" } } } }, ) print(resp)
response = client.ml.evaluate_data_frame( body: { index: 'animal_classification', evaluation: { classification: { actual_field: 'animal_class', metrics: { auc_roc: { class_name: 'dog' } } } } } ) puts response
const response = await client.ml.evaluateDataFrame({ index: "animal_classification", evaluation: { classification: { actual_field: "animal_class", metrics: { auc_roc: { class_name: "dog", }, }, }, }, }); console.log(response);
POST _ml/data_frame/_evaluate { "index": "animal_classification", "evaluation": { "classification": { "actual_field": "animal_class", "metrics": { "auc_roc" : { "class_name": "dog" } } } } }
API 返回以下结果
{ "classification" : { "auc_roc" : { "value" : 0.8941788639536681 } } }