.net随笔-vb.net Accord.Net机器学习之贝叶斯分类
1、Accord.IO/ExcelReader.cs读取excel文件,源码如下:
https://github.com/accord-net/framework/blob/792015d0e2ee250228dfafb99ea0e84d031a29ae/Sources/Accord.IO/ExcelReader.cs
2、绘制数据
Imports Accord.Controls
Imports Accord.IO
Imports Accord.Math
Imports Accord.Statistics.Distributions.Univariate
Imports Accord.MachineLearning.Bayes
Imports System
Public Class Form1
'贝叶斯分类
'使用Accord.IO里的的excel读取类
Dim table As DataTable = New ExcelReader("E:\pro\books\AI_.net\src\AI_learn\learnai-1\data\examples.xls").GetWorksheet("Classification - Yin Yang")
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'读取样本
' 转换datatable为输入输出数组
Dim inputs As Double()() = table.ToJagged(Of Double)("X", "Y")
Dim outputs As Integer() = table.Columns("G").ToArray(Of Integer)()
'绘制数据
ScatterplotBox.Show("样本数据", inputs, outputs).Hold()
End Sub
End Class
Imports Accord.Controls
Imports Accord.IO
Imports Accord.Math
Imports Accord.Statistics.Distributions.Univariate
Imports Accord.MachineLearning.Bayes
Imports System
Public Class Form1
'贝叶斯分类
'使用Accord.IO里的的excel读取类
Dim table As DataTable = New ExcelReader("E:\pro\books\AI_.net\src\AI_learn\learnai-1\data\examples.xls").GetWorksheet("Classification - Yin Yang")
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
NaiveBayes()
End Sub
Private Sub NaiveBayes()
'读取样本
' 转换datatable为输入输出数组
Dim sample As Double()() = table.ToJagged(Of Double)("X", "Y")
Dim outs As Integer() = table.Columns("G").ToArray(Of Integer)()
'绘制数据
ScatterplotBox.Show("样本数据", sample, outs).Hold()
'进行训练和预测
Dim trainer As New NaiveBayesLearning(Of NormalDistribution)()
Dim nb = trainer.Learn(sample, outs)
Dim numberOfClasses As Integer = nb.NumberOfClasses '分类数目
Dim numberOfInputs As Integer = nb.NumberOfInputs '特征数量
Dim predictResult As Integer() = nb.Decide(sample) '进行预测
Label1.Text = numberOfClasses
Label2.Text = numberOfClasses
ScatterplotBox.Show("实际结果", sample, outs)
ScatterplotBox.Show("贝叶斯预测结果", sample, predictResult).Hold()
End Sub
End Class