编辑
2025-11-28
C#
00

多类分类是机器学习中的一种常见任务,在ML.NET中,多类分类被支持并提供了多种训练器以满足不同需求。以下从定义、应用场景到训练器及其特点分别进行详细描述。


什么是多类分类?

image.png

多类分类(Multiclass Classification)是一种机器学习任务,旨在将输入数据分到多个预定义类别中的一个。它与二元分类(Binary Classification)的主要区别在于,二元分类只区分两个类别,而多类分类处理三个或更多个类别。 这意味着模型需要学习区分各种不同类别之间的细微差别,并准确地将输入数据分配到正确的类别。

多类分类的应用场景非常广泛,例如:

  • **图像识别:**自动识别图像中的物体,例如确定一张图片是猫、狗还是鸟。这在自动驾驶、医疗影像分析等领域至关重要。
  • **新闻分类:**将新闻文章自动归类到不同的主题类别,例如“科技”、“体育”、“娱乐”、“政治”等。这有助于新闻网站的内容组织和个性化推荐。
  • **垃圾邮件过滤:**将电子邮件分类为垃圾邮件、钓鱼邮件、正常邮件等不同类别,以保护用户免受恶意邮件的侵扰。
  • **产品分类:**将电商平台上的产品自动分类到不同的类别,例如“服装”、“电子产品”、“家居用品”等,方便用户浏览和搜索。
  • **疾病诊断:**根据病人的症状和检查结果,将病人诊断为不同的疾病类别。

ML.NET 中,多类分类通过训练一个模型来实现。该模型接收输入特征,并输出一个预测的类别标签。 通过选择合适的算法和精心调整模型参数,可以构建高性能的多类分类模型,以解决各种实际问题。

编辑
2025-11-28
C#
00

二元分类(Binary Classification)是机器学习领域中最基础也最常见的一种监督学习任务。顾名思义,它旨在将数据实例划分为两个互斥的类别,通常用"0"或"1"、"是"或"否"、"正"或"负"等标签表示。

image.png

常见应用场景

在实践中,二元分类有着广泛而重要的应用,以下是一些典型示例:

  • 情感分析:判定社交媒体评论的情绪倾向(积极或消极)。
  • 医学诊断:依据各项检查指标,预测患者是否患有特定疾病。
  • 垃圾邮件过滤:识别并标记电子邮件为垃圾邮件或非垃圾邮件。
  • 图像识别:判断某张图片中是否包含指定对象(如狗、水果等)。

拓展的应用领域

随着技术的发展,二元分类的应用范围不断拓展,以下是一些潜在的应用领域:

  • 网络安全:识别网络流量中的潜在异常或恶意行为(如欺诈交易、木马攻击)。
  • 金融风险评估:根据用户信用历史,判断信用卡欺诈或贷款违约的可能性。
  • 社交网络分析:检测虚假账号或垃圾信息。
  • 生产与运维:监测工业设备状态,预测潜在故障。
编辑
2025-11-27
C#
00

概述

本文将介绍如何使用ML.NET框架中的随机梯度下降算法来预测房屋租金。我们将使用印度房屋租赁数据集,该数据集包含了约4700条房屋租赁信息,包括卧室数量、面积、位置等特征。

环境准备

安装 .NET 6.0 或更高版本

**创建控制台项目并引用 **ML.NET

text
dotnet add package Microsoft.ML

image.png

数据模型定义

C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.ML.Data; namespace AppHousingRent { public class HouseRentData { [LoadColumn(0)] public float CRIM { get; set; } // 城镇人均犯罪率 [LoadColumn(1)] public float ZN { get; set; } // 占地面积超过25000平方呎的住宅用地比例 [LoadColumn(2)] public float INDUS { get; set; } // 城镇非零售商业用地比例 [LoadColumn(3)] public float CHAS { get; set; } // 是否临近查尔斯河 [LoadColumn(4)] public float NOX { get; set; } // 一氧化氮浓度 [LoadColumn(5)] public float RM { get; set; } // 住宅平均房间数 [LoadColumn(6)] public float AGE { get; set; } // 1940年之前建成的自用房屋比例 [LoadColumn(7)] public float DIS { get; set; } // 到波士顿五个就业中心的加权距离 [LoadColumn(8)] public float RAD { get; set; } // 到径向公路的可达性指数 [LoadColumn(9)] public float TAX { get; set; } // 每10000美元的全值财产税率 [LoadColumn(10)] public float PTRATIO { get; set; } // 城镇师生比例 [LoadColumn(11)] public float B { get; set; } // 1000(Bk - 0.63)^2,其中Bk为城镇中黑人的比例 [LoadColumn(12)] public float LSTAT { get; set; } // 人口中地位较低者的比例 [LoadColumn(13)] [ColumnName("Label")] // 将MEDV标记为Label列 public float MEDV { get; set; } // 自住房的平均房价,以千美元计 } public class HouseRentPrediction { [ColumnName("Score")] public float PredictedPrice { get; set; } } }
编辑
2025-11-27
C#
00

本文将结合最新的 NBA 球员多赛季数据(目前已包括 2017 至 2022 赛季),使用 ML.NET 来预测球员未来的潜力与表现趋势。通过此示例,您可以了解如何在 C# 环境中加载并预处理数据、构建模型,以及评估模型的预测准确度。

前言

  • 数据简介
    • 包含球员多个赛季(2017 年起至 2022 年)的人口统计信息(年龄、身高、体重、出生地等)。
    • 包含球队信息(效力球队、选秀年份、轮次等)。
    • 包含基础篮板、得分、助攻等盒子得分(STATS)统计。
    • 数据质量已在多方面做了校验,包含对 52 行缺失值的填补,来自 Basketball Reference 等可信来源。
    • 注意 2022 赛季有更新,数据相对完整,且可以把近些年的球员发展趋势纳入到模型中。
  • 潜力评估方向
    1. 通过历史场均得分、篮板、助攻等关键指标,预测下一赛季的场均表现。
    2. 根据年龄、体重、身高等,结合已经获得的赛季综合表现,以回归、分类或排名方式评估球员发展潜力。

以下示例将展示如何使用 ML.NET 在 C# 项目中对球员未来场均得分(Points Per Game,简称 PPG)进行回归预测。


环境准备

安装 .NET 6.0 或更高版本

**创建控制台项目并引用 **ML.NET

text
dotnet add package Microsoft.ML dotnet add package Microsoft.ML.FastTree

image.png

编辑
2025-11-27
C#
00

项目概述

本文详细介绍如何使用ML.NET开发一个产品销售预测系统,实现对2024年销售量和收入的预测。该系统使用时间序列分析方法,基于历史数据进行未来销售趋势的预测。

技术栈选择

  • 开发语言:C# (.NET 8.0+)
  • 机器学习框架ML.NET 4.0.1
  • 算法选择:SSA (Singular Spectrum Analysis) 时间序列预测
  • 数据格式:CSV文件存储

系统架构设计

销售数据模型类

C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.ML.Data; namespace App16 { /// <summary> /// 销售数据模型类 /// </summary> public class SalesData { // 日期 [LoadColumn(0)] public string Date { get; set; } // 产品1的销售数量 [LoadColumn(1)] public float QP1 { get; set; } // 产品2的销售数量 [LoadColumn(2)] public float QP2 { get; set; } // 产品3的销售数量 [LoadColumn(3)] public float QP3 { get; set; } // 产品4的销售数量 [LoadColumn(4)] public float QP4 { get; set; } // 产品1的销售收入 [LoadColumn(5)] public float SP1 { get; set; } // 产品2的销售收入 [LoadColumn(6)] public float SP2 { get; set; } // 产品3的销售收入 [LoadColumn(7)] public float SP3 { get; set; } // 产品4的销售收入 [LoadColumn(8)] public float SP4 { get; set; } } }