C#实现数据挖掘中的三个算法(1)——Apriori算法

本文介绍了使用C#实现数据挖掘中经典的Apriori算法。通过手动输入支持度和置信度阈值,计算项集出现的次数和条件概率,帮助理解数据之间的关联性。
摘要由CSDN通过智能技术生成
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, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值