永发信息网

各位老师:谁有c#中apriori算法的代码可否把代码发给我?

答案:1  悬赏:70  手机版
解决时间 2021-03-24 23:27
各位老师:谁有c#中apriori算法的代码可否把代码发给我?
最佳答案
放不完
//生成字符串的K项子集
static ArrayList SubSet(int k, string st)
{
int len = st.Length;
ArrayList al = new ArrayList();
string temp = "";
for (int i = 0; i < Math.Pow(2, len); i++)
{
int oneCount = 0;
String str = Convert.ToString(i, 2);
String str1 = str.PadLeft(len, '0');

char[] toCharArray = str1.ToCharArray(); ;
temp = "";
for (int j = 0; j < toCharArray.Length; j++)
{
if (toCharArray[j] == '1')
{
oneCount++;
temp = temp + st[j];
}
}
if (oneCount == k)
{
al.Add (temp);
}
}
return al;
}

//生成候选项集
static ArrayList aprior_gen(ArrayList L)
{
//连接步骤
ArrayList LK = new ArrayList();
for (int i = 0; i < L.Count; i++)
{
string subL1 = L[i].ToString();
for (int j = i + 1; j < L.Count; j++)
{
string subL2 = L[j].ToString();
string temp = L[j].ToString();
Console.WriteLine(temp);
for (int m = 0; m < subL1.Length; m++)
{
bool L1mL2 = false;
for (int n = 0; n < subL2.Length; n++)
{
if (subL1[m] == subL2[n]) L1mL2 = true;
}
if (L1mL2 == false)
temp = temp + subL1[m];

}

//剪枝
if (temp.Length == subL1.Length + 1)
{
ArrayList temSub = SubSet(subL1.Length, temp);
for (int ts = 0; ts < temSub.Count; ts++)
{
if (!L.Contains(temSub[ts])) break;
}
LK.Add(temp);
}
}
} return LK;
}

//从数据库中获取数据并存于ArrayList中
static ArrayList getEventsFromDB()
{
string CommandString = "select name from goods";
DataSet ds = executeCommandString(CommandString);
//int eventCount=Convert .ToInt32 (ds.Tables [0].Rows [0][0]);
ArrayList events = new ArrayList();
string temp = null;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
temp = ds.Tables[0].Rows[i]["name"].ToString();
events.Add(temp);
}
Console.WriteLine("数据库中的记录如下");
for (int j = 0; j < events.Count; j++)
{
Console.WriteLine(events[j]);
}

return events;
}
//生成频繁项目集

static List apriorFrequent(int sup, ArrayList D)
{
Hashtable ht = find_frequent_1_item();
ArrayList L1 = new ArrayList();//一项频繁项目集
foreach (DictionaryEntry de in ht) L1.Add(de.Key);
List L = new List();//存放总的频繁项目集
int cunt;
foreach (DictionaryEntry de in ht)
{
if (Convert.ToInt32(de.Value) >= sup)
{
ItemSet iSet = new ItemSet();
iSet.Items = de.Key.ToString();
iSet.sup = Convert.ToInt32(de.Value);
L.Add(iSet);
}
}


ArrayList iFrequent = new ArrayList();
iFrequent = L1;

ArrayList allK = new ArrayList();//存放数据库的子集
for (int k = 2; iFrequent.Count != 0; k++)
{

ArrayList cand = aprior_gen(iFrequent);//候选集
Console.WriteLine("cand中存放候选项集如下");
for (int ca = 0; ca < cand.Count; ca++)
{
Console.WriteLine(cand [ca]);
}
//Console.ReadLine();
allK.Clear();
for (int i = 0; i < D.Count; i++)
{
string stemp = D[i].ToString();
allK.AddRange (SubSet(k, stemp ));
}
Console.WriteLine("allK中存放的数据库的所有K项集如下");
for (int al = 0; al < allK.Count; al++)
{
Console.WriteLine(allK[al]);
}
//Console.ReadLine();
iFrequent.Clear();
for (int m = 0; m < cand.Count; m++)
{
cunt = 0;
for (int n = 0; n < allK.Count; n++)
{
string str1;
str1 = Convert .ToString (cand [m]);
string str2;
str2 = Convert.ToString(allK [n]);
int vv = 0;
for (int p = 0; p < str1.Length;p++ )
{
for(int q=0;q if(str1 [p]==str2 [q])
{
vv++ ; break ;
}
}
if(vv==str1.Length )cunt++;
}
if (cunt >= sup)
{

if(!iFrequent .Contains (cand[m]))
{
iFrequent.Add(cand[m]);
ItemSet iSet = new ItemSet();
iSet.Items = cand[m].ToString();
iSet.sup = cunt;
L.Add(iSet);
}
}
}

} return L;

}
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
澧县县城怎么样?
谁有欧洲卡车模拟21.9.13s能用的地图MOD能给
请问今世纪有人知道罡气是什么意思吗?
请教感情丰富的大哥大姐们,帮我解答
我想做小鱼加工,怎样处理鱼肚里的脏物
私人家庭影院定制一般多少钱
管型计数正常值0.0-0.56我的是0.8
问号里面可以填什么
我太内向不太愿意交朋友不喜欢去人多地方怎么
推手推广怎样有效果吗
甲和乙均缺钱,乙得知甲的朋友丙是做生意的,
什么品种鹅产蛋量高蛋又大
为什么我家Wi-Fi老是掉线,把插头拔掉再插上
以昧开头的四字词
下列图形不一定相似的是A.所有的矩形B.所有的
推荐资讯
AEG这个公司和中和过合作了么还是被收购了?
皮蛋瘦肉粥用鸡肉的话,怎么能让鸡肉不那么老
英语中in+年份,年份有加s跟没加s有什么区别,
华为q七手机多少钱?
跟某村的一个村民发生冲突,找当地村支书调解
你们觉得广州市荔湾区合兴苑小学变态老师黄国
按照从大到小的顺序排一排
天梭T41.1.483.53和美度M8600.4.26.1哪个好
如今高三毕业,却感到迷茫
HTC g11手机刷机后都是英文怎么转换成中文
vivox5pro2卡磁面朝上朝下
0ppr7为什么升级不了
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?