📄 database.cs
字号:
using System;
using System.Data;
using VISUAL_BASIC_DATA_MINING_NET;
using VISUAL_BASIC_DATA_MINING_NET.APriori;
using VISUAL_BASIC_DATA_MINING_NET.DataTransformationServices;
using VISUAL_BASIC_DATA_MINING_NET.CustomEvents;
/// <summary>
/// The VISUAL_BASIC_DATA_MINING_NET namespace contains namespaces and classes used by this assembly.
/// </summary>
namespace VISUAL_BASIC_DATA_MINING_NET
{
/// <summary>
/// The VISUAL_BASIC_DATA_MINING_NET.APriori namespace contains class and methods used to implement the APriori
/// Market Based Analysis Data Mining Algorithm.
/// </summary>
/// <remarks>
namespace APriori
{
/// <summary>
/// The Database of transactions to be analyzed.
/// </summary>
public class Database : DataAccessLayer
{
/// <summary>
/// System.Data.DataSet variable for analyzing the Market Based Analysis data in memory.
/// </summary>
DataSet myTransactions = new DataSet("Data");
/// <summary>
/// System.Data.DataTable variable for the database transactions.
/// </summary>
DataTable myTable = new DataTable("TransactionTable");
/// <summary>
/// System.Data.DataTable variable for the transaction itemsets.
/// </summary>
DataTable itemsTable = new DataTable("ItemsetTable");
/// <summary>
/// System.Data.DataTable variable for the subsets of transaction itemsets.
/// </summary>
DataTable subsetTable = new DataTable("SubsetTable");
/// <summary>
/// System.Data.DataTable variable for the rules table expressing the confidence and support between itemsets.
/// </summary>
DataTable rulesTable = new DataTable("RulesTable");
/// <summary>
/// Initializes a new instance of the Database class using the parameterless default constructor.
/// </summary>
public Database()
{
//Create the transactions table.
this.CreateTransactionsTable();
//Create the Items Table.
this.CreateItemsetTable();
//Create the Subsets Table.
this.CreateSubsetTable();
//Create the Rules Table.
this.CreateRulesTable();
}
/// <summary>
/// Adds a transaction to the Transactions table.
/// </summary>
/// <param name="newDataRow">
/// A System.Data.DataRow object containing the data to add to the transactions table.
/// </param>
public void AddTransaction(DataRow newDataRow)
{
myTable.Rows.Add(newDataRow);
}
/// <summary>
/// Adds a comma separated list of transactions.
/// </summary>
/// <param name="Transactions">
/// A list of transactions to add.
/// </param>
public void AddTransaction(string Transactions)
{
DataRow myRow;
myRow = myTable.NewRow();
myRow["Transactions"] = Transactions;
myTable.Rows.Add(myRow);
}
/// <summary>
/// The System.Data.Dataset database of transactions to be analyzed.
/// </summary>
public DataSet Transactions
{
get
{
return myTransactions;
}
set
{
myTransactions = value;
}
}
/// <summary>
/// Creates the transactions table.
/// </summary>
/// <returns>
/// Returns the transactions table created.
/// </returns>
private DataTable CreateTransactionsTable()
{
DataColumn [] myColumn = new DataColumn[1];
//Define the primary key column for the table
myColumn[0] = new DataColumn("TransactionID",System.Type.GetType("System.Int32"));
myColumn[0].AutoIncrement = true;
myColumn[0].AutoIncrementSeed = 1;
myColumn[0].AutoIncrementStep = 1;
myColumn[0].Unique = true;
myTable.Columns.Add(myColumn[0]);
//Set the primary key for this table
myTable.PrimaryKey = myColumn;
//Define the column to hold Transaction Data
DataColumn transaction_list = new DataColumn("Transactions",System.Type.GetType("System.String"));
transaction_list.AllowDBNull = false;
myTable.Columns.Add(transaction_list);
//Add the table to the Database
myTransactions.Tables.Add(myTable);
return myTable;
}
/// <summary>
/// Creates the database table that stores each itemset.
/// </summary>
/// <returns>
/// Returns the itemset table created.
/// </returns>
/// <remarks>
/// <example>
/// <code>
/// APriori.Database DB = new APriori.Database();
///
/// System.Data.DataTable myTable = DB.CreateItemsetTable();
/// </code>
/// </example>
/// </remarks>
private DataTable CreateItemsetTable()
{
DataColumn [] myItemsColumnKey = new DataColumn[1];
//Define the primary key column for the items table
myItemsColumnKey[0] = new DataColumn("ItemID",System.Type.GetType("System.Int32"));
myItemsColumnKey[0].AutoIncrement = true;
myItemsColumnKey[0].AutoIncrementSeed = 1;
myItemsColumnKey[0].AutoIncrementStep = 1;
myItemsColumnKey[0].Unique = true;
itemsTable.Columns.Add(myItemsColumnKey[0]);
//Set the primary key for the items table
itemsTable.PrimaryKey = myItemsColumnKey;
//Define the other columns for the Items Table
DataColumn myItemset = new DataColumn("Itemset",System.Type.GetType("System.String"));
myItemset.AllowDBNull = false;
myItemset.Unique = true;
itemsTable.Columns.Add(myItemset);
itemsTable.Columns.Add("Level",System.Type.GetType("System.Int32"));
itemsTable.Columns.Add("SupportCount",System.Type.GetType("System.Int32"));
//Add the Items Table to the database
myTransactions.Tables.Add(itemsTable);
return itemsTable;
}
/// <summary>
/// Creates the database table that stores subsets of items.
/// </summary>
/// <returns>
/// Returns the market based analysis suibsets table created.
/// </returns>
/// <remarks>
/// <example>
/// <code>
/// APriori.Database DB = new APriori.Database();
///
/// System.Data.DataTable myTable = DB.CreateSubsetTable();
/// </code>
/// </example>
/// </remarks>
private DataTable CreateSubsetTable()
{
DataColumn [] mySubsetColumnKeys = new DataColumn[3];
//Define the first column and primary key column for the subset table
mySubsetColumnKeys[0] = new DataColumn("FirstKeyID",System.Type.GetType("System.Int32"));
mySubsetColumnKeys[0].AutoIncrement = true;
mySubsetColumnKeys[0].AutoIncrementSeed = 1;
mySubsetColumnKeys[0].AutoIncrementStep = 1;
mySubsetColumnKeys[0].Unique = true;
subsetTable.Columns.Add(mySubsetColumnKeys[0]);
//define the second column and primary key for the subset table
mySubsetColumnKeys[1] = new DataColumn("ItemID",System.Type.GetType("System.Int32"));
subsetTable.Columns.Add(mySubsetColumnKeys[1]);
//define the third column and primary key for the subset table
mySubsetColumnKeys[2] = new DataColumn("SubsetID",System.Type.GetType("System.Int32"));
subsetTable.Columns.Add(mySubsetColumnKeys[2]);
//Set the primary keys for the subset table
subsetTable.PrimaryKey = mySubsetColumnKeys;
//Add the Subsets Table to the database
myTransactions.Tables.Add(subsetTable);
return subsetTable;
}
/// <summary>
/// Creates the database table that stores each rule.
/// </summary>
/// <returns>
/// Returns the market based analysis rules table created.
/// </returns>
/// <remarks>
/// <example>
/// <code>
/// APriori.Database DB = new APriori.Database();
///
/// System.Data.DataTable myTable = DB.CreateRulesTable();
/// </code>
/// </example>
/// </remarks>
private DataTable CreateRulesTable()
{
DataColumn [] myRuleColumnKeys = new DataColumn[1];
DataColumn myRuleColumn;
//Define the first column and primary key column for the Rules table
myRuleColumnKeys[0] = new DataColumn("FirstKeyID",System.Type.GetType("System.Int32"));
myRuleColumnKeys[0].AutoIncrement = true;
myRuleColumnKeys[0].AutoIncrementSeed = 1;
myRuleColumnKeys[0].AutoIncrementStep = 1;
myRuleColumnKeys[0].Unique = true;
rulesTable.Columns.Add(myRuleColumnKeys[0]);
//define the second column and left rule column for the Rules table
myRuleColumn = new DataColumn("LeftRule",System.Type.GetType("System.Int32"));
rulesTable.Columns.Add(myRuleColumn);
//define the third column and right rule column for the Rules table
myRuleColumn = new DataColumn("RightRule",System.Type.GetType("System.Int32"));
rulesTable.Columns.Add(myRuleColumn);
//define the confidence column for the Rules table
myRuleColumn = new DataColumn("Confidence",System.Type.GetType("System.Double"));
rulesTable.Columns.Add(myRuleColumn);
//Set the primary keys for the Rule table
rulesTable.PrimaryKey = myRuleColumnKeys;
//Add the Rules Table to the database
myTransactions.Tables.Add(rulesTable);
return rulesTable;
}
/// <summary>
/// Adds an Itemset to the database.
/// </summary>
/// <param name="itemSet">
/// An ItemsetArrayList object containing a set of items .
/// </param>
/// <param name="seperatorCharacters">
/// A string used to seperate items parsed from an ItemsetArrayList object into the database.
/// </param>
/// <returns>
/// An integer equal to the Primary Key of the itemset added to the database.
/// </returns>
public int AddItemset(ItemsetArrayList itemSet, string seperatorCharacters)
{
int keyID=0;
DataRow myDataRow;
myDataRow = this.myTransactions.Tables["ItemsetTable"].NewRow();
myDataRow["Itemset"] = ItemsetArrayList.ConvertToString(itemSet, seperatorCharacters);
myDataRow["Level"] = itemSet.Level;
myDataRow["SupportCount"] = itemSet.SupportCount;
this.myTransactions.Tables["ItemsetTable"].Rows.Add(myDataRow);
keyID = (int)myDataRow[0];
return keyID;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -