如何为简单分类(C#)创建新的AutoML数据集
作为ML自动化过程的一部分,我希望动态创建新的AutoML模型。我正在使用C#(.net framework)和 尝试运行如何为简单分类(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
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库。