using System;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
using System.Collections.Generic;
namespace Apriori算法
{
public class Apriori
{
private static int support; // 支持度阈值
private static double confidence; // 置信度阈值
private static char[] item_Split = { ',' }; // 项之间的分隔符
private static string itemSplit = ",";//项中元素之间的分隔符
private static String CON = "->"; // 项之间的分隔符
private static List<String> transList = new List<String>(); //所有初始数据
public Apriori(int min_sup, double min_conf)//构造函数,在里面初始支持度和置信度的阈值
{
//初始化数据记录
transList.Add("bread,cream,milk,tea,");
transList.Add("bread,cream,milk,");
transList.Add("cake,milk,");
transList.Add("milk,tea,");
transList.Add("bread,cake,milk,");
transList.Add("bread,tea,");
transList.Add("beer,milk,tea,");
transList.Add("bread,tea,");
transList.Add("bread,cream,milk,tea,");
transList.Add("bread,milk,tea,");
support = min_sup;
confidence = min_conf;
}
private Dictionary<String, int> getItem() //计算所有频繁1项集
{
Dictionary<String, int> mItem = new Dictionary<String, int>();//全部1项集
Dictionary<String, int> Items = new Dictionary<String, int>(); //频繁1项集
foreach (String trans in transList)//遍历列表
{
String[] items = trans.Split(item_Split, StringSplitOptions.RemoveEmptyEntries);//将字符串转化为数组,加StringSplitOptions.RemoveEmptyEntries保证返回的数组中无空元素
foreach (String item in items)//遍历数组
{
int count;
if (mItem.ContainsKey(item + itemSplit) == true)//判断字典中是否含有指定键名
{
//如果有就删除这个键值对,并重新添加这个键值对(新的value加一)
count = mItem[item + itemSplit];//直接通过key获取value
mItem.Remove(item + itemSplit);
mItem.Add(item + itemSplit, count + 1);
}
else
{
//如果没有就添加该条记录
mItem.Add(item + itemSplit,
C#实现数据挖掘中的三个算法(1)——Apriori算法
最新推荐文章于 2022-09-07 20:50:27 发布
本文介绍了使用C#实现数据挖掘中经典的Apriori算法。通过手动输入支持度和置信度阈值,计算项集出现的次数和条件概率,帮助理解数据之间的关联性。
摘要由CSDN通过智能技术生成