vb.net 2019-机器学习ml.net情绪分析(3)

本文介绍使用ML.NET框架进行模型训练、评估及保存的过程。文章详细解释了如何加载数据集,利用FastTree算法训练模型,并对模型进行评估,最后将训练好的模型保存到文件中。文中还展示了如何计算模型的准确率、AUC和F1分数等关键指标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(11)评估模型,保存模型

Imports System
Imports System.Collections
Imports System.IO
Imports System.Linq
Imports Microsoft.Data.DataView
Imports Microsoft.ML
Imports Microsoft.ML.Data
Imports Microsoft.ML.Trainers
Imports Microsoft.ML.Transforms.Text

Module Program
    Private ReadOnly _dataPath As String = Path.Combine(Environment.CurrentDirectory, "data", "yelp_labelled.txt")
    Private ReadOnly _modelPath As String = Path.Combine(Environment.CurrentDirectory, "data", "model.zip")

    Public ReadOnly Property DataPath As String
        Get
            Return _dataPath
        End Get
    End Property
    Public ReadOnly Property ModelPath As String
        Get
            Return _modelPath
        End Get
    End Property

    Sub Main(args As String())
        '创建上下文ML作业
        Dim mlConText As New MLContext
        Dim splitDataView As TrainCatalogBase.TrainTestData = LoadData(mlConText)
        Dim model As ITransformer = BuildAndTrainModel(mlConText, splitDataView.TrainSet)
        Evaluate(mlConText, model, splitDataView.TestSet)
    End Sub
    Public Function BuildAndTrainModel(mlContext As MLContext, splitTrainSet As IDataView) As ITransformer
        '将文本列特征化为机器学习算法使用的名为Features的数值向量的FeaturizeText,再将决策树算法追加到管道
        Dim pipleline = mlContext.Transforms.Text.FeaturizeText(outputColumnName:=DefaultColumnNames.Features, inputColumnName:=NameOf(SentimentData.SentimentText)).Append(mlContext.BinaryClassification.Trainers.FastTree(numLeaves:=50, numTrees:=50, minDatapointsInLeaves:=20))
        Dim model = pipleline.Fit(splitTrainSet)
        Return model
    End Function
    Public Function LoadData(mlContext As MLContext) As TrainCatalogBase.TrainTestData
        '加载数据,将数据集分为训练集与测试集并返回
        '加载数据集通过基本的数据管道dataview
        Dim dataView As IDataView = mlContext.Data.LoadFromTextFile(Of SentimentData)(_dataPath, hasHeader:=False)
        '拆分数据集进行模型训练和测试,20%的测试集
        Dim splitDataView As TrainCatalogBase.TrainTestData = mlContext.BinaryClassification.TrainTestSplit(dataView, testFraction:=0.2)
        Return splitDataView
    End Function
    Public Sub Evaluate(mlContext As MLContext, model As ITransformer, splitTestSet As IDataView)
        '加载测试数据集,创建分类计算器,评估模型并创建指标,显示效果指标
        Console.WriteLine("===用测试数据评估模型正确率===")
        '返回预测
        Dim predictions As IDataView = model.Transform(splitTestSet)
        '计算预测模型质量指标
        Dim metrics As CalibratedBinaryClassificationMetrics = mlContext.BinaryClassification.Evaluate(predictions, "label")
        '显示模型验证指标
        Console.WriteLine("正确率:" & metrics.Accuracy)
        Console.WriteLine("AUC:" & metrics.Auc)
        Console.WriteLine("F1Score:" & metrics.F1Score)
        SaveModelAsFile(mlContext, model)

    End Sub

    Private Sub SaveModelAsFile(mlContext As MLContext, model As ITransformer)
        Throw New NotImplementedException()
        Using fs As New FileStream(ModelPath, FileMode.Create, FileAccess.Write, FileShare.Write))
            mlContext.Model.Save(model, fs)
            Console.WriteLine("模型存入" & ModelPath)
        End Using
    End Sub
End Module
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值