数据挖掘课设

目录

实验一  Apriori算法设计与应用

实验二 Close算法设计与应用

实验三 FP-tree算法设计与应用

实验四 EM算法设计与应用

实验五 KNN算法设计与应用

实验六 ID3算法设计与实现

实验七 DBSCAN算法设计与应用

实验八 K-mean算法设计与应用

实验九 PageRank算法设计与应用

实验十 模型评估指标

收获

仓库地址

运行

声明


实验一  Apriori算法设计与应用

这个好像是ChatGPT帮我写的,但是生成的强关联规则这个块,它好像不了解最大频繁集写不出,然后这部分是我改的(反正就是强关联规则少了很多)(代码文件是AprioriAlgorithm1.js)

function isSubset(subset, superset) {
            return subset.every(item => superset.includes(item));
            //子函数都满足
        }
        
        function arraysEqual(arr1, arr2) {
            //判断所有子集中,和当前子集是存在的就返回真
            return arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]);
        }
       // console.log(this.frequentItemSets)
        //一个有多少个频繁项目集
        let n = this.frequentItemSets.length;
        let maxFrequentItemSets = [...this.frequentItemSets];
             //如果一下有包含关系,就剔除它
    for (let i = 0; i <n; i++) {
        let currentItemSet = this.frequentItemSets[i];
        let isMaximal = true;
        //console.log(this.frequentItemSets)
        // 检查是否有真正的超集
        for (let j = 0; j < n; j++) {
            //不和本身相符就继续
            if (i !== j) {
                let otherItemSet = this.frequentItemSets[j];
                // 检查当前项集是否是其他项集的子集
                if (isSubset(currentItemSet, otherItemSet)) {
                    //不是最大子集
                    isMaximal = false;
                    //不是就退出这个循环并进行剔除
                    break;
                }
            }
        }
        if (!isMaximal) {
            // 从最大频繁项集列表中移除当前项集,filter 函数会保留那些与 currentItemSet 不相等的项集
            maxFrequentItemSets = maxFrequentItemSets.filter(itemSet => !arraysEqual(itemSet, currentItemSet));
        }
    }    

实验二 Close算法设计与应用

这个好像是我写的,因为ChatGPT写不出,它不理解什么意思,然后被迫上手,但是感觉结果有问题,我不知道怎么递归出来 (代码文件是close1.js)

实验三 FP-tree算法设计与应用

最后一天紧急之下ChatGPT终于写出了我想要的结果,因为树的基础不好不太会,修改了一下输出结果(代码文件是FP1.js)

实验四 EM算法设计与应用

理解

一个迭代的过程(三个函数)

1.E步处理函数(统计每一行最可能出现的是正面还是负面,用一维数组存储结果[ '正面', '反面', '反面', '正面', '反面' ])

2.M步处理函数(根据E步计算出的结果进行计算A和B的概率结果[A:0.4,B:0.9])

3.EM进行迭代

这个是根据一个B站up主(什么是EM最大期望算法_哔哩哔哩_bilibili)给的思路敲的,很简单(代码文件是em1.js)

实验五 KNN算法设计与应用

理解

两个函数

1.初始化以及循环(处理循环结束后,然后统计分组最多的等级,哪个等级多就是那个等级)

2.待分组和测试数据的处理(测试数据与分好组的数据找到差异最大的=>A,测试数据和带分组的数据之间的差异=>B,A>B就不替换,否则替换)

这个看书理解然后敲的(代码文件是knn1.js)

实验六 ID3算法设计与实现

有点忘是ChatGPT敲的还是自己敲的(代码文件是id31.js)

实验七 DBSCAN算法设计与应用

理解

四个函数

1.初始化(添加flag标志)

2.判断是不是可达点(统计这个点是不是满足阈值)

3.扩展簇的范围(距离公式满足就把点推进这个簇)

4.产生簇(如果是可达点且不在任何簇里 ====>  新建一个簇、推进这个簇并flag=1,然后扩展簇的范围)

这个看书理解然后敲的(代码文件是dbscan1.js)

实验八 K-mean算法设计与应用

理解

两个函数

1.初始化(把数组数据换成了键值的形式存储,拿到指定的初始数据的点,新建指定的几个簇map形式存储)

2.产生簇(双重for 遍历每个数据,让每个数据和指定的k个点去比较,距离最小就推进哪个2簇,直到结果)

3.迭代(对一次迭代产生的所有簇,进行中心点的统计,然后中心点不再变化就迭代结束)

这个看书理解然后敲的(代码文件是kmean1.js)

实验九 PageRank算法设计与应用

理解

这个和代数有关联,根据数学解题步骤去敲就行了

这个看书理解然后敲的(代码文件是pageRank1.js)

实验十 模型评估指标

理解

根据数学解题步骤去敲就行了

书上没有自己去找资源了解的,但是涉及的画图我就没搞了【使用python更好】,只搞了混淆矩阵,准确率,精确率等F1 Score (对于剩下的两个,我总感觉题目少了数据样本)(代码文件是mo1.js)

收获

反正就是建议自己去敲!!!

本来之前在写项目或学习项目时,不明白为什么API这么多的用处,然后敲完这个课设之后突然有点理解了,本来一开始不明白怎么处理数据的,接触之后就发现写算法还是蛮有意思,也明白了一些js数据处理的API,之前再写项目时一直用一种API,然后导致冗余度贼高。比如之前处理数据就经常使用foreach ,现在就是知道了map还有for of ,every,some 等在什么时候用更好了

仓库地址

https://gitee.com/Study_0112/dataming

运行

使用软件:Visual Studio Code,配置:node

运行结果如下图:终端输入node 对应js  就可以了

声明

关于我是菜鸡的那件事

1.按理说我们应该只做5个题目,但是老师要求我们做10个,实际上我感觉应该有几个结果是错,有结果迭代有点糊涂特别是close,我们老师也没要求结果(意思就是能跑就行)。。。。

2.每个题目有两个代码文件,后面没有加1的可能是ChatGPT或自己写的半成品

3.emmm每个题目的代码都在一个文件,嫌调用文件的时候麻烦

5.从命名方式可以知道是不是我写的了(四级第一次擦边过,六级没报过名)

因为JavaScript基础好一点,所以果断用js(但是数据挖掘算法应该不建议用这个语言,本人算法很菜)

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值