<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>machine Wiki Rss Feed</title><link>http://machine.codeplex.com/wikipage</link><description>machine Wiki Rss Description</description><item><title>Updated Wiki: Home</title><link>http://machine.codeplex.com/wikipage?version=18</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;This project has been moved! Check out the new &lt;a href="http://numl.net"&gt;page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Source code has also been moved to &lt;a href="https://github.com/sethjuarez/numl"&gt;
github&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>SethJuarez</author><pubDate>Mon, 04 Mar 2013 20:48:28 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130304084828P</guid></item><item><title>Updated Wiki: Home</title><link>http://machine.codeplex.com/wikipage?version=17</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;This project has been moved! Check out the new page: &lt;a href="http://numl.net"&gt;
http://numl.net&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Source code has also been moved to &lt;a href="https://github.com/sethjuarez/numl"&gt;
github&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>SethJuarez</author><pubDate>Mon, 04 Mar 2013 20:47:18 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130304084718P</guid></item><item><title>Updated Wiki: Home</title><link>http://machine.codeplex.com/wikipage?version=16</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;This project has been moved! Check out the new page: &lt;a href="http://numl.net"&gt;
http://numl.net&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Source code has also been moved to &lt;a href="https://github.com/sethjuarez/numl"&gt;
github&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>SethJuarez</author><pubDate>Mon, 04 Mar 2013 20:47:03 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130304084703P</guid></item><item><title>Updated Wiki: Home</title><link>http://machine.codeplex.com/wikipage?version=15</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;This project has been moved! Check out the new page: &lt;a href="http://numl.net"&gt;
http://numl.net&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>SethJuarez</author><pubDate>Mon, 04 Mar 2013 20:46:01 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130304084601P</guid></item><item><title>Updated Wiki: Home</title><link>http://machine.codeplex.com/wikipage?version=14</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;This project has been moved! Check out the new page: http://numl.net&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>SethJuarez</author><pubDate>Mon, 04 Mar 2013 20:45:35 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20130304084535P</guid></item><item><title>Updated Wiki: Home</title><link>http://machine.codeplex.com/wikipage?version=13</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;Project Description&lt;/h1&gt;
&lt;p&gt;This library is designed to assist in the use of common Machine Learning Algorithms in conjunction with the .NET platform. It is designed to include the most popular supervised and unsupervised learning algorithms while minimizing the friction involved with
 creating the predictive models. &lt;/p&gt;
&lt;h2&gt;Supervised Learning&lt;/h2&gt;
&lt;p&gt;Supervised learning is an approach in machine learning where the system is provided with labeled examples of a problem and the computer creates a model to predict future unlabeled examples. These classifiers are further divided into the following sets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Binary Classification – Predicting a Yes/No type value &lt;/li&gt;&lt;li&gt;Multi-Class Classification – Predicting a value from a finite set (i.e. {A, B, C, D } or {1, 2, 3, 4})
&lt;/li&gt;&lt;li&gt;Regression – Predicting a continuous value (i.e. a number) &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Currently the library contains:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;strong&gt;Perceptron Algorithm&lt;/strong&gt; (Only supports binary classification for now)
&lt;br&gt;
Using this algorithm involves marking up a class with features (used to predict) and the target label (what to predict).
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;enum&lt;/span&gt; Grade
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3:   A,
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4:   B,
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  5:   C,
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  6:   D,
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  7:   F
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  8: }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  9: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 10: &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; Student
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 11: {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 12:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 13:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Name { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 14: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 15:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 16:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; Grade Grade { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 17: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 18:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 19:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;double&lt;/span&gt; GPA { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 20: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 21:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 22:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; Age { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 23: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 24:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 25:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; Tall { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 26: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 27:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 28:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; Friends { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 29: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 30:   [Label]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 31:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; Good { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 32: }&lt;/pre&gt;&lt;/pre&gt;
&lt;br&gt;
Once a class is marked up in this fashion, the a classifier is generated from a list of objects instantiated from the data class. A new object can then be the target of prediction based on the model generated:
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var model = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; PerceptronModel&amp;lt;Student&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var classifier = model.Generate(ListOfStudents);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4: classifier.Predict(NewStudentObject);&lt;/pre&gt;&lt;/pre&gt;
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Decision Tree&lt;/strong&gt; Classifier (Supports Binary and Multi-Class Classification)
&lt;br&gt;
The same labeling (attribute) technique is used to mark up a class definition. &lt;br&gt;
Using the DT algorithm is similar to the above usage of the Perceptron algorithm:
&lt;br&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var model = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; DecisionTreeModel&amp;lt;Student&amp;gt;(3, ImpurityType.Entropy);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var predictor = model.Generate(ListOfStudents);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4: predictor.Predict(NewStudent);&lt;/pre&gt;&lt;/pre&gt;
&lt;br&gt;
This model has two additional parameters: Tree Height (which is set to 3 in this instance) and Impurity Measure to find information gain (this example uses
&lt;a href="http://en.wikipedia.org/wiki/Entropy_(information_theory)" target="_blank"&gt;
Entropy&lt;/a&gt;: &lt;a href="http://en.wikipedia.org/wiki/Gini_coefficient" target="_blank"&gt;
Gini&lt;/a&gt; and Max Error are also included). &lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;Unsupervised Learning&lt;/h2&gt;
&lt;p&gt;Unsupervised learning is an approach which involves learning about the shape of unlabeled data. This library currently contains:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;KMeans&lt;/strong&gt; – Performs automatic grouping of data into K groups (specified a priori)
&lt;br&gt;
Labeling data is the same as for the supervised learning algorithms with the exception that these algorithms ignore the [Label] attribute:
&lt;br&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var kmeans = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; KMeans&amp;lt;Student&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var grouping = kmeans.Generate(ListOfStudents, 2);&lt;/pre&gt;&lt;/pre&gt;
Here the KMeans algorithm is grouping the ListOfStudents into two groups returning an array corresponding to the appropriate group for each student (in this case group 0 or group 1)
&lt;/li&gt;&lt;li&gt;Hierarchical Clustering – In progress! &lt;/li&gt;&lt;/ol&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;h1&gt;Planning&lt;/h1&gt;
&lt;p&gt;Currently planning/hoping to do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Boosting" target="_blank"&gt;Boosting&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/Bootstrap_aggregating" target="_blank"&gt;Bagging&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Hierarchical_clustering" target="_blank"&gt;Hierarchical Clustering&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Naive_Bayes_classifier" target="_blank"&gt;Naïve Bayes Classifier&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Collaborative_filtering" target="_blank"&gt;Collaborative filtering&lt;/a&gt; algorithms (suggest a product, friend etc.)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Latent_semantic_analysis" target="_blank"&gt;Latent Semantic Analysis&lt;/a&gt; (for better searching of text etc.)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Support_vector_machine" target="_blank"&gt;Support Vector Machines&lt;/a&gt; (more powerful classifier)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Principal_component_analysis" target="_blank"&gt;Principal Component Analysis&lt;/a&gt; – Aids in dimensionality reduction which should allow/facilitate learning from images
&lt;/li&gt;&lt;li&gt;*Maybe* – Common AI algorithms such as &lt;a href="http://en.wikipedia.org/wiki/A*_search_algorithm" target="_blank"&gt;
A*&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Beam_search" target="_blank"&gt;Beam Search&lt;/a&gt;,
&lt;a href="http://en.wikipedia.org/wiki/Minimax" target="_blank"&gt;Minimax&lt;/a&gt; etc. &lt;br&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;b&gt;&lt;/b&gt;
&lt;h1&gt;Contact Me&lt;/h1&gt;
&lt;p&gt;You can email me at sethj AT devexpress.com or follow me on twitter: &lt;a href="http://www.twitter.com/sethjuarez" target="_blank"&gt;
@sethjuarez&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.devexpress.com"&gt;&lt;img title="Devexpress" border="0" alt="Devexpress" src="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=machine&amp;DownloadId=211047" width="143" height="40" style="border-bottom:0px; border-left:0px; padding-left:0px; padding-right:0px; display:inline; border-top:0px; border-right:0px; padding-top:0px"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;for sponsoring and allowing me time to work on it!&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>SethJuarez</author><pubDate>Wed, 23 Feb 2011 23:27:51 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110223112751P</guid></item><item><title>Updated Wiki: Home</title><link>http://machine.codeplex.com/wikipage?version=12</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;Project Description&lt;/h1&gt;
&lt;p&gt;This library is designed to assist in the use of common Machine Learning Algorithms in conjunction with the .NET platform. It is designed to include the most popular supervised and unsupervised learning algorithms while minimizing the friction involved with
 creating the predictive models. &lt;/p&gt;
&lt;h2&gt;Supervised Learning&lt;/h2&gt;
&lt;p&gt;Supervised learning is an approach in machine learning where the system is provided with labeled examples of a problem and the computer creates a model to predict future unlabeled examples. These classifiers are further divided into the following sets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Binary Classification – Predicting a Yes/No type value &lt;/li&gt;&lt;li&gt;Multi-Class Classification – Predicting a value from a finite set (i.e. {A, B, C, D } or {1, 2, 3, 4})
&lt;/li&gt;&lt;li&gt;Regression – Predicting a continuous value (i.e. a number) &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Currently the library contains:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;strong&gt;Perceptron Algorithm&lt;/strong&gt; (Only supports binary classification for now)
&lt;br&gt;
Using this algorithm involves marking up a class with features (used to predict) and the target label (what to predict).
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;enum&lt;/span&gt; Grade
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3:   A,
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4:   B,
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  5:   C,
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  6:   D,
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  7:   F
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  8: }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  9: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 10: &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; Student
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 11: {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 12:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 13:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Name { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 14: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 15:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 16:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; Grade Grade { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 17: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 18:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 19:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;double&lt;/span&gt; GPA { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 20: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 21:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 22:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; Age { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 23: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 24:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 25:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; Tall { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 26: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 27:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 28:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; Friends { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 29: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 30:   [Label]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 31:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; Good { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 32: }&lt;/pre&gt;&lt;/pre&gt;
&lt;br&gt;
Once a class is marked up in this fashion, the a classifier is generated from a list of objects instantiated from the data class. A new object can then be the target of prediction based on the model generated:
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var model = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; PerceptronModel&amp;lt;Student&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var classifier = model.Generate(ListOfStudents);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4: classifier.Predict(NewStudentObject);&lt;/pre&gt;&lt;/pre&gt;
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Decision Tree&lt;/strong&gt; Classifier (Supports Binary and Multi-Class Classification)
&lt;br&gt;
The same labeling (attribute) technique is used to mark up a class definition. &lt;br&gt;
Using the DT algorithm is similar to the above usage of the Perceptron algorithm:
&lt;br&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var model = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; DecisionTreeModel&amp;lt;Student&amp;gt;(3, ImpurityType.Entropy);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var predictor = model.Generate(ListOfStudents);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4: predictor.Predict(NewStudent);&lt;/pre&gt;&lt;/pre&gt;
&lt;br&gt;
This model has two additional parameters: Tree Height (which is set to 3 in this instance) and Impurity Measure to find information gain (this example uses
&lt;a href="http://en.wikipedia.org/wiki/Entropy_(information_theory)" target="_blank"&gt;
Entropy&lt;/a&gt;: &lt;a href="http://en.wikipedia.org/wiki/Gini_coefficient" target="_blank"&gt;
Gini&lt;/a&gt; and Max Error are also included). &lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;Unsupervised Learning&lt;/h2&gt;
&lt;p&gt;Unsupervised learning is an approach which involves learning about the shape of unlabeled data. This library currently contains:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;KMeans&lt;/strong&gt; – Performs automatic grouping of data into K groups (specified a priori)
&lt;br&gt;
Labeling data is the same as for the supervised learning algorithms with the exception that these algorithms ignore the [Label] attribute:
&lt;br&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var kmeans = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; KMeans&amp;lt;Student&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var grouping = kmeans.Generate(ListOfStudents, 2);&lt;/pre&gt;&lt;/pre&gt;
Here the KMeans algorithm is grouping the ListOfStudents into two groups returning an array corresponding to the appropriate group for each student (in this case group 0 or group 1)
&lt;/li&gt;&lt;li&gt;Hierarchical Clustering – In progress! &lt;/li&gt;&lt;/ol&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;h1&gt;Planning&lt;/h1&gt;
&lt;p&gt;Currently planning/hoping to do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Boosting" target="_blank"&gt;Boosting&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/Bootstrap_aggregating" target="_blank"&gt;Bagging&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Hierarchical_clustering" target="_blank"&gt;Hierarchical Clustering&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Naive_Bayes_classifier" target="_blank"&gt;Naïve Bayes Classifier&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Collaborative_filtering" target="_blank"&gt;Collaborative filtering&lt;/a&gt; algorithms (suggest a product, friend etc.)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Latent_semantic_analysis" target="_blank"&gt;Latent Semantic Analysis&lt;/a&gt; (for better searching of text etc.)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Support_vector_machine" target="_blank"&gt;Support Vector Machines&lt;/a&gt; (more powerful classifier)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Principal_component_analysis" target="_blank"&gt;Principal Component Analysis&lt;/a&gt; – Aids in dimensionality reduction which should allow/facilitate learning from images
&lt;/li&gt;&lt;li&gt;*Maybe* – Common AI algorithms such as &lt;a href="http://en.wikipedia.org/wiki/A*_search_algorithm" target="_blank"&gt;
A*&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Beam_search" target="_blank"&gt;Beam Search&lt;/a&gt;,
&lt;a href="http://en.wikipedia.org/wiki/Minimax" target="_blank"&gt;Minimax&lt;/a&gt; etc. &lt;br&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;b&gt;&lt;/b&gt;
&lt;h1&gt;Contact Me&lt;/h1&gt;
&lt;p&gt;You can email me at sethj AT devexpress.com or follow me on twitter: &lt;a href="http://www.twitter.com/sethjuarez" target="_blank"&gt;
@sethjuarez&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>SethJuarez</author><pubDate>Wed, 23 Feb 2011 23:20:07 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110223112007P</guid></item><item><title>Updated Wiki: Home</title><link>http://machine.codeplex.com/wikipage?version=11</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;Project Description&lt;/h1&gt;
&lt;p&gt;This library is designed to assist in the use of common Machine Learning Algorithms in conjunction with the .NET platform. It is designed to include the most popular supervised and unsupervised learning algorithms while minimizing the friction involved with
 creating the predictive models. &lt;/p&gt;
&lt;h2&gt;Supervised Learning&lt;/h2&gt;
&lt;p&gt;Supervised learning is an approach in machine learning where the system is provided with labeled examples of a problem and the computer creates a model to predict future unlabeled examples. These classifiers are further divided into the following sets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Binary Classification – Predicting a Yes/No type value &lt;/li&gt;&lt;li&gt;Multi-Class Classification – Predicting a value from a finite set (i.e. {A, B, C, D } or {1, 2, 3, 4})
&lt;/li&gt;&lt;li&gt;Regression – Predicting a continuous value (i.e. a number) &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Currently the library contains:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;strong&gt;Perceptron Algorithm&lt;/strong&gt; (Only supports binary classification for now)
&lt;br&gt;
Using this algorithm involves marking up a class with features (used to predict) and the target label (what to predict).
&lt;p&gt;&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;enum&lt;/span&gt; Grade
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3:   A,
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4:   B,
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  5:   C,
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  6:   D,
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  7:   F
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  8: }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  9: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 10: &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; Student
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 11: {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 12:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 13:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Name { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 14: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 15:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 16:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; Grade Grade { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 17: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 18:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 19:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;double&lt;/span&gt; GPA { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 20: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 21:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 22:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; Age { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 23: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 24:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 25:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; Tall { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 26: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 27:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 28:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; Friends { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 29: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 30:   [Label]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 31:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; Good { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 32: }&lt;/pre&gt;&lt;/pre&gt;
&lt;br&gt;
Once a class is marked up in this fashion, the a classifier is generated from a list of objects instantiated from the data class. A new object can then be the target of prediction based on the model generated:
&lt;p&gt;&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var model = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; PerceptronModel&amp;lt;Student&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var classifier = model.Generate(ListOfStudents);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4: classifier.Predict(NewStudentObject);&lt;/pre&gt;&lt;/pre&gt;
&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Decision Tree&lt;/strong&gt; Classifier (Supports Binary and Multi-Class Classification)
&lt;br&gt;
The same labeling (attribute) technique is used to mark up a class definition. &lt;br&gt;
Using the DT algorithm is similar to the above usage of the Perceptron algorithm:
&lt;br&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var model = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; DecisionTreeModel&amp;lt;Student&amp;gt;(3, ImpurityType.Entropy);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var predictor = model.Generate(ListOfStudents);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4: predictor.Predict(NewStudent);&lt;/pre&gt;&lt;/pre&gt;
&lt;br&gt;
This model has two additional parameters: Tree Height (which is set to 3 in this instance) and Impurity Measure to find information gain (this example uses
&lt;a href="http://en.wikipedia.org/wiki/Entropy_(information_theory)" target="_blank"&gt;
Entropy&lt;/a&gt;: &lt;a href="http://en.wikipedia.org/wiki/Gini_coefficient" target="_blank"&gt;
Gini&lt;/a&gt; and Max Error are also included). &lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;Unsupervised Learning&lt;/h2&gt;
&lt;p&gt;Unsupervised learning is an approach which involves learning about the shape of unlabeled data. This library currently contains:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;KMeans&lt;/strong&gt; – Performs automatic grouping of data into K groups (specified a priori)
&lt;br&gt;
Labeling data is the same as for the supervised learning algorithms with the exception that these algorithms ignore the [Label] attribute:
&lt;br&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var kmeans = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; KMeans&amp;lt;Student&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var grouping = kmeans.Generate(ListOfStudents, 2);&lt;/pre&gt;&lt;/pre&gt;
Here the KMeans algorithm is grouping the ListOfStudents into two groups returning an array corresponding to the appropriate group for each student (in this case group 0 or group 1)
&lt;/li&gt;&lt;li&gt;Hierarchical Clustering – In progress! &lt;/li&gt;&lt;/ol&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;h1&gt;Planning&lt;/h1&gt;
&lt;p&gt;Currently planning/hoping to do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Boosting" target="_blank"&gt;Boosting&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/Bootstrap_aggregating" target="_blank"&gt;Bagging&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Hierarchical_clustering" target="_blank"&gt;Hierarchical Clustering&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Collaborative_filtering" target="_blank"&gt;Collaborative filtering&lt;/a&gt; algorithms (suggest a product, friend etc.)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Latent_semantic_analysis" target="_blank"&gt;Latent Semantic Analysis&lt;/a&gt; (for better searching of text etc.)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Support_vector_machine" target="_blank"&gt;Support Vector Machines&lt;/a&gt; (more powerful classifier)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Principal_component_analysis" target="_blank"&gt;Principal Component Analysis&lt;/a&gt; – Aids in dimensionality reduction which should allow/facilitate learning from images
&lt;/li&gt;&lt;li&gt;*Maybe* – Common AI algorithms such as &lt;a href="http://en.wikipedia.org/wiki/A*_search_algorithm" target="_blank"&gt;
A*&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Beam_search" target="_blank"&gt;Beam Search&lt;/a&gt;,
&lt;a href="http://en.wikipedia.org/wiki/Minimax" target="_blank"&gt;Minimax&lt;/a&gt; etc. &lt;br&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;b&gt;&lt;/b&gt;
&lt;h1&gt;Contact Me&lt;/h1&gt;
&lt;p&gt;You can email me at sethj AT devexpress.com or follow me on twitter: &lt;a href="http://www.twitter.com/sethjuarez" target="_blank"&gt;
@sethjuarez&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>SethJuarez</author><pubDate>Wed, 23 Feb 2011 23:12:24 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110223111224P</guid></item><item><title>Updated Wiki: Home</title><link>http://machine.codeplex.com/wikipage?version=10</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;Project Description&lt;/h1&gt;
&lt;p&gt;This library is designed to assist in the use of common Machine Learning Algorithms in conjunction with the .NET platform. It is designed to include the most popular supervised and unsupervised learning algorithms while minimizing the friction involved with
 creating the predictive models. &lt;/p&gt;
&lt;h2&gt;Supervised Learning&lt;/h2&gt;
&lt;p&gt;Supervised learning is an approach in machine learning where the system is provided with labeled examples of a problem and the computer creates a model to predict future unlabeled examples. These classifiers are further divided into the following sets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Binary Classification – Predicting a Yes/No type value &lt;/li&gt;&lt;li&gt;Multi-Class Classification – Predicting a value from a finite set (i.e. {A, B, C, D } or {1, 2, 3, 4})
&lt;/li&gt;&lt;li&gt;Regression – Predicting a continuous value (i.e. a number) &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Currently the library contains:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Perceptron Algorithm (Only supports binary classification for now) &lt;br&gt;
Using this algorithm involves marking up a class with features (used to predict) and the target label (what to predict).
&lt;p&gt;&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;enum&lt;/span&gt; Grade
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3:   A,
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4:   B,
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  5:   C,
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  6:   D,
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  7:   F
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  8: }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  9: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 10: &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; Student
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 11: {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 12:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 13:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Name { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 14: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 15:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 16:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; Grade Grade { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 17: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 18:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 19:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;double&lt;/span&gt; GPA { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 20: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 21:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 22:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; Age { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 23: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 24:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 25:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; Tall { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 26: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 27:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 28:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; Friends { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 29: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 30:   [Label]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 31:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; Good { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 32: }&lt;/pre&gt;&lt;/pre&gt;
&lt;br&gt;
Once a class is marked up in this fashion, the a classifier is generated from a list of objects instantiated from the data class. A new object can then be the target of prediction based on the model generated:
&lt;p&gt;&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var model = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; PerceptronModel&amp;lt;Student&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var classifier = model.Generate(ListOfStudents);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4: classifier.Predict(NewStudentObject);&lt;/pre&gt;&lt;/pre&gt;
&lt;/li&gt;&lt;li&gt;Decision Tree Classifier (Supports Binary and Multi-Class Classification) &lt;br&gt;
The same labeling (attribute) technique is used to mark up a class definition. &lt;br&gt;
Using the DT algorithm is similar to the above usage of the Perceptron algorithm:
&lt;br&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var model = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; DecisionTreeModel&amp;lt;Student&amp;gt;(3, ImpurityType.Entropy);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var predictor = model.Generate(ListOfStudents);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4: predictor.Predict(NewStudent);&lt;/pre&gt;&lt;/pre&gt;
&lt;br&gt;
This model has two additional parameters: Tree Height (which is set to 3 in this instance) and Impurity Measure to find information gain (this example uses
&lt;a href="http://en.wikipedia.org/wiki/Entropy_(information_theory)" target="_blank"&gt;
Entropy&lt;/a&gt;: &lt;a href="http://en.wikipedia.org/wiki/Gini_coefficient" target="_blank"&gt;
Gini&lt;/a&gt; and Max Error are also included). &lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;Unsupervised Learning&lt;/h2&gt;
&lt;p&gt;Unsupervised learning is an approach which involves learning about the shape of unlabeled data. This library currently contains:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;KMeans – Performs automatic grouping of data into K groups (specified a priori)
&lt;br&gt;
Labeling data is the same as for the supervised learning algorithms with the exception that these algorithms ignore the [Label] attribute:
&lt;br&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var kmeans = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; KMeans&amp;lt;Student&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var grouping = kmeans.Generate(ListOfStudents, 2);&lt;/pre&gt;&lt;/pre&gt;
Here the KMeans algorithm is grouping the ListOfStudents into two groups returning an array corresponding to the appropriate group for each student (in this case group 0 or group 1)
&lt;/li&gt;&lt;li&gt;Hierarchical Clustering – In progress! &lt;/li&gt;&lt;/ol&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;h1&gt;Planning&lt;/h1&gt;
&lt;p&gt;Currently planning/hoping to do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Boosting" target="_blank"&gt;Boosting&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/Bootstrap_aggregating" target="_blank"&gt;Bagging&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Hierarchical_clustering" target="_blank"&gt;Hierarchical Clustering&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Collaborative_filtering" target="_blank"&gt;Collaborative filtering&lt;/a&gt; algorithms (suggest a product, friend etc.)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Latent_semantic_analysis" target="_blank"&gt;Latent Semantic Analysis&lt;/a&gt; (for better searching of text etc.)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Support_vector_machine" target="_blank"&gt;Support Vector Machines&lt;/a&gt; (more powerful classifier)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Principal_component_analysis" target="_blank"&gt;Principal Component Analysis&lt;/a&gt; – Aids in dimensionality reduction which should allow/facilitate learning from images
&lt;/li&gt;&lt;li&gt;*Maybe* – Common AI algorithms such as &lt;a href="http://en.wikipedia.org/wiki/A*_search_algorithm" target="_blank"&gt;
A*&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Beam_search" target="_blank"&gt;Beam Search&lt;/a&gt;,
&lt;a href="http://en.wikipedia.org/wiki/Minimax" target="_blank"&gt;Minimax&lt;/a&gt; etc. &lt;br&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;b&gt;&lt;/b&gt;
&lt;h1&gt;Contact Me&lt;/h1&gt;
&lt;p&gt;You can email me at sethj AT devexpress.com or follow me on twitter: &lt;a href="http://www.twitter.com/sethjuarez" target="_blank"&gt;
@sethjuarez&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>SethJuarez</author><pubDate>Wed, 23 Feb 2011 23:12:00 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110223111200P</guid></item><item><title>Updated Wiki: Home</title><link>http://machine.codeplex.com/wikipage?version=9</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;Project Description&lt;/h1&gt;
&lt;p&gt;This library is designed to assist in the use of common Machine Learning Algorithms in conjunction with the .NET platform. It is designed to include the most popular supervised and unsupervised learning algorithms while minimizing the friction involved with
 creating the predictive models. &lt;/p&gt;
&lt;h2&gt;Supervised Learning&lt;/h2&gt;
&lt;p&gt;Supervised learning is an approach in machine learning where the system is provided with labeled examples of a problem and the computer creates a model to predict future unlabeled examples. These classifiers are further divided into the following sets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Binary Classification – Predicting a Yes/No type value &lt;/li&gt;&lt;li&gt;Multi-Class Classification – Predicting a value from a finite set (i.e. {A, B, C, D } or {1, 2, 3, 4})
&lt;/li&gt;&lt;li&gt;Regression – Predicting a continuous value (i.e. a number) &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Currently the library contains:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Perceptron Algorithm (Only supports binary classification for now) &lt;br&gt;
Using this algorithm involves marking up a class with features (used to predict) and the target label (what to predict).
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; Student
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;double&lt;/span&gt; GradeToPercent()
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  5:   {
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  6:     &lt;span style="color:#0000ff"&gt;double&lt;/span&gt; grade = 0;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  7:     &lt;span style="color:#0000ff"&gt;switch&lt;/span&gt; (Grade)
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  8:     {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  9:       &lt;span style="color:#0000ff"&gt;case&lt;/span&gt; Grade.A:
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 10:         grade = 90;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 11:         &lt;span style="color:#0000ff"&gt;break&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 12:       &lt;span style="color:#0000ff"&gt;case&lt;/span&gt; Grade.B:
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 13:         grade = 80;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 14:         &lt;span style="color:#0000ff"&gt;break&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 15:       &lt;span style="color:#0000ff"&gt;case&lt;/span&gt; Grade.C:
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 16:         grade = 70;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 17:         &lt;span style="color:#0000ff"&gt;break&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 18:       &lt;span style="color:#0000ff"&gt;case&lt;/span&gt; Grade.D:
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 19:         grade = 60;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 20:         &lt;span style="color:#0000ff"&gt;break&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 21:       &lt;span style="color:#0000ff"&gt;case&lt;/span&gt; Grade.F:
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 22:         grade = 50;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 23:         &lt;span style="color:#0000ff"&gt;break&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 24:     }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 25:     &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; grade;
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 26:   }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 27: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 28:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; Name { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 29: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 30:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; Grade Grade { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 31: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 32:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 33:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;double&lt;/span&gt; GPA { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 34: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 35:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 36:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; Age { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 37: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 38:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 39:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; Tall { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 40: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 41:   [Feature]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 42:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; Friends { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 43: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 44:   [Label]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 45:   &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; Good { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt; 46: }&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Once a class is marked up in this fashion, the a classifier is generated from a list of objects instantiated from the data class. A new object can then be the target of prediction based on the model generated:&lt;/p&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var model = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; PerceptronModel&amp;lt;Student&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var classifier = model.Generate(ListOfStudents);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4: classifier.Predict(NewStudentObject);&lt;/pre&gt;&lt;/pre&gt;
&lt;/li&gt;&lt;li&gt;Decision Tree Classifier (Supports Binary and Multi-Class Classification) &lt;br&gt;
The same labeling (attribute) technique is used to mark up a class definition. &lt;br&gt;
Using the DT algorithm is similar to the above usage of the Perceptron algorithm:
&lt;br&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var model = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; DecisionTreeModel&amp;lt;Student&amp;gt;(3, ImpurityType.Entropy);
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var predictor = model.Generate(ListOfStudents);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  3: 
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  4: predictor.Predict(NewStudent);&lt;/pre&gt;&lt;/pre&gt;
&lt;br&gt;
This model has two additional parameters: Tree Height (which is set to 3 in this instance) and Impurity Measure to find information gain (this example uses
&lt;a href="http://en.wikipedia.org/wiki/Entropy_(information_theory)" target="_blank"&gt;
Entropy&lt;/a&gt;: &lt;a href="http://en.wikipedia.org/wiki/Gini_coefficient" target="_blank"&gt;
Gini&lt;/a&gt; and Max Error are also included). &lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;Unsupervised Learning&lt;/h2&gt;
&lt;p&gt;Unsupervised learning is an approach which involves learning about the shape of unlabeled data. This library currently contains:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;KMeans – Performs automatic grouping of data into K groups (specified a priori)
&lt;br&gt;
Labeling data is the same as for the supervised learning algorithms with the exception that these algorithms ignore the [Label] attribute:
&lt;br&gt;
&lt;pre style="border-bottom:#cecece 1px solid; border-left:#cecece 1px solid; padding-bottom:5px; background-color:#fbfbfb; min-height:40px; padding-left:5px; width:700px; padding-right:5px; overflow:auto; border-top:#cecece 1px solid; border-right:#cecece 1px solid; padding-top:5px"&gt;&lt;pre style="background-color:#fbfbfb; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  1: var kmeans = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; KMeans&amp;lt;Student&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff; margin:0em; width:100%; font-family:consolas,'Courier New',courier,monospace; font-size:12px"&gt;  2: var grouping = kmeans.Generate(ListOfStudents, 2);&lt;/pre&gt;&lt;/pre&gt;
Here the KMeans algorithm is grouping the ListOfStudents into two groups returning an array corresponding to the appropriate group for each student (in this case group 0 or group 1)
&lt;/li&gt;&lt;li&gt;Hierarchical Clustering – In progress! &lt;/li&gt;&lt;/ol&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;h1&gt;Planning&lt;/h1&gt;
&lt;p&gt;Currently planning/hoping to do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Boosting" target="_blank"&gt;Boosting&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/Bootstrap_aggregating" target="_blank"&gt;Bagging&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Hierarchical_clustering" target="_blank"&gt;Hierarchical Clustering&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Collaborative_filtering" target="_blank"&gt;Collaborative filtering&lt;/a&gt; algorithms (suggest a product, friend etc.)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Latent_semantic_analysis" target="_blank"&gt;Latent Semantic Analysis&lt;/a&gt; (for better searching of text etc.)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Support_vector_machine" target="_blank"&gt;Support Vector Machines&lt;/a&gt; (more powerful classifier)
&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Principal_component_analysis" target="_blank"&gt;Principal Component Analysis&lt;/a&gt; – Aids in dimensionality reduction which should allow/facilitate learning from images
&lt;/li&gt;&lt;li&gt;*Maybe* – Common AI algorithms such as &lt;a href="http://en.wikipedia.org/wiki/A*_search_algorithm" target="_blank"&gt;
A*&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Beam_search" target="_blank"&gt;Beam Search&lt;/a&gt;,
&lt;a href="http://en.wikipedia.org/wiki/Minimax" target="_blank"&gt;Minimax&lt;/a&gt; etc. &lt;br&gt;
&lt;/li&gt;&lt;/ol&gt;
&lt;b&gt;&lt;/b&gt;
&lt;h1&gt;Contact Me&lt;/h1&gt;
&lt;p&gt;You can email me at sethj AT devexpress.com or follow me on twitter: &lt;a href="http://www.twitter.com/sethjuarez" target="_blank"&gt;
@sethjuarez&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>SethJuarez</author><pubDate>Wed, 23 Feb 2011 23:09:32 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110223110932P</guid></item><item><title>Updated Wiki: Temporary Post Used For Theme Detection (4d8d0239-fe86-4953-bb1f-588dda696816 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)</title><link>http://machine.codeplex.com/wikipage?title=Temporary Post Used For Theme Detection (4d8d0239-fe86-4953-bb1f-588dda696816 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;This is a temporary post that was not deleted. Please delete this manually. (78b4a361-cea7-4a8e-b5e9-f5228b0941e7 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>SethJuarez</author><pubDate>Wed, 23 Feb 2011 22:36:48 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Temporary Post Used For Theme Detection (4d8d0239-fe86-4953-bb1f-588dda696816 - 3bfe001a-32de-4114-a6b4-4005b770f6d7) 20110223103648P</guid></item><item><title>Updated Wiki: Matrix.Dot</title><link>http://machine.codeplex.com/wikipage?title=Matrix.Dot&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;Matrix.Dot&lt;/h2&gt;
&lt;p&gt;This method calculates the “dot product” of a Matrix and Vector object.&lt;/p&gt;
&lt;p&gt;The first overload takes a Matrix object as the first argument and a Vector object as a second argument.&amp;#160; The dot product is then calculated by using each row in the matrix against the corresponding fields in the vector. For example:&lt;/p&gt;
&lt;pre&gt;var m = new Matrix(new double[,] 
    {{1,2},
     {3,4}});
var v = new Vector(new double[] {8,9});
var v2 = Matrix.Dot(m, v);
// v2 is now equal to:
// { (1*8)&amp;#43;(2*9), (3*8)&amp;#43;(4*9) } = { 26, 60 }&lt;/pre&gt;
&lt;p&gt;The second overload takes a Vector as the first argument and a Matrix as the second argument.&amp;#160; The dot product is then calculated by using each column in the matrix against the corresponding fields in the vector. For example:&lt;/p&gt;
&lt;pre&gt;var m = new Matrix(new double[,] 
    {{1,2},
     {3,4}});
var v = new Vector(new double[] {8,9});
var v2 = Matrix.Dot(v, m);
// v2 is now equal to:
// { (1*8)&amp;#43;(3*9), (2*8)&amp;#43;(4*9) } = { 35, 52 }&lt;/pre&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>TimNelson</author><pubDate>Tue, 08 Feb 2011 05:31:17 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Matrix.Dot 20110208053117A</guid></item><item><title>Updated Wiki: Matrix Object</title><link>http://machine.codeplex.com/wikipage?title=Matrix Object&amp;version=6</link><description>&lt;div class="wikidoc"&gt;
&lt;h3&gt;&lt;font style="font-weight:bold"&gt;Static Methods&lt;/font&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cholesky &lt;/li&gt;&lt;li&gt;&lt;a href="http://machine.codeplex.com/wikipage?title=Matrix.Dot"&gt;Dot&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Eigs &lt;/li&gt;&lt;li&gt;FrobeniusNorm &lt;/li&gt;&lt;li&gt;&lt;a href="http://machine.codeplex.com/wikipage?title=Matrix.Identity"&gt;Identity&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;LU &lt;/li&gt;&lt;li&gt;Norm &lt;/li&gt;&lt;li&gt;NormRand &lt;/li&gt;&lt;li&gt;&lt;a href="http://machine.codeplex.com/wikipage?title=Matrix.Ones"&gt;Ones&lt;/a&gt; &lt;/li&gt;&lt;li&gt;QR &lt;/li&gt;&lt;li&gt;Rand &lt;/li&gt;&lt;li&gt;Round &lt;/li&gt;&lt;li&gt;Sum &lt;/li&gt;&lt;li&gt;SVD &lt;/li&gt;&lt;li&gt;&lt;a href="http://machine.codeplex.com/wikipage?title=Matrix.Zeros"&gt;Zeros&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h3&gt;&lt;font style="font-weight:bold"&gt;Methods&lt;/font&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cholesky &lt;/li&gt;&lt;li&gt;Eigs &lt;/li&gt;&lt;li&gt;GetCols &lt;/li&gt;&lt;li&gt;GetRows &lt;/li&gt;&lt;li&gt;GetVector &lt;/li&gt;&lt;li&gt;Indices &lt;/li&gt;&lt;li&gt;Norm &lt;/li&gt;&lt;li&gt;Remove &lt;/li&gt;&lt;li&gt;Round &lt;/li&gt;&lt;li&gt;Slice &lt;/li&gt;&lt;li&gt;Stack &lt;/li&gt;&lt;li&gt;Sum &lt;/li&gt;&lt;li&gt;SVD &lt;/li&gt;&lt;li&gt;ToVector &lt;/li&gt;&lt;li&gt;Trace &lt;/li&gt;&lt;li&gt;Transpose &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h3&gt;&lt;font style="font-weight:bold"&gt;Properties&lt;/font&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cols &lt;/li&gt;&lt;li&gt;Rows &lt;/li&gt;&lt;li&gt;T &lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>TimNelson</author><pubDate>Tue, 08 Feb 2011 05:03:38 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Matrix Object 20110208050338A</guid></item><item><title>Updated Wiki: Matrix.Dot</title><link>http://machine.codeplex.com/wikipage?title=Matrix.Dot&amp;version=1</link><description>&lt;div class="wikidoc"&gt;Matrix.Dot skeleton page&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>TimNelson</author><pubDate>Tue, 08 Feb 2011 05:03:14 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Matrix.Dot 20110208050314A</guid></item><item><title>Updated Wiki: Matrix.Zeros</title><link>http://machine.codeplex.com/wikipage?title=Matrix.Zeros&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;Matrix.Zeros&lt;/h2&gt;
&lt;p&gt;This static method returns a new Matrix object with all the values initialized to zero.&amp;#160; The first overload takes a single integer
&lt;em&gt;n&lt;/em&gt; and returns an n by n matrix.&amp;#160; The second overload takes two integers (n,d) and returns a Matrix object with
&lt;em&gt;n&lt;/em&gt; rows and &lt;em&gt;d&lt;/em&gt; columns.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>TimNelson</author><pubDate>Tue, 08 Feb 2011 04:43:54 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Matrix.Zeros 20110208044354A</guid></item><item><title>Updated Wiki: Matrix.Ones</title><link>http://machine.codeplex.com/wikipage?title=Matrix.Ones&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;Matrix.Ones&lt;/h2&gt;
&lt;p&gt;This static method returns a new Matrix object with all the values initialized to one.&amp;#160; The first overload takes a single integer
&lt;em&gt;n&lt;/em&gt; and returns an n by n matrix.&amp;#160; The second overload takes two integers (n,d) and returns a Matrix object with
&lt;em&gt;n&lt;/em&gt; rows and &lt;em&gt;d&lt;/em&gt; columns.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>TimNelson</author><pubDate>Tue, 08 Feb 2011 04:43:40 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Matrix.Ones 20110208044340A</guid></item><item><title>Updated Wiki: Matrix.Identity</title><link>http://machine.codeplex.com/wikipage?title=Matrix.Identity&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;Matrix.Identity&lt;/h2&gt;
&lt;p&gt;This static method returns a new identity matrix of the requested size.&amp;#160; The first overload takes a single integer
&lt;em&gt;n&lt;/em&gt; and returns an n by n matrix.&amp;#160; The second overload takes two integers (n,d) and returns a Matrix object with
&lt;em&gt;n&lt;/em&gt; rows and &lt;em&gt;d&lt;/em&gt; columns.&lt;/p&gt;
&lt;p&gt;An identity matrix is an {m, n} matrix with all values where m != n are zero and all values where m == n are one. For example:&lt;/p&gt;
&lt;pre&gt;var identity = Matrix.Identity(3);
// identity is
// {{1, 0, 0},
//  {0, 1, 0},
//  {0, 0, 1}}
//
// notice that all values are zero except identity[0,0], identity[1,1] and identity[2,2].&lt;/pre&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>TimNelson</author><pubDate>Tue, 08 Feb 2011 04:43:02 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Matrix.Identity 20110208044302A</guid></item><item><title>Updated Wiki: Matrix Object</title><link>http://machine.codeplex.com/wikipage?title=Matrix Object&amp;version=5</link><description>&lt;div class="wikidoc"&gt;
&lt;h3&gt;&lt;font style="font-weight:bold"&gt;Static Methods&lt;/font&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cholesky &lt;/li&gt;&lt;li&gt;Dot &lt;/li&gt;&lt;li&gt;Eigs &lt;/li&gt;&lt;li&gt;FrobeniusNorm &lt;/li&gt;&lt;li&gt;&lt;a href="http://machine.codeplex.com/wikipage?title=Matrix.Identity"&gt;Identity&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;LU &lt;/li&gt;&lt;li&gt;Norm &lt;/li&gt;&lt;li&gt;NormRand &lt;/li&gt;&lt;li&gt;&lt;a href="http://machine.codeplex.com/wikipage?title=Matrix.Ones"&gt;Ones&lt;/a&gt; &lt;/li&gt;&lt;li&gt;QR &lt;/li&gt;&lt;li&gt;Rand &lt;/li&gt;&lt;li&gt;Round &lt;/li&gt;&lt;li&gt;Sum &lt;/li&gt;&lt;li&gt;SVD &lt;/li&gt;&lt;li&gt;&lt;a href="http://machine.codeplex.com/wikipage?title=Matrix.Zeros"&gt;Zeros&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h3&gt;&lt;font style="font-weight:bold"&gt;Methods&lt;/font&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cholesky &lt;/li&gt;&lt;li&gt;Eigs &lt;/li&gt;&lt;li&gt;GetCols &lt;/li&gt;&lt;li&gt;GetRows &lt;/li&gt;&lt;li&gt;GetVector &lt;/li&gt;&lt;li&gt;Indices &lt;/li&gt;&lt;li&gt;Norm &lt;/li&gt;&lt;li&gt;Remove &lt;/li&gt;&lt;li&gt;Round &lt;/li&gt;&lt;li&gt;Slice &lt;/li&gt;&lt;li&gt;Stack &lt;/li&gt;&lt;li&gt;Sum &lt;/li&gt;&lt;li&gt;SVD &lt;/li&gt;&lt;li&gt;ToVector &lt;/li&gt;&lt;li&gt;Trace &lt;/li&gt;&lt;li&gt;Transpose &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;h3&gt;&lt;font style="font-weight:bold"&gt;Properties&lt;/font&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cols &lt;/li&gt;&lt;li&gt;Rows &lt;/li&gt;&lt;li&gt;T &lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>TimNelson</author><pubDate>Tue, 08 Feb 2011 04:12:00 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Matrix Object 20110208041200A</guid></item><item><title>Updated Wiki: Matrix.Identity</title><link>http://machine.codeplex.com/wikipage?title=Matrix.Identity&amp;version=1</link><description>&lt;div class="wikidoc"&gt;Matrix.Identity skeleton page.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>TimNelson</author><pubDate>Tue, 08 Feb 2011 04:10:28 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Matrix.Identity 20110208041028A</guid></item><item><title>Updated Wiki: Matrix.Ones</title><link>http://machine.codeplex.com/wikipage?title=Matrix.Ones&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;This static method returns a new Matrix object with all the values initialized to one.&amp;#160; The first overload takes a single integer
&lt;em&gt;n&lt;/em&gt; and returns an n by n matrix.&amp;#160; The second overload takes two integers (n,d) and returns a Matrix object with
&lt;em&gt;n&lt;/em&gt; rows and &lt;em&gt;d&lt;/em&gt; columns.&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>TimNelson</author><pubDate>Tue, 08 Feb 2011 04:08:50 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Matrix.Ones 20110208040850A</guid></item></channel></rss>