Classification is the process of assigning a categorical class labels to elements of a set based on independent variables. For this visualization we take a simple task of classifying with only two classes "red" and "blue" based on two independent, continuous variables in the range zero to one (x and y). This allows for a direct visualization using a combination of a 2D scatter plot and a heat map.
The scatter plot shows the original training samples, the heat map the areas of classification – the class that would be assigned by each individual algorithm to each point in the 2D feature space.
The Version 2.0.1 of the ANKHOR Data Workbench contains minor improvements and various bug fixes.
In this blog I will demonstrate the use of the windows event log Plugin for ANKHOR with three simple visualizations. The Plugin is installed from the "Windows Event Log Parser" Package using the Package Manager from the ribbon bar. It comes with an interface library “PluginWindowsEventLog.flsx” which has two major exported operators.
A C/C++ compiler (and other compilers too) generate various intermediate, debug and executable files during a compiler run. Most programmers do not look at those files nowadays unless something is broken, so some years ago I lost the feeling for the sizes of these temporary files (in the old days, when double digit kilobytes was a lot, those sizes did matter quite a bit).
When transitioning to Visual Studio 2013 I had to look at the intermediate files to get some of the conversions correct, and thus noticed the file sizes.
Caching is a mechanism that is used in many areas in computing. A hardware cache keeps data closer to the processor core, avoiding the memory latency. A disk cache avoids expensive read or write operations to disk by maintaining copies of data in main memory or combining smaller writes into larger chunks. A program may cache pre-computed data to avoid repeated evaluation of the same function.
Caching in ANKHOR is done in four different ways:
- Implicit caching, where the user does not specify nor notice that data is to be cached
- Macro level caching, a macro is requested to cache its results
- Explicit caching using cache operators
- Sheet level caching when using the ANKHOR HTTP server
The purpose of caching is to improve performance in the most frequent case without significantly delaying the rare cases. There is always a cost to caching in memory and CPU consumption, so it is not always beneficial to use it.
The repeated execution of a similar sequence of instruction over a set of data is one of the most common yet also most powerful elements of digital computers. It is the moment when the effort of programming pays off, exceeding the cost of creating the program by using it more than once.
ANKHOR supports various types of repeated execution and I will cover five of them in this article: implicit, loop, recursive, while and shard. The article uses a little fractal generator as a sample to provide some eye candy.
The Fractal Algorithm
I will use the well- known Mandelbrot set as a fractal image. The algorithm is based on the repeated execution of a simple formula Mn+1=Mn2+R where M and R are numbers taken from the complex plane. The sequence of Ms can take one of three routes; it can explode into infinity, get into a repeating sequence or dwindle down to zero.
Meta Programming is a concept that dates back to languages such as LISP or Smalltalk. The term is used for programs that write or modify other programs – or perform operations on themselves. Some languages have a dedicated “meta” level outside the language, such as the C++ template system other such as LISP make no real distinction between programs and data.
It is an extremely powerful concept and most modern programming systems have at least some elements of meta programming in their toolbox.
Graphs and Operators as Values
Operators and Graphs of Operators can be used as first class data type values in ANKHOR. They can be created, inspected, placed in other data structures, separated, combined and executed. The simplest way to create and use an operator as a value is to copy a graph as value using the context menu.
Tables are the major data element of ANKHOR FlowSheet. Their structure and usage is a mix of the tables in classic spreadsheets, SQL databases and arrays/structures/dictionaries in programming languages. They overcome several of the limitations of tables found in those environments.
ANKHOR Tables can be large both in number of rows as well as number of columns. Most SQL databases have a strong limit on the number of possible columns. Spreadsheets are also quite limited in number of columns as well as rows.
It is not uncommon to have tables with millions of columns in ANKHOR.