0

LightGBM我有一个机器学习问题,我在使用和的训练/测试数据上获得了非常好的结果XGBoost。下一步是从这些模型之一获取预测到现有 C# 应用程序 (.NET Framework 4.6.1) 是否有任何库可以帮助我做到这一点?到目前为止我已经尝试过:

  • ML.NET:应该适用于LigthGBM,但由于这个错误,它仅适用于 .NET Core。
  • Windows.ML:这应该能够预测 ONNX 模型,并且我设法从我的模型创建了一个 ONNXXGBoost模型。但 Windows.ML 似乎只适用于 UWP 应用程序,至少所有示例都是 UWP。
  • SharpLearning:这个库有一个接口XGBoost。不幸的是,它不支持我所依赖的样本权重。
  • CNTK:尝试加载 ONNX 文件(类似于此示例),但得到:错误:CNTK 不支持 ONNX (TreeEnsembleClassifier)。

有什么建议,还是我必须等待 ML.NET 修复错误?

4

1 回答 1

2

我能够在net461控制台应用程序中使用 LightGBM。仅当您packages.config用于管理 NuGet 包时,才会出现上述错误。为了解决 LightGBM nuget 包中列出的错误,您可以采用以下方法之一:

  1. 使用新的“SDK 风格”.csproj,但将 TargetFramework 设置为net461.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net461</TargetFramework>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.ML.LightGBM" Version="0.3.0" />
  </ItemGroup>

  <ItemGroup>
    <None Update="iris-data.txt">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>

  1. 将您的普通 .NET Framework .csproj 更改为使用<PackageReference>而不是packages.config. 您可以在工具 -> NuGet 包管理器菜单下的包管理器设置中执行此操作。“默认包管理格式”。您可以参考从 packages.config 迁移到 PackageReference文档以获取更多信息。

  <ItemGroup>
    <PackageReference Include="Microsoft.ML">
      <Version>0.3.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.ML.LightGBM">
      <Version>0.3.0</Version>
    </PackageReference>
  </ItemGroup>

于 2018-08-07T14:08:48.757 回答