AForge.Imaging——一些日常的图像处理和过滤器AForge.Vision——计算机视觉应用类库AForge.Neuro——神经网络计算库AForge.Genetic-进化算法编程库AForge.MachineLearning——机器学习类库AForge.Robotics——提供一些机器学习的工具类库AForge.Video——一系列的视频处理类库AForge.Fuzzy——模糊推理系统类库AForge.Controls——图像,三维,图表显示控件
(二)Accord.NETFramework
Accord.NETFramework是在AForge.NET基础上封装和进一步开发来的。功能也很强大,因为AForge.NET更注重与一些底层和广度,而Accord.NETFramework更注重与机器学习这个专业,在其基础上提供了更多统计分析和处理函数,包括图像处理和计算机视觉算法,所以侧重点不同,但都非常有用。
(三)Math.NET
(四)Infer.NET
(五)numl
另外一个小巧的,包含比较多的机器学习算法类库,支持监督式和非监督式学习。支持很多常见的机器学习算法,文档资源还不错。包括Cluster,KMeans,PCA,DecisionTree,KNN,NaiveBayes,NeuralNetwork等学习算法,内容也非常丰富,功能强大,同时也包括一些数值计算的实现。这个组件个人认为没有以上的那么复杂,结构小巧合理,代码也很优雅。看看下面这段代码,很快就可以构建一个决策树学习器进行预测:
vargenerator=newDecisionTreeGenerator();generator.Descriptor=Descriptor.Create
(六)Alglib
ALGLIB是一个跨平台的数值分析和数据处理函数库,该函数库包括开源版本和商业版本。它支持多种编程语言,如C++,C#,Pascal,VBA等,可以在多个操作系统平台上运行,如:Windows,Linux和Solaris。ALGLIB有以下特点:
(1)线性代数(包括矩阵分析);(2)方程求解(线性和非线性);(3)插值;(4)最优化;(5)快速傅里叶变换;(6)数值积分;(7)线性和非线性最小二乘拟合;(8)常微分方程求解;(9)特殊函数;(10)统计(描述统计、假设检验);(11)数据分析(分类、回归、神经网络);
Accord.NET框架扩展了AForge.NET框架,
提供了一些新功能。
同时为.NET环境下的科学计算提供了一个完整的开发环境。
该框架被分成了多个程序集,
可以直接从官网下载安装文件或者使用NuGet得到。
(一)框架的三大功能模块
Accord.NET框架主要有三个大的功能性模块。
分别为科学技术,
信号与图像处理,
支持组件。
下面将对3个模型的命名空间和功能进行简单介绍。
可以让大家更快的接触和了解其功能是否是自己想要的,
下面是主要的命名空间介绍。
(二)科学计算
(三)信号与图像处理
Accord.Imaging:包含特征点探测器(如Harris,SURF,FASTandFREAK),图像过滤器、图像匹配和图像拼接方法,还有一些特征提取器。
Accord.Audio:包含一些机器学习和统计应用程序说需要的处理、转换过滤器以及处理音频信号的方法。
Accord.Vision:实时人脸检测和跟踪,以及对人流图像中的一般的检测、跟踪和转换方法,还有动态模板匹配追踪器。
(四)支持组件
主要是为上述一些组件提供数据显示,绘图的控件,分为以下几个命名空间:
Accord.Controls:包括科学计算应用程序常见的柱状图、散点图和表格数据浏览。
Accord.Controls.Imaging:包括用来显示和处理的图像的WinForm控件,包含一个方便快速显示图像的对话框。
(五)支持的算法介绍
1、分类(Classification)
SVM(支持向量机,类SupportVectorMachine、类KernelSupportVectorMachine、类SequentialMinimalOptimization—序列最小优化算法)、
K-NN邻近算法(类KNearestNeighbors);
LogisticRegression(逻辑回归)、
DecisionTrees(决策树,类DecisionTree、ID3Learning、C45Learning)、
NeuralNetworks(神经网络)、
DeepLearning(深度学习)
(DeepNeuralNetworks深层神经网络)、
Levenberg-MarquardtwithBayesianRegularization、
RestrictedBoltzmannMachines(限制玻耳兹曼机)、
Sequenceclassification(序列分类),
HiddenMarkovClassifiersandHiddenConditionalRandomFields(隐马尔科夫分类器和隐藏条件随机域)。
2、回归(Regression)
Multiplelinearregression(多元线性回归-单因变量多自变量)、
SimpleLinearRegression(线性回归,类SimpleLinearRegression)、
Multivariatelinearregression(多元线性回归-多因变量多自变量)、polynomialregression(多项式回归)、logarithmicregression(对数回归)、Logisticregression(逻辑回归)、multinomiallogisticregression(多项式逻辑回归)(softmax)andgeneralizedlinearmodels(广义线性模型)、L2-regularizedL2-losslogisticregression,L2-regularizedlogisticregression,L1-regularizedlogisticregression,L2-regularizedlogisticregressioninthedualformandregressionsupportvectormachines。
3、聚类(Clustering)
K-Means、K-Modes、Mean-Shift(均值漂移)、GaussianMixtureModels(高斯混合模型)、BinarySplit(二元分裂)、DeepBeliefNetworks(深层的信念网络)、RestrictedBoltzmannMachines(限制玻耳兹曼机)。聚类算法可以应用于任意数据,包括图像、数据表、视频和音频。
4、概率分布(Distributions)
包括40多个分布的参数和非参数估计。包括一些常见的分布如正态分布、柯西分布、超几何分布、泊松分布、伯努利;也包括一些特殊的分布如Kolmogorov-Smirnov,Nakagami、Weibull、andVon-Misesdistributions。也包括多元分布如多元正态分布、Multinomial、Independent、JointandMixturedistributions。
5、假设检验(HypothesisTests)
超过35统计假设测试,包括单向和双向方差分析测试、非参数测试如Kolmogorov-Smirnov测试和媒体中的信号测试。contingencytabletestssuchastheKappatest,withvariationsformultipletables,aswellastheBhapkarandBowkertests;andthemoretraditionalChi-Square,Z,F,TandWaldtests.
6、核方法(KernelMethods)
内核支持向量机,多类和多标签向量机、序列最小优化、最小二乘学习、概率学习。IncludingspecialmethodsforlinearmachinessuchasLIBLINEAR'smethodsforLinearCoordinateDescent,LinearNewtonMethod,ProbabilisticCoordinateDescent,ProbabilisticCoordinateDescentintheDual,ProbabilisticNewtonMethodforL1andL2machinesinboththedualandprimalformulations.
7、图像(Imaging)
兴趣和特征点探测器如Harris,FREAK,SURF,FAST。灰度共生矩阵,Borderfollowing,Bag-of-Visual-Words(BoW),RANSAC-basedhomographyestimation,integralimages,haralicktexturalfeatureextraction,anddensedescriptorssuchashistogramoforientedgradients(HOG)andLocalBinaryPattern(LBP).SeveralimagefiltersforimageprocessingapplicationssuchasdifferenceofGaussians,Gabor,NiblackandSauvolathresholding。还有几个图像处理中经常用到的图像过滤器。
8、音频信号(AudioandSignal)
音频信号的加载、解析、保存、过滤和转换,如在空间域和频域应用音频过滤器。WAV文件、音频捕捉、时域滤波器,高通,低通,波整流过滤器。Frequency-domainoperatorssuchasdifferentialrectificationfilterandcombfilterwithDirac'sdeltafunctions.SignalgeneratorsforCosine,Impulse,Squaresignals.
9、视觉(Vision)
实时人脸检测和跟踪,以及图像流中检测、跟踪、转换的一般的检测方法。Containscascadedefinitions,CamshiftandDynamicTemplateMatchingtrackers.Includespre-createdclassifiersforhumanfacesandsomefacialfeaturessuchasnoses。
10、降维技术
SVD奇异值分解(OctaveEnvironment.svd方法);
PCA主成分分析(类PrincipalComponent);
ICA独立成份分析(类IndependentComponetAnalysis)
11、算法精度测算
混淆矩阵(类ConfusionMatrix);
ROC曲线评估(类ReceiverOperatingCharacteristic);
Bootstrap算法(自助算法;类(Bootstrap));
CrossValidation算法(交叉检验;类(CrossValidation));
Debug是一些用于调试的程序集,Docs是帮助文档,Externals是一些辅助的组件,Release是不同.NET环境的Dll程序集版本,Samples是案例源代码,Setup是安装的程序,Sources是项目的源代码,UnitTests是单元测试代码。
(一)Math.NET基本介绍
Math.NET初衷是开源建立一个稳定并持续维护的先进的基础数学工具箱,以满足.NET开发者的日常需求。目前该组件主要分为以下几个子项目,该组件同时也支持Mono,而且支持的平台也非常广泛(PCLPortableProfile47:Windows8,Silverlight5,Xamarin:Android,iOS)。
(二)Math.NETNumerics
支持概率分布:离散型、连续型和多元
伪随机数生成器
支持稀疏矩阵和向量的复杂的线性代数解决方法
LU,QR,SVD,EVD,Cholesky分解
矩阵读写功能,支持Matlab和一些分开的文件
复数计算
特殊函数:Gamma,Beta,Erf,Bessel,Struve等等
插值,线性回归,曲线拟合
数值积分,方程求解
马尔可夫链蒙特卡罗抽样
基本的财务统计数据
傅里叶变换(FFT)
重载的数学操作符来简化复杂的表达式
Mono平台支持,可选支持英特尔数学内核库(MicrosoftWindows和Linux)
可选更多的的F#扩展用法
(三)Math.NETSymbolics
(四)Math.NETFiltering
(五)Math.NETSpatial
是Math.NET下的一个几何处理工具箱。
(六)其他
Math.NET在发展过程中的一些其他项目如Math.NETIridium,Math.NETClassic,Math.NETLinqAlgebra,Math.NETYttrium等都是历史(有一些是实验性的),现在都已经合并到上述几个子项目中。