如何在 .NET Framework 4.6.1 应用程序中 predict/score XGBoost 或 LightGBM

How to predict/score XGBoost or LightGBM in .NET Framework 4.6.1 application

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

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

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

  1. 使用新的 "SDK-style" .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 包管理器菜单下的包管理器设置中执行此操作。 "Default package management format"。您可以参考 Migrate from packages.config to PackageReference 文档了解更多信息。

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