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

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

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

在当今的数据环境中,企业遇到了许多不同的挑战。其中之一是在所有消费者可用的统一和协调的数据层之上进行分析。可以为相同问题提供相同答案的层,与所使用的方言或工具无关。
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]删除
最新教程 更多>
  • 如何高效地在一个事务中插入数据到多个MySQL表?
    如何高效地在一个事务中插入数据到多个MySQL表?
    mySQL插入到多个表中,该数据可能会产生意外的结果。虽然似乎有多个查询可以解决问题,但将从用户表的自动信息ID与配置文件表的手动用户ID相关联提出了挑战。使用Transactions和last_insert_id() 插入用户(用户名,密码)值('test','test...
    编程 发布于2025-04-27
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mySQL组使用mySQL组进行查询结果,在关系数据库中使用MySQL组,转移数据的数据是指重新排列的行和列的重排以增强数据可视化。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的转换为基于列。让我们考虑以下查询: select data d.data_ti...
    编程 发布于2025-04-27
  • 如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    为有效的slug生成首先,该函数用指定的分隔符替换所有非字母或数字字符。此步骤可确保slug遵守URL惯例。随后,它采用ICONV函数将文本简化为us-ascii兼容格式,从而允许更广泛的字符集合兼容性。接下来,该函数使用正则表达式删除了不需要的字符,例如特殊字符和空格。此步骤可确保slug仅包含...
    编程 发布于2025-04-27
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样,如何?答案:是的,可以将您的Encryption库从McRypt升级到OpenSSL。可以使用openssl。附加说明: [openssl_decrypt()函数要求iv参...
    编程 发布于2025-04-27
  • 如何在JavaScript对象中动态设置键?
    如何在JavaScript对象中动态设置键?
    在尝试为JavaScript对象创建动态键时,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正确的方法采用方括号: jsobj ['key''i] ='example'1; 在JavaScript中,数组是一...
    编程 发布于2025-04-27
  • 如何在Java的全屏独家模式下处理用户输入?
    如何在Java的全屏独家模式下处理用户输入?
    Handling User Input in Full Screen Exclusive Mode in JavaIntroductionWhen running a Java application in full screen exclusive mode, the usual event ha...
    编程 发布于2025-04-27
  • 如何使用“ JSON”软件包解析JSON阵列?
    如何使用“ JSON”软件包解析JSON阵列?
    parsing JSON与JSON软件包 QUALDALS:考虑以下go代码:字符串 } func main(){ datajson:=`[“ 1”,“ 2”,“ 3”]`` arr:= jsontype {} 摘要:= = json.unmarshal([] byte(...
    编程 发布于2025-04-27
  • \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    答案: 在大多数现代编译器中,while(1)和(1)和(;;)之间没有性能差异。编译器: perl: 1 输入 - > 2 2 NextState(Main 2 -E:1)V-> 3 9 Leaveloop VK/2-> A 3 toterloop(next-> 8 last-> 9 ...
    编程 发布于2025-04-27
  • 如何在其容器中为DIV创建平滑的左右CSS动画?
    如何在其容器中为DIV创建平滑的左右CSS动画?
    通用CSS动画,用于左右运动 ,我们将探索创建一个通用的CSS动画,以向左和右移动DIV,从而到达其容器的边缘。该动画可以应用于具有绝对定位的任何div,无论其未知长度如何。问题:使用左直接导致瞬时消失 更加流畅的解决方案:混合转换和左 [并实现平稳的,线性的运动,我们介绍了线性的转换。这...
    编程 发布于2025-04-27
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-04-27
  • Python读取CSV文件UnicodeDecodeError终极解决方法
    Python读取CSV文件UnicodeDecodeError终极解决方法
    在试图使用已内置的CSV模块读取Python中时,CSV文件中的Unicode Decode Decode Decode Decode decode Error读取,您可能会遇到错误的错误:无法解码字节 在位置2-3中:截断\ uxxxxxxxx逃脱当CSV文件包含特殊字符或Unicode的路径逃...
    编程 发布于2025-04-27
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案: args)抛出异常{ 日历cal = calendar.getInstance(); SimpleDateFormat SDF =新的SimpleDateFormat(“...
    编程 发布于2025-04-27
  • 如何避免Go语言切片时的内存泄漏?
    如何避免Go语言切片时的内存泄漏?
    ,a [j:] ...虽然通常有效,但如果使用指针,可能会导致内存泄漏。这是因为原始的备份阵列保持完整,这意味着新切片外部指针引用的任何对象仍然可能占据内存。 copy(a [i:] 对于k,n:= len(a)-j i,len(a); k
    编程 发布于2025-04-27
  • 在Java中如何为PNG文件添加坐标轴和标签?
    在Java中如何为PNG文件添加坐标轴和标签?
    如何用java 在现有png映像中添加轴和标签的axes和labels如何注释png文件可能具有挑战性。与其尝试可能导致错误和不一致的修改,不如建议在图表创建过程中集成注释。使用JFReechArt import java.awt.color; 导入java.awt.eventqueue; 导入...
    编程 发布于2025-04-27
  • 为什么不使用CSS`content'属性显示图像?
    为什么不使用CSS`content'属性显示图像?
    在Firefox extemers属性为某些图像很大,&& && && &&华倍华倍[华氏华倍华氏度]很少见,却是某些浏览属性很少,尤其是特定于Firefox的某些浏览器未能在使用内容属性引用时未能显示图像的情况。这可以在提供的CSS类中看到:。googlepic { 内容:url(&#...
    编程 发布于2025-04-27

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

Copyright© 2022 湘ICP备2022001581号-3