Accord.NET v3.8.0 Release Notes
Release Date: 2017-10-19 // over 7 years ago-
🚀 Accord.NET Framework 3.8.0 release notes
22.10.2017.
🔖 Version updates and fixes:
- 👍 GH-82: Add support for weighted PCA;
- GH-127: Fast KMeans (Request);
- GH-145: MovingNormalStatistics;
- GH-157: Issue in Survival analysis using VB.NET;
- GH-184: Add an Example for Graylevel coocurrences;
- GH-211: Any samples on how to use Boosted Decision Trees;
- GH-257: DFT functions in AForge.Math.FourierTransform and Accord.Math.Transforms;
- GH-262: C45Learning Discrete vs Real;
- GH-374: Dictionary of video capabilities doesn't take into account the video framerate;
- GH-376: Add an Example for VideoCaptureDevice Class;
- GH-377: Add an Example for LevenbergMarquardt Class;
- GH-415: Add an Example for AdaBoost(TModel);
- GH-421: Add an Example for KalmanFilter2D Class;
- GH-422: Add an Example for DecisionStump.Learn Method;
- GH-424: Add an Example for AdaBoost(TModel) Class;
- GH-430: Add an Example for GeneralConfusionMatrix Constructor (Int32, Int32[], Int32[]);
- 🚦 GH-440: BagOfWords for audio signals;
- GH-441: Add Mel Frequency Cepstral Coefficients (MFCC);
- GH-466: Add an Example for Distance.Mahalanobis Method (Double[], Double[]);
- GH-467: Add an Example for Spline Class;
- GH-473: Add an Example for IParallel.ParallelOptions Property;
- GH-476: Add an Example for TwoWayAnova Constructor (Double[][][], TwoWayAnovaModel);
- GH-483: Add an Example for Haralick Class;
- GH-486: Add an Example for LibSvmModel.Save Method (String);
- GH-498: Add an Example for QLearning Class;
- GH-500: Add an Example for FourierTransform2.FFT Method (Complex[], FourierTransform.Direction);
- GH-505: Add an Example for ConfusionMatrix Constructor (Int32[], Int32[], Int32, Int32);
- GH-517: Add an Example for Sarsa Class;
- GH-519: Add an Example for NelderMead Class;
- GH-530: Add an Example for Matrix.Inverse Method (Double[][]);
- GH-532: Add an Example for GaussNewton Class;
- GH-547: Add an Example for HaralickDescriptor Class;
- GH-554: Add an Example for BinaryTree(TNode) Class;
- GH-557: Add an Example for Matrix.Sort(TKey, TValue) Method (TKey[], TValue[,], IComparer(TKey));
- GH-560: Add an Example for FourierTransform2.FFT Method (Double[], Double[], FourierTransform.Direction);
- GH-566: Add an Example for Distance.GetDistance(T) Method;
- GH-569: Add an Example for Distance.Euclidean Method (Double, Double, Double, Double);
- GH-575: Add an Example for LuDecomposition Class;
- GH-576: RandomForestLearning: Examples can't run with SampleRatio not equal 1.0;
- GH-582: Add an Example for Matrix.Multiply Method (Double[], Double[,]);
- GH-610: Add an Example for UnivariateContinuousDistribution.Fit Method (Double[]);
- GH-616: Add an Example for LevenbergMarquardt Class;
- GH-618: Add an Example for Apriori Class;
- GH-629: Add an Example for AdaBoost(TModel) Class;
- GH-636: Add an Example for Measures.Correlation Method (Double[][]);
- GH-640: Add an Example for GaussianKernel Class;
- GH-642: Add an Example for Matrix.PseudoInverse Method (Decimal[,]);
- GH-653: Add an Example for HistogramsOfOrientedGradients Class;
- GH-656: Add an Example for MatReader.Read Method (String);
- GH-660: Add an Example for LogLikelihoodLoss Class;
- GH-665: Add an Example for FourierTransform.FFT Method;
- ✅ GH-687: Add an Example for ShapiroWilkTest Class;
- GH-695: Add an Example for TFIDF.Transform Method (String[][]);
- GH-703: Add an Example for Imputation Class;
- GH-717: Possible issue with DynamicTimeWarp kernel class;
- GH-718: Add an Example for Cosine.Distance Method;
- GH-723: Procrustes analysis is giving weird/wrong results;
- GH-727: Add an Example for IRadialBasisKernel Interface;
- GH-730: Binary-Split with normalized FREAK;
- GH-739: Add an Example for MultipleLinearRegression.CoefficientOfDetermination Method;
- GH-756: Add an Example for ProportionalHazardsAnalysis.LogLikelihood Property;
- ✅ GH-764: Add an Example for AndersonDarlingTest Class;
- GH-769: Issue using visual bag of words with large images;
- GH-783: Add an Example for LocalBinaryPattern Class;
- GH-785: Add an Example for Tools.RandomGroups Method (Int32, Double);
- GH-787: Add an Example for HiddenMarkovModel(TDistribution, TObservation).Predict Method (TObservation[]);
- 👍 GH-789: Add support for OS X;
- ✅ GH-792: Add an Example for FisherExactTest Class;
- GH-793: Add an Example for HoughLineTransformation Class;
- GH-798: System.AccessViolationException in FastBoxBlur;
- GH-800: Missing dependency for Accord.Neuro in NuGet;
- GH-802: Index outside of the bounds of the array in Naive Bayes;
- GH-803: NaN probabilities from large features with MultinomialLogisticRegression;
- GH-805: Unsafe keyword being exposed in the public API;
- GH-807: Add an Example for CrossValidating NaiveBayes;
- 0️⃣ GH-809: The Codification filter should honor the value of DefaultMissingValueReplacement unless overriden;
- 👍 GH-811: Naive Bayes should provide better argument checking for negative symbols;
- GH-812: ZhangSuenSkeletonization filter not exist to use;
- 👍 GH-814: Add an Example for MulticlassSupportVectorMachine(TKernel, TInput) Class;
- GH-818: Add an Example for LinearConstraint Class;
- 👍 GH-819: Quadratic Objective Function to support basic vector operations;
- 👍 GH-820: Augmented Lagrangian to support linear constraints;
- GH-824: Improve number of class inference in ZeroOneLoss;
- GH-825: Replace multi-dimentional with jagged arrays in IntegralImage.cs;
- GH-828: Accord.Neuro under .Net Standard 2.0;
- GH-830: Read PGM image pending;
- GH-831: Index outside of the bounds of the array in Naive Bayes;
- GH-843: Where is Accord.NET AdaBoost Decide method;
- GH-845: Add an Example for Decision Structure;
- ✅ GH-848: Wilcoxon Signed Rank Test for PAIRED samples: TwoSampleWilcoxonSignedRankTest;
- ✅ GH-849: TwoSampleWilcoxonSignedRankTest crashing when sample vectors are exactly the same values;
- GH-852: Add an Example for DecisionSet Class;
- GH-853: Access to last Hessian in BoundedBroydenFletcherGoldfarbShanno;
- GH-856: Add an overload to IsSymmetric that accepts a tolerance;
- ✅ GH-857: Mann-Whitney-U Test producing strange results;
- GH-862: Accord.Math -> Vector -> T[] Sample(T[] values, int size) incorrect;
- GH-865: Measures.Quartiles: value for Q1 (lower quartile) wrong in QuantileMethod.R;
- GH-873: Add an Example for DecisionRule Class;
- GH-876: Allow the maximum frame rate possible in DirectShow for VideoCaptureDevice;
- GH-877: Add an Example for HaarCascadeWriter Class;
- GH-878: Accord.Math.Transforms.FourierTransform2.DFT2 Is bugged;
- GH-882: Adding lazy evaluation to matrix decompositions;
- 🚦 GH-885: Add an Example for Signal.GetEnergy Method;
- GH-890: Add an Example for MultinomialLogisticRegressionAnalysis Class;
- GH-897: Wrong status text in ImageView from DebugVisualizer;
- GH-898: The Range method is producing some unexpected results;
- GH-899: Add an Example for IntegralImage2 Class;
- GH-900: Add an Example for ExhaustiveTemplateMatching Class;
- GH-901: Add an Example for HSL Class;
- GH-911: Character case of folder name;
- GH-913: KNearestNeighbors can not be serialized;
- GH-917: Two C++ projects require "Platform toolset v141" which is only available on VS2017;
- 🏗 GH-919: Build failed for Samples.sln on VS 2015;
- 👀 GH-921: Fix for the normal random number generator when a seed is specified;
- 👀 GH-924, GH-925: Fixing the seeded exponential generator;
- 👀 GH-927: Broadcasting dimension seems counter-intuitive;
- GH-929: Add an Example for SpeededUpRobustFeaturesDescriptor Class;
- GH-930: Add an Example for FastCornersDetector Class;
- GH-931: Add an Example for MatchingTracker Class;
- GH-937: Add an Example for LogisticRegression Class;
- GH-948: Accord.Video.FFMPEG.VideoFileReader should provide frame-based random access;
- 🆓 GH-949: Add the Free Spoken Digits Dataset to Accord.DataSets;
- ✅ GH-950: Add a dataset for example test videos;
- GH-955: KalmanFilter2D throws System.NullReferenceException;
🛠 GH-956: Integrate AForge.NET fixes (up to September 6);
General
- The libsonly script is now in RAR4 format instead of RAR5 so they
🍎 will not be listed as corrupted files by Linux/MacOSX decompressors;
Core
- Splitting ITransform into ITransform and ICovariantTransform (to support generic covariance);
Video.FFMPEG
- Standardizing the C++ projects to depend on VS2015 runtime instead of VS2017 to keep compatibility with VS2015;
- Adding a static constructor in the FFMPEG project to check whether the system has those dependencies installed;
Audio
- Adding the initial version for a MelFrequencyCepstrumCoefficients audio feature extractor;
- Adding a IAudioFeatureExtractor interface (akin to the IImageFeatureExtractor for Accord.Imaging);
- Adding a Mono filter to convert multi-channel audio signals into single channel (mono) signals;
- Adding a Signal.FromFile() method to load audio signals from file similarly to Bitmap.FromFile();
- Adding an AudioDecoder class akin to ImageDecoder to find audio format decoders based on file extension;
Audition
- Adding BagOfAudioWords class to compute bag-of-word representations from audio signals;
Imaging
- Adding support for decoding PNM files in format P2 and P3 (besides the already supported P5 and P6);
- Updating Haralick's to use the same normalization method as HOG and LBP;
- Updating the color classes (RGB, HSL, YCbCr) to be structs;
- Adding conversion operators between different color classes;
- Updating ImageDecoder to find decoders using reflection instead of manual registration;
- Updating the feature extraction framelet to implement the ITransform interfaces and deprecating IFeatureDetector;
- Updating all feature descriptors to be classes rather than structs so the generics covariance can work;
- Integrating AForge.NET's texture generation classes: Adding a base class for texture
⚡️ generation methods, updating them to use the framework-wide random number generator,
🗄 and deprecating their Reset method;
DataSets:
- Adding the Yin-Yang dataset as an example of a non-linear 2D binary classification problem;
- Adding the Servo dataset as an example of a mixed discrete/continuous dataset for regression;
Math
- Adding a methods for the numerical calculation of the Hessian in the FiniteDifferences class;
- Updating Vector.Interval and Vector.Range to behave similar to NumPy's linspance and arange functions;
- Adding new overloads in element-wise operations that accept a VectorType enumeration instead
of a integer for specifying to which dimension the element-wise operation should be performed;
- Updating the Digamma and Trigamma functions to handle negative values;
MachineLearning
- Updating the AdaBoost classes to implement the more recent classification framelet;
- Adding a Error property in ConfusionMatrix and GeneralConfusionMatrix (1.0 - Accuracy);
- Adding named constructors to ConfusionMatrix to create matrices
directly from classifiers, their inputs and expected outputs; - Adding a new IsColor8bpp extension method to detect whether an 8-bpp image is a color image (non-grayscale);
- Adding a new ConvertColor8bppToGrayscale8bpp extension methods to convert these into grayscale 8-bpp images;
- Fixing Codification filter transformation for DataTables when only some columns should be converted;
- NumberOfOutputs and NumberOfSymbols should have different implementations depending on the variable type;
- Enforcing alphabetical/default sorted order for symbols in Codification filter (this is a breaking change);
- Codification filter should now transform columns in the same order as specified by the user;
Statistics
- Adding exponentially weighted moving average (ewma) methods in Statistics.Measures partial classes;
Sample applications
- Adding a new sample application demonstrating how to use the framework in Unity 3D.
Previous changes from v3.7.0
-
🚀 Accord.NET Framework 3.7.0 release notes
20.08.2017.
🔖 Version updates and fixes:
- GH-53: K-Medoids algorithm;
- GH-335: Nelder-mead solver not converged;
- ✅ GH-444: Reenable F# Unit Tests;
- 👍 GH-587: UnmanagedImage does not supported in ExtractBiggestBlob filter;
- GH-594: FFMPEG net35 not working;
- GH-621: How to calculate the cache size in respect of the available RAM;
- GH-662: 64-bit FFMPEG binaries not in output after installing with NuGet;
- GH-669: Confusion Matrix;
- GH-673: Stream closes after serialization with GZip compression;
- GH-676: DoubleArrayChromosome CreateNew ignores Balancer properties;
- GH-684: BalancedKMeans gets stuck;
- GH-688: Cobyla constraint definitions only work with constant values;
- GH-690: Add an Example for Cross-Validation with DecisionTrees;
- GH-692: Add an Example for StochasticGradientDescent Class;
- GH-693: One-class SVM decision rule;
- 👍 GH-694: Add support for Weighted Least Squares;
- 👻 GH-696: IndexOutOfRangeException exception in Matrix.First method;
- GH-697: Add an Example for HiddenMarkovModel(TDistribution, TObservation);
- GH-699: MJPEGStream throws NotImplementedException in .NET Core 2.0;
- GH-700: MJPEGStream throws InvalidOperationException in .NET Core 2.0;
- GH-706: DecisionTree.ToCode() returns code that does not compile;
- GH-707: DecisionTree.ToCode() returns code that compiles;
- GH-711: Nonlinear Regression in VB.NET;
- ⚡️ GH-712: Update MJPEGStream.cs ;
- GH-715: GeneralizedParetoDistribution shape param;
- GH-717: Possible issue with DynamicTimeWarping kernel class;
- GH-723: Procrustes analysis is giving weird/wrong results;
- GH-729: Error in ExhaustiveBlockMatching;
- GH-731: Dilatation;
- GH-736: Measures.Quartiles() for double Vectors of size 2 is wrong;
- GH-737: Add examples for C45Learning Class with missing data and thresholds;
- 0️⃣ GH-745: Cannot change degree of a default Polynomial kernel;
- GH-746: Add an Example for CrossValidation Class;
- GH-747: How to understand the Probabilities;
- 🚀 GH-749: 64 bit release for .NET 4.0;
- GH-752: Speed up matrix-vector operations;
- GH-758: NullReferenceException on NaiveBayes Learn;
- GH-765: NaiveBayes 'System.IndexOutOfRangeException' occurred in Accord.Statistics.dll when calling from sample application;
- GH-767: DebugVisualizers;
- 📚 GH-777: Bug in LinearConstraintCollection documentation;
GH-778: Setter for bounds in BoundedBroydenFletcherGoldfarbShanno.
General
- Adding support for targetting NET Standard 1.4;
- Adding Newtonsoft.Json (Json.NET) in externals.
DataSets
- Adding Wisconsin's Breast Cancer (original, prognostic and diagnostic) datasets;
- Adding Oxford's Parkinsons dataset;
- Updating download links for the RCV1v2 dataset.
Imaging
- Fixing multiple typos regarding the spelling of "Dilation" (this is a breaking change).
IO
- Adding a ReadLine method to CsvReader to read individual lines from the CSV file.
MachineLearning
- Adding K-Medoids (PAM) and Voronoi Iteration clustering algorithms;
- Fixing epsilon in Sequential Minimal Optimization for Regression;
- Adding a MiniBatch static class that can be used to create mini-batch definitions from training data;
- Update LevenbergMarquardtLearning.cs to allow for different activation functions;
- Update BackPropagationLearning.cs to allow for different activation functions;
- Adding support for missing values in C4.5;
- Updating GeneralConfusionMatrix to represent columns as ground-truth instead of predictions;
- Improving memory usage for Second Order (LibSVM) Sequential Minimal Optimization;
- Adding more overloads to the method that helps determine how many lines can
be included in the SVM kernel cache given a total amount of memory; - Fixing ToMulticlass() methods included in multi-label and binary classifiers;
- Fixing the Probabilities and LogLikelihoods methods for multi-label and multi-class SVMs;
- Adding an option for OneVsOneLearning/Multiclass SVMs stop at the first exception
found during training instead of waiting until the all machines have been trained;
- Adding Precision, Recall, RowErrors and ColumnErrors to GeneralConfusionMatrix.
Math
- Adding support for .Learn() methods in NonlinearLeastSquares;
- Updates GH-762: DotAndDot performance for small problem sizes;
- Removing the deprecated extension methods for Accord.Math.Matrix.Multiply
(such that calls should now be redirected to Elementwise.Multiply); - Fix BinarySearch so that it works with decreasing functions;
- Search interval in BinarySearch was meant to be [a;b) (i.e. with inclusive a and exclusive b);
- Fixing the behavior of Matrix.Get() method when negative indices are passed;
- Fixing Matrix's ToTable method to use the most high level type possible when creating columns.
Statistics
- Adding multiple methods for computing quartiles/quantiles;
- Adding a more advanced version of the discretization filter;
- Adding an example for fraud detection using HMMs with MaximumLikelihoodLearning class.
Neuro
- Adding support for networks with multiple activation functions in Levenberg-Marquardt.