如何为简单分类(C#)创建新的AutoML数据集

如何为简单分类(C#)创建新的AutoML数据集,c#,google-cloud-automl,C#,Google Cloud Automl,作为ML自动化过程的一部分,我希望动态创建新的AutoML模型。我正在使用C#(.net framework)和 尝试运行CreateDataSetcode后: var autoMlClient = AutoMlClient.Create(); var parent = LocationName.FromProjectLocation(_projectId, _locationId); var dataset = new Google.Cloud.AutoML.V1.Dataset(); da

作为ML自动化过程的一部分,我希望动态创建新的AutoML模型。我正在使用C#(.net framework)和

尝试运行
CreateDataSet
code后:

var autoMlClient = AutoMlClient.Create();
var parent = LocationName.FromProjectLocation(_projectId, _locationId);

var dataset = new Google.Cloud.AutoML.V1.Dataset();
dataset.DisplayName = "NewDataSet";    
var response = autoMlClient.CreateDataset(parent, dataset);
我得到以下错误:

字段:dataset.dataset\u元数据;消息:未设置必填字段

根据这一点,我应该设置
数据集元数据类型
,但是列表只包含特定类型的分类(翻译/图像分类等),我找不到简单的分类类型。 如何使用API创建简单的分类数据集?在AutoML UI中,只需单击一个简单的按钮(“新建数据集”)——并且只需提供名称和区域——无分类类型

我还尝试设置:

dataset.TextClassificationDatasetMetadata = 
     new TextClassificationDatasetMetadata() { ClassificationType = ClassificationType.Multiclass };
但是我无法将数据导入到它(从输入CSV文件中获得了太多无效输入错误),我想这与输入格式不适合文本分类的原因有关

更新


我刚刚注意到,Nuget可以使用,但它确实包含正常分类的
tableDataSetMetadata
Dataset元数据类型。我说不出话来。

我今天在使用NodeJS客户端创建数据集时也遇到了这种情况。由于googleautoml表服务处于beta级别,您需要使用AutoML客户端的beta版本。在过去,他们使用beta客户端创建了一个数据集

在NodeJS中,导入beta版本
require('@google cloud/automl').v1beta1.AutoMlClient
而不是导入普通版本(v1)
require('@google cloud/automl')。v1
为我成功执行了创建数据集功能


在C#中,你可以通过一个。希望这有帮助:)

在@RajithaWarusavitarana评论和我的最后一个问题更新之后,下面是实现这个技巧的代码。令牌由
GoogleClientAPI
nuget生成,AutoML由REST处理

string GcpGlobalEndPointUrl = "https://automl.googleapis.com";
string GcpGlobalLocation = "us-central1";   // api "parent" parameter

public string GetToken(string jsonFilePath)
{
    var serviceAccountCredentialFileContents = System.IO.File.ReadAllText(jsonFilePath);

    var credentialParameters = NewtonsoftJsonSerializer.Instance.Deserialize<JsonCredentialParameters>(serviceAccountCredentialFileContents);
    var initializer = new ServiceAccountCredential.Initializer(credentialParameters.ClientEmail)
    {
        Scopes = new List<string> { "https://www.googleapis.com/auth/cloud-platform" }
    };
    var cred = new ServiceAccountCredential(initializer.FromPrivateKey(credentialParameters.PrivateKey));

    string accessToken = cred.GetAccessTokenForRequestAsync("https://oauth2.googleapis.com/token").Result;
    return accessToken;
}

public void GetDataSetList(string projectId, string token)
{
    var restClient = new RestClient(GcpGlobalEndPointUrl);

    var createDataSetReqUrl = $"v1beta1/projects/{projectId}/locations/{GcpGlobalLocation}/datasets";
    var createDataSetReq = new RestRequest(createDataSetReqUrl, Method.GET);
    createDataSetReq.AddHeader("Authorization", $"Bearer {token}");

    var createDatasetResponse = restClient.Execute(createDataSetReq);
    createDatasetResponse.Dump();
}
string GcpGlobalEndPointUrl=”https://automl.googleapis.com";
字符串gcpglobalocation=“us-central1”;//api“父”参数
公共字符串GetToken(字符串jsonFilePath)
{
var serviceAccountCredentialFileContents=System.IO.File.ReadAllText(jsonFilePath);
var credentialParameters=NewtonsoftJsonSerializer.Instance.Deserialize(serviceAccountCredentialFileContents);
var initializer=新的ServiceAccountCredential.initializer(credentialParameters.ClientEmail)
{
范围=新列表{”https://www.googleapis.com/auth/cloud-platform" }
};
var cred=新的ServiceAccountCredential(初始值设定项.FromPrivateKey(credentialParameters.PrivateKey));
字符串accessToken=cred.GetAccessTokenForRequestAsync(“https://oauth2.googleapis.com/token三、结果;
返回accessToken;
}
public void GetDataSetList(字符串projectId、字符串标记)
{
var restClient=新的restClient(GcpGlobalEndPointUrl);
var createDataSetRequestRL=$“v1beta1/projects/{projectId}/locations/{gcpglobalocallocation}/datasets”;
var createDataSetReq=new RestRequest(createDataSetreqrl,Method.GET);
createDataSetReq.AddHeader(“授权”、$“承载{token}”);
var createDatasetResponse=restClient.Execute(createDataSetReq);
createDatasetResponse.Dump();
}
我从

您那里获取了令牌生成代码,对!不幸的是,C#没有beta库。