C# 如何为apriori算法生成k项集?

C# 如何为apriori算法生成k项集?,c#,data-mining,apriori,C#,Data Mining,Apriori,我编写这段代码是为了生成两个项目集 我正在编写listlist of list以生成两个项目集,并希望优化代码以生成长度为k的项目集 using System.Data.OleDb; using Microsoft.AnalysisServices.AdomdClient; namespace HW3 { class Program { private static int Min_support = 360; private static Li

我编写这段代码是为了生成两个项目集

我正在编写
list
list of list以生成两个项目集,并希望优化代码以生成长度为k的项目集

using System.Data.OleDb;
using Microsoft.AnalysisServices.AdomdClient;

namespace HW3
{
    class Program
    {
        private static int Min_support = 360;
        private static List<String> itemSet = new List<string>();
        private static List<List<String>> C_itemSet = new List<List<string>>();

        static void Main(string[] args)
        {
            List_Movies();
            //for (int k = 1; k < 3; k++)
            //{ }
            C_itemSet = Geneate_Sets(itemSet);

            for (int i = 0; i < C_itemSet.Count; i++)
            {
                for (int j = 0; j < C_itemSet[i].Count; j++)
                {
                    Console.Write(C_itemSet.ElementAt(i).ElementAt(j));
                }
                Console.WriteLine();
            }

            Console.ReadKey();
        }

        private static void List_Movies()
        {
            string connectionString = @"Provider=SQLOLEDB;Server=.;AttachDbFilename=D:\DBs\MovieClick.mdf;Database=dbname; Trusted_Connection=Yes;";
            OleDbConnection myConn = new OleDbConnection(connectionString);
            myConn.Open();
            string str = "select Movie,COUNT(Movie) from Movies group by Movie HAVING COUNT(MOVIE) > "+Min_support;
            OleDbCommand myComm = new OleDbCommand(str, myConn);
            OleDbDataReader DR = myComm.ExecuteReader();
            while (DR.Read())
            {
                if (DR[0] != null)
                    itemSet.Add(DR[0].ToString()); // Movie name
            }

            myConn.Close();
        }

        private static List<List<String>> Geneate_Sets(List<String> fSet )
        {
            List<List<String>> finalSet= new List<List<string>>();
            for (int i = 0; i < fSet.Count; i++)
            {
                for (int j = i+1; j < fSet.Count; j++)
                {
                    if (!fSet[i].Equals(fSet[j]))
                    {
                        List<string> temp = new List<string>();
                        temp.Add(fSet[i]);
                        temp.Add(fSet[j]);

                            finalSet.Add(temp);
                    }
                }
            }
            return finalSet;
        }
使用System.Data.OleDb;
使用Microsoft.AnalysisServices.AdomdClient;
命名空间HW3
{
班级计划
{
私有静态整数最小支持=360;
私有静态列表项集=新列表();
私有静态列表C_itemSet=新列表();
静态void Main(字符串[]参数)
{
列出电影();
//对于(int k=1;k<3;k++)
//{ }
C_itemSet=生成_集(itemSet);
对于(int i=0;i”的电影从电影组中选择电影、计数(电影)”+最小值支持;
OleDbCommand mycommm=新的OleDbCommand(str,myConn);
OleDbDataReader DR=myComm.ExecuteReader();
while(DR.Read())
{
如果(DR[0]!=null)
itemSet.Add(DR[0].ToString());//电影名称
}
myConn.Close();
}
专用静态列表生成集(列表fSet)
{
List finalSet=新列表();
对于(int i=0;i
除非您的数据非常庞大,否则我建议您将其加载到一个已经正确实现了Apriori的好库中

因为从您的代码来看,您离Apriori实现还差得很远,特别是一个实际性能很好的实现,对不起。您似乎还没有Apriori的任何东西。。不要指望我们为您编写算法。

可能的重复