高山绿水 發表於 2020-12-8 09:21:00

C#使用ML.Net完成人工智能预测

<p style="width: 100%; background: rgba(65, 105, 225, 1); color: rgba(255, 255, 255, 1); height: 50px; font-size: 30px; line-height: 50px">前言</p>
<p class="md-end-block md-p md-focus"><span class="md-plain md-expand">Visual Studio2019 Preview中提供了图形界面的ML.Net,所以,只要我们安装Visual Studio2019 Preview就能简单的使用ML.Net了,因为我的电脑已经安装了Visual Studio2019,所以我不需要重头安装Visual Studio2019 Preview,只要更新即可。</span></p>
<p style="width: 100%; background: rgba(65, 105, 225, 1); color: rgba(255, 255, 255, 1); height: 50px; font-size: 30px; line-height: 50px">安装</p>
<p class="md-end-block md-p"><span class="md-plain">首先找到Visual Studio Installer安装包,如下图。</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144441154-205202760.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">运行,然后选择如下:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144458561-1349102538.png" alt="" loading="lazy"></p>
<p style="width: 100%; background: rgba(65, 105, 225, 1); color: rgba(255, 255, 255, 1); height: 50px; font-size: 30px; line-height: 50px">创建项目</p>
<p class="md-end-block md-p"><span class="md-plain">我们创建一下新项目,如下图:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144516264-579714758.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">然后选择。</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144533858-755687125.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">然后添加机器学习。</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144551360-481890966.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">点击机器学习时,如果我们没有开启MLNET模型创建功能,则会弹出提示,让我们开启。</span></p>
<p class="md-end-block md-p"><span class="md-plain">当然我们也可以手动在选项中开启,如下图:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144610572-1156182161.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">点击【机器学习】之后会有图形界面,如下图:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144623854-315351518.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">然后我们可以看到,它提供了一些方案,如语义识别,图像识别,数值预测等。</span></p>
<p class="md-end-block md-p"><span class="md-plain">我们选择数值预测,然后进入下一步,如下图:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144638578-1531711109.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">在环境页面,选择本地训练,然后点击下一步获取数据,如下图:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144656670-1901994539.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">这里需要选择一个数据源,我们去官网上下载一下可用的测试数据源。</span></p>
<p class="md-end-block md-p"><span class="md-plain">这里我们下载【产品销售数据】。</span></p>
<table class="md-table">
<thead>
<tr class="md-end-block"><th><span class="td-span"><span class="md-plain">方案</span></span></th><th><span class="td-span"><span class="md-plain">示例</span></span></th><th><span class="td-span"><span class="md-plain">数据</span></span></th><th><span class="td-span"><span class="md-plain">Label</span></span></th><th><span class="td-span"><span class="md-plain">特征</span></span></th></tr>
</thead>
<tbody>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">分类</span></span></td>
<td><span class="td-span"><span class="md-plain">预测销售异常</span></span></td>
<td><span class="td-span"><span class=" md-link"><span class="md-plain">产品销售数据</span></span></span></td>
<td><span class="td-span"><span class="md-plain">产品销售额</span></span></td>
<td><span class="td-span"><span class="md-plain">月份</span></span></td>
</tr>
<tr class="md-end-block">
<td>&nbsp;</td>
<td><span class="td-span"><span class="md-plain">预测网站评论的情绪</span></span></td>
<td><span class="td-span"><span class=" md-link"><span class="md-plain">网站评论数据</span></span></span></td>
<td><span class="td-span"><span class="md-plain">标签(负面情绪为 0,正面情绪为 1)</span></span></td>
<td><span class="td-span"><span class="md-plain">评论、年份</span></span></td>
</tr>
<tr class="md-end-block">
<td>&nbsp;</td>
<td><span class="td-span"><span class="md-plain">预测信用卡欺诈交易</span></span></td>
<td><span class="td-span"><span class=" md-link"><span class="md-plain">信用卡数据</span></span></span></td>
<td><span class="td-span"><span class="md-plain">类(存在欺诈性为 1,否则为 0)</span></span></td>
<td><span class="td-span"><span class="md-plain">金额,V1-V28(匿名处理后的特征)</span></span></td>
</tr>
<tr class="md-end-block">
<td>&nbsp;</td>
<td><span class="td-span"><span class="md-plain">预测 GitHub 存储库中的问题类型</span></span></td>
<td><span class="td-span"><span class=" md-link"><span class="md-plain">GitHub 问题数据</span></span></span></td>
<td><span class="td-span"><span class="md-plain">区域</span></span></td>
<td><span class="td-span"><span class="md-plain">标题、描述</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">值预测</span></span></td>
<td><span class="td-span"><span class="md-plain">预测出租车费用价格</span></span></td>
<td><span class="td-span"><span class=" md-link"><span class="md-plain">出租车费数据</span></span></span></td>
<td><span class="td-span"><span class="md-plain">车费</span></span></td>
<td><span class="td-span"><span class="md-plain">行程时间、距离</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">图像分类</span></span></td>
<td><span class="td-span"><span class="md-plain">预测花卉的类别</span></span></td>
<td><span class="td-span"><span class=" md-link"><span class="md-plain">花卉图像</span></span></span></td>
<td><span class="td-span"><span class="md-plain">花卉类型:雏菊、蒲公英、玫瑰、向日葵、郁金香</span></span></td>
<td><span class="td-span"><span class="md-plain">图像数据本身</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">建议</span></span></td>
<td><span class="td-span"><span class="md-plain">预测他人喜欢的电影</span></span></td>
<td><span class="td-span"><span class=" md-link"><span class="md-plain">电影评分</span></span></span></td>
<td><span class="td-span"><span class="md-plain">用户、电影</span></span></td>
<td><span class="td-span"><span class="md-plain">评级</span></span></td>
</tr>
</tbody>
</table>
<p class="md-end-block md-p"><span class="md-plain">选择完预测数据文件,我们配置要预测的列,然后点击训练,如下图:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144714318-691023660.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">训练界面如下:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144729498-567071817.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">点击训练,大约2分钟,训练完成,输出界面会输出如下内容。</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144741680-1678395024.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">训练完成后,如下图:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144752831-835120629.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">我们点击评估,如下图:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144806663-1785024953.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">如上图,预测到1月销售数据是262.8。</span></p>
<p class="md-end-block md-p"><span class="md-plain">然后点击代码,将ML.Net代码添加到解决方案中,如下图:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144821445-2048106204.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">添加ML.Net代码后,如下图:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144834472-1144228087.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">生成的MLNetConsoleML.ConsoleApp项目是入口项目,Main函数如下:</span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">static void Main(string[] args)
{
    // Create single instance of sample data from first line of dataset for model input
    ModelInput sampleData = new ModelInput()
    {
      Month = @"1-Jan",
    };

    // Make a single prediction on the sample data and print results
    var predictionResult = ConsumeModel.Predict(sampleData);

    Console.WriteLine("Using model to make single prediction -- Comparing actual ProductSales with predicted ProductSales from sample data...\n\n");
    Console.WriteLine($"Month: {sampleData.Month}");
    Console.WriteLine($"\n\nPredicted ProductSales: {predictionResult.Score}\n\n");
    Console.WriteLine("=============== End of process, hit any key to finish ===============");
    Console.ReadKey();
}</pre>
</div>
<p class="md-end-block md-p"><span class="md-plain">可以看到,我们预测的是Month = @"1-Jan"。</span></p>
<p class="md-end-block md-p"><span class="md-plain">再打开ModelBuilder文件,可以看到,这里一开始就配置了数据地址和模型地址,如下图:</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144859616-316717664.png" alt="" loading="lazy"></p>
<p class="md-end-block md-p"><span class="md-plain">到这里,我们ML.Net就算初步学会使用了,下面,再提供一个官网GIF图片供大家参考。</span></p>
<p class="md-end-block md-p"><img src="https://img2020.cnblogs.com/blog/243596/202012/243596-20201207144911790-782662001.gif" alt="" loading="lazy"></p>
<p style="width: 100%; background: rgba(65, 105, 225, 1); color: rgba(255, 255, 255, 1); height: 50px; font-size: 30px; line-height: 50px">训练时长</p>
<p class="md-end-block md-p"><span class="md-plain">模型生成器使用 AutoML 浏览多个模型,以查找性能最佳的模型。</span></p>
<p class="md-end-block md-p"><span class="md-plain">更长的训练周期允许 AutoML 通过更多设置来浏览更多模型。</span></p>
<p class="md-end-block md-p"><span class="md-plain">下表汇总了在本地计算机上为一组示例数据集获取良好性能所花的平均时间。</span></p>
<table class="md-table">
<thead>
<tr class="md-end-block"><th><span class="td-span"><span class="md-plain">数据集大小</span></span></th><th><span class="td-span"><span class="md-plain">训练的平均时间</span></span></th></tr>
</thead>
<tbody>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">0 - 10 MB</span></span></td>
<td><span class="td-span"><span class="md-plain">10 秒</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">10 - 100 MB</span></span></td>
<td><span class="td-span"><span class="md-plain">10 分钟</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">100 - 500 MB</span></span></td>
<td><span class="td-span"><span class="md-plain">30 分钟</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">500 - 1 GB</span></span></td>
<td><span class="td-span"><span class="md-plain">60 分钟</span></span></td>
</tr>
<tr class="md-end-block">
<td><span class="td-span"><span class="md-plain">1 GB 以上</span></span></td>
<td><span class="td-span"><span class="md-plain">3 小时以上</span></span></td>
</tr>
</tbody>
</table>
<p>----------------------------------------------------------------------------------------------------</p>
<p class="md-end-block md-p">参考网址:<span class="md-link md-expand">https://docs.microsoft.com/zh-cn/dotnet/machine-learning/automate-training-with-model-builder</span></p>
<p>----------------------------------------------------------------------------------------------------</p>
<p class="md-end-block md-p">到此C#使用ML.Net完成人工智能预测的基本使用已经介绍完了。</p>
<p>代码已经传到Github上了,欢迎大家下载。</p>
<p style="border: 2px solid rgba(115, 191, 0, 1); padding: 10px 40px; background: rgba(204, 255, 128, 1); border-radius: 15px; -moz-border-radius: 15px">Github地址:&nbsp;https://github.com/kiba518/MLNetConsole</p>
<p>----------------------------------------------------------------------------------------------------</p>
<p>注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!<br>若您觉得这篇文章还不错,请点击下方的<span style="color: rgba(255, 0, 0, 1)">【<strong>推荐】</strong></span>,非常感谢!</p>
<p>https://www.cnblogs.com/kiba/p/14097006.html</p>
<p>&nbsp;<img src="https://img2018.cnblogs.com/blog/243596/201909/243596-20190904083750507-629449790.png" alt=""></p>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    https://www.cnblogs.com/kiba/<br><br>
来源:https://www.cnblogs.com/kiba/p/14097006.html
頁: [1]
查看完整版本: C#使用ML.Net完成人工智能预测