首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将kfp神器与雪橇结合使用?

如何将kfp神器与雪橇结合使用?
EN

Stack Overflow用户
提问于 2021-11-15 16:10:03
回答 1查看 484关注 0票数 0

我试图在顶点AI (Google )内部开发一个带有kubeflow管道(kfp)组件的定制管道。管道的步骤如下:

DataFrame

  • use
  1. 从一个大的查询表中读取数据
  2. 创建一个熊猫
  3. DataFrame来训练K-Means模型
  4. 将模型部署到端点

下面是步骤2的代码,我必须使用Output[Artifact]作为输出,因为我发现pd.DataFrame类型here不工作。

代码语言:javascript
复制
@component(base_image="python:3.9", packages_to_install=["google-cloud-bigquery","pandas","pyarrow"])
def create_dataframe(
    project: str,
    region: str,
    destination_dataset: str,
    destination_table_name: str,
    df: Output[Artifact],
):
    
    from google.cloud import bigquery
    
    client = bigquery.Client(project=project, location=region)
    dataset_ref = bigquery.DatasetReference(project, destination_dataset)
    table_ref = dataset_ref.table(destination_table_name)
    table = client.get_table(table_ref)

    df = client.list_rows(table).to_dataframe()

在这里,步骤3的代码:

代码语言:javascript
复制
@component(base_image="python:3.9", packages_to_install=['sklearn'])
def kmeans_training(
        dataset: Input[Artifact],
        model: Output[Model],
        num_clusters: int,
):
    from sklearn.cluster import KMeans
    model = KMeans(num_clusters, random_state=220417)
    model.fit(dataset)

由于以下错误,管道的运行将停止:

代码语言:javascript
复制
TypeError: float() argument must be a string or a number, not 'Artifact'

是否可以将艺术品转换为numpy arrayDataframe

EN

回答 1

Stack Overflow用户

发布于 2021-11-17 10:40:34

我找到了一个使用以下代码的解决方案。现在,我能够用步骤2的输出在步骤3中训练模型。

第2步:

代码语言:javascript
复制
@component(base_image="python:3.9", packages_to_install=["google-cloud-bigquery","pandas","pyarrow"])
def create_dataframe(
    project: str,
    region: str,
    destination_dataset: str,
    destination_table_name: str,
    df: Output[Dataset],
):
    
    from google.cloud import bigquery
    
    client = bigquery.Client(project=project, location=region)
    dataset_ref = bigquery.DatasetReference(project, destination_dataset)
    table_ref = dataset_ref.table(destination_table_name)
    table = client.get_table(table_ref)

    train = client.list_rows(table).to_dataframe()
    
    train.to_csv(df.path)

第3步:

代码语言:javascript
复制
@component(base_image="python:3.9", packages_to_install=['sklearn','pandas','joblib'])
def kmeans_training(
        dataset: Input[Dataset],
        model_artifact: Output[Model],
        num_clusters: int,
):
    from sklearn.cluster import KMeans
    import pandas as pd
    from joblib import dump
    
    data = pd.read_csv(dataset.path)
    
    model = KMeans(num_clusters, random_state=220417)
    model.fit(data)
    
    dump(model, model_artifact.path)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69977440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档