public DenseMatrix GetCovarianceMatrix(ICaseFrame cases) { var data = new List <double[]>(); var cursor = cases.GetCaseCursor(); while (cursor.MoveNext()) { var attributes = new double[cases.Schema.Count]; for (var i = 0; i < cases.Schema.Count; i++) { attributes[i] = cursor.GetAttribute <double>(cases.Schema[i]); } data.Add(attributes); } var dataMat = DenseMatrix.Build.DenseOfRowArrays(data); var covMat = new DenseMatrix(dataMat.ColumnCount, dataMat.ColumnCount); for (var i = 0; i < dataMat.ColumnCount; i++) { for (var j = 0; j < dataMat.ColumnCount; j++) { covMat[i, j] = dataMat.Column(i).Covariance(dataMat.Column(j)); } } return(covMat); }
public WriteCursor(ICaseFrame caseFrame) { if (caseFrame == null) { throw new ArgumentNullException(nameof(caseFrame)); } cursor = caseFrame.GetCaseCursor(); definition = new CaseDefinitionBuilder(typeof(TCase), cursor.Schema).Build(); idSetter = GenerateIdSetter(); solutionSetter = GenerateSolutionSetter(); setters = GenerateSetters(); }
private static IEnumerable <string> GetIds(ICaseFrame cases, bool shuffle) { var caseIds = new List <string>(); using (var cursor = cases.GetCaseCursor()) { while (cursor.MoveNext()) { caseIds.Add(cursor.GetId()); } } return(shuffle ? caseIds.OrderBy(a => Guid.NewGuid()) : (IEnumerable <string>)caseIds); }
public override void Prepare(ICaseFrame cases) { if (cases == null) { throw new ArgumentNullException(nameof(cases)); } BindSelectedAttributes(cases.Schema); using (var cursor = cases.GetCaseCursor()) { while (cursor.MoveNext()) { foreach (var binding in AttributeBinding) { var getter = cursor.GetAttributeGetter <double>(cases.Schema[binding.Attribute]); UpdateMinMax(binding.Binding, getter); } } } isPrepared = true; }