⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 database.cs

📁 一个经典的apriori算法(c#实现)
💻 CS
📖 第 1 页 / 共 2 页
字号:
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 + -