”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 将 AI/ML 与您的自适应分析解决方案连接起来

将 AI/ML 与您的自适应分析解决方案连接起来

发布于2024-11-03
浏览:309

在当今的数据环境中,企业遇到了许多不同的挑战。其中之一是在所有消费者可用的统一和协调的数据层之上进行分析。可以为相同问题提供相同答案的层,与所使用的方言或工具无关。
InterSystems IRIS 数据平台通过自适应分析附加功能来解决这个问题,该分析可以提供统一的语义层。 DevCommunity 中有很多关于通过 BI 工具使用它的文章。本文将介绍如何通过人工智能使用它以及如何将一些见解带回来。
让我们一步一步来吧……

什么是自适应分析?

您可以在开发者社区网站轻松找到一些定义
简而言之,它可以将结构化和统一形式的数据传输到您选择的各种工具,以供进一步使用和分析。它为各种 BI 工具提供相同的数据结构。但是...它还可以向您的 AI/ML 工具提供相同的数据结构!

自适应分析有一个名为 AI-Link 的附加组件,可以构建从 AI 到 BI 的桥梁。

AI-Link到底是什么?

它是一个 Python 组件,旨在实现与语义层的编程交互,以简化机器学习 (ML) 工作流程的关键阶段(例如特征工程)。

通过 AI-Link,您可以:

  • 以编程方式访问分析数据模型的功能;
  • 进行查询,探索维度和度量;
  • 提供 ML 管道; ...并将结果传递回您的语义层以供其他人再次使用(例如通过 Tableau 或 Excel)。

由于这是一个Python库,因此它可以在任何Python环境中使用。包括笔记本。
在本文中,我将给出一个在 AI-Link 的帮助下从 Jupyter Notebook 实现自适应分析解决方案的简单示例。

这是 git 存储库,其中包含完整的笔记本作为示例:https://github.com/v23ent/aa-hands-on

先决条件

后续步骤假设您已完成以下先决条件:

  1. 自适应分析解决方案启动并运行(使用 IRIS 数据平台作为数据仓库)
  2. Jupyter Notebook 启动并运行
  3. 1.和2.之间可以建立连接

第 1 步:设置

首先,让我们在我们的环境中安装所需的组件。这将下载进一步工作所需的一些软件包。
'atscale' - 这是我们连接的主要包
'prophet' - 我们需要进行预测的包

pip install atscale prophet

然后我们需要导入代表语义层的一些关键概念的关键类。
客户端 - 我们将用来建立与自适应分析的连接的类;
Project - 代表自适应分析中的项目的类;
DataModel - 代表我们的虚拟多维数据集的类;

from atscale.client import Client
from atscale.data_model import DataModel
from atscale.project import Project
from prophet import Prophet
import pandas as pd 

第 2 步:连接

现在我们应该准备好建立与数据源的连接。

client = Client(server='http://adaptive.analytics.server', username='sample')
client.connect()

继续指定您的 Adaptive Analytics 实例的连接详细信息。一旦系统要求您提供组织,请在对话框中做出回应,然后输入您在 AtScale 实例中的密码。

建立连接后,您需要从服务器上发布的项目列表中选择您的项目。您将获得项目列表作为交互式提示,答案应该是项目的整数 ID。如果数据模型是唯一的,则自动选择数据模型。

project = client.select_project()   
data_model = project.select_data_model()

第 3 步:探索您的数据集

AI-Link组件库中AtScale准备了多种方法。它们允许探索您拥有的数据目录、查询数据,甚至提取一些数据。 AtScale 文档包含广泛的 API 参考,描述了所有可用的内容。
我们首先通过调用data_model的几个方法来看看我们的数据集是什么:

data_model.get_features()
data_model.get_all_categorical_feature_names()
data_model.get_all_numeric_feature_names()

输出应如下所示

Bridge AI/ML with your Adaptive Analytics solution

一旦我们环顾四周,我们就可以使用“get_data”方法查询我们感兴趣的实际数据。它将返回一个包含查询结果的 pandas DataFrame。

df = data_model.get_data(feature_list = ['Country','Region','m_AmountOfSale_sum'])
df = df.sort_values(by='m_AmountOfSale_sum')
df.head()

这将显示您的数据集:

Bridge AI/ML with your Adaptive Analytics solution

让我们准备一些数据集并快速将其显示在图表上

import matplotlib.pyplot as plt

# We're taking sales for each date
dataframe = data_model.get_data(feature_list = ['Date','m_AmountOfSale_sum'])

# Create a line chart
plt.plot(dataframe['Date'], dataframe['m_AmountOfSale_sum'])

# Add labels and a title
plt.xlabel('Days')
plt.ylabel('Sales')
plt.title('Daily Sales Data')

# Display the chart
plt.show()

输出:

Bridge AI/ML with your Adaptive Analytics solution

第四步:预测

下一步是真正从 AI-Link 桥中获得一些价值 - 让我们做一些简单的预测!

# Load the historical data to train the model
data_train = data_model.get_data(
    feature_list = ['Date','m_AmountOfSale_sum'],
    filter_less = {'Date':'2021-01-01'}
    )
data_test = data_model.get_data(
    feature_list = ['Date','m_AmountOfSale_sum'],
    filter_greater = {'Date':'2021-01-01'}
    )

我们在这里得到 2 个不同的数据集:训练我们的模型并测试它。

# For the tool we've chosen to do the prediction 'Prophet', we'll need to specify 2 columns: 'ds' and 'y'
data_train['ds'] = pd.to_datetime(data_train['Date'])
data_train.rename(columns={'m_AmountOfSale_sum': 'y'}, inplace=True)
data_test['ds'] = pd.to_datetime(data_test['Date'])
data_test.rename(columns={'m_AmountOfSale_sum': 'y'}, inplace=True)

# Initialize and fit the Prophet model
model = Prophet()
model.fit(data_train)

然后我们创建另一个数据框来容纳我们的预测并将其显示在图表上

# Create a future dataframe for forecasting
future = pd.DataFrame()
future['ds'] = pd.date_range(start='2021-01-01', end='2021-12-31', freq='D')

# Make predictions
forecast = model.predict(future)
fig = model.plot(forecast)
fig.show()

输出:

Bridge AI/ML with your Adaptive Analytics solution

第五步:写回

一旦我们做出了预测,我们就可以将其放回数据仓库,并将聚合添加到我们的语义模型中,以反映给其他消费者。 BI 分析师和业务用户可以通过任何其他 BI 工具进行预测。
预测本身将被放入我们的数据仓库并存储在那里。

from atscale.db.connections import Iris
db = Iris(
username,
host,
namespace,
driver,
schema,
port=1972,
password=None,
warehouse_id=None
)

data_model.writeback(dbconn=db,
table_name= 'SalesPrediction',
DataFrame = forecast)

data_model.create_aggregate_feature(dataset_name='SalesPrediction',
column_name='SalesForecasted',
name='sum_sales_forecasted',
aggregation_type='SUM')





就是这样!
祝您预测顺利!

版本声明 本文转载于:https://dev.to/intersystems/bridge-aiml-with-your-adaptive-analytics-solution-24d3?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使用Regex在PHP中有效地提取括号内的文本
    如何使用Regex在PHP中有效地提取括号内的文本
    php:在括号内提取文本在处理括号内的文本时,找到最有效的解决方案是必不可少的。一种方法是利用PHP的字符串操作函数,如下所示: 作为替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式来搜索特...
    编程 发布于2025-04-05
  • 如何有效地选择熊猫数据框中的列?
    如何有效地选择熊猫数据框中的列?
    在处理数据操作任务时,在Pandas DataFrames 中选择列时,选择特定列的必要条件是必要的。在Pandas中,选择列的各种选项。选项1:使用列名 如果已知列索引,请使用ILOC函数选择它们。请注意,python索引基于零。 df1 = df.iloc [:,0:2]#使用索引0和1 c...
    编程 发布于2025-04-05
  • 为什么使用Firefox后退按钮时JavaScript执行停止?
    为什么使用Firefox后退按钮时JavaScript执行停止?
    导航历史记录问题:JavaScript使用Firefox Back Back 此行为是由浏览器缓存JavaScript资源引起的。要解决此问题并确保在后续页面访问中执行脚本,Firefox用户应设置一个空功能。 警报'); }; alert('inline Alert')...
    编程 发布于2025-04-05
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-04-05
  • 为什么我的CSS背景图像出现?
    为什么我的CSS背景图像出现?
    故障排除:CSS背景图像未出现 ,您的背景图像尽管遵循教程说明,但您的背景图像仍未加载。图像和样式表位于相同的目录中,但背景仍然是空白的白色帆布。而不是不弃用的,您已经使用了CSS样式: bockent {背景:封闭图像文件名:背景图:url(nickcage.jpg); 如果您的html,css...
    编程 发布于2025-04-05
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mySQL组使用mySQL组进行查询结果,在关系数据库中使用MySQL组,转移数据的数据是指重新排列的行和列的重排以增强数据可视化。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的转换为基于列。 Let's consider the following ...
    编程 发布于2025-04-05
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-04-05
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 但是,PHP工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地重新定义函数。 runkit_function_renction_re...
    编程 发布于2025-04-05
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-04-05
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php $xml = simplexml_load_file($file); foreach ($xml->Var[0]->attributes() as $attributeName => $attributeValue) { echo $attributeName,...
    编程 发布于2025-04-05
  • 如何在无序集合中为元组实现通用哈希功能?
    如何在无序集合中为元组实现通用哈希功能?
    在未订购的集合中的元素要纠正此问题,一种方法是手动为特定元组类型定义哈希函数,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    编程 发布于2025-04-05
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-04-05
  • 哪种在JavaScript中声明多个变量的方法更可维护?
    哪种在JavaScript中声明多个变量的方法更可维护?
    在JavaScript中声明多个变量:探索两个方法在JavaScript中,开发人员经常遇到需要声明多个变量的需要。对此的两种常见方法是:在单独的行上声明每个变量: 当涉及性能时,这两种方法本质上都是等效的。但是,可维护性可能会有所不同。 第一个方法被认为更易于维护。每个声明都是其自己的语句,使其...
    编程 发布于2025-04-05
  • 如何将来自三个MySQL表的数据组合到新表中?
    如何将来自三个MySQL表的数据组合到新表中?
    mysql:从三个表和列的新表创建新表 答案:为了实现这一目标,您可以利用一个3-way Join。 选择p。*,d.content作为年龄 来自人为p的人 加入d.person_id = p.id上的d的详细信息 加入T.Id = d.detail_id的分类法 其中t.taxonomy =...
    编程 发布于2025-04-05
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-04-05

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3