数据挖掘实验报告-数据预处理
数据挖掘实验报告

数据挖掘实验报告一、引言。
数据挖掘作为一种从大量数据中发现隐藏模式和信息的技术,已经被广泛应用于各个领域。
本实验旨在通过对给定数据集的分析和挖掘,探索其中潜在的规律和价值信息,为实际问题的决策提供支持和参考。
二、数据集描述。
本次实验使用的数据集包含了某电商平台上用户的购物记录,其中包括了用户的基本信息、购买商品的种类和数量、购买时间等多个维度的数据。
数据集共包括了10000条记录,涵盖了近一年的购物数据。
三、数据预处理。
在进行数据挖掘之前,我们首先对数据进行了预处理。
具体包括了数据清洗、缺失值处理、异常值处理等步骤。
通过对数据的清洗和处理,保证了后续挖掘分析的准确性和可靠性。
四、数据分析与挖掘。
1. 用户购买行为分析。
我们首先对用户的购买行为进行了分析,包括了用户购买的商品种类偏好、购买频次、购买金额分布等。
通过对用户购买行为的分析,我们发现了用户的购买偏好和消费习惯,为电商平台的商品推荐和营销策略提供了参考。
2. 商品关联规则挖掘。
通过关联规则挖掘,我们发现了一些商品之间的潜在关联关系。
例如,购买商品A的用户80%也会购买商品B,这为商品的搭配推荐和促销活动提供了依据。
3. 用户价值分析。
基于用户的购买金额、购买频次等指标,我们对用户的价值进行了分析和挖掘。
通过对用户价值的评估,可以针对不同价值的用户采取个性化的营销策略,提高用户忠诚度和购买转化率。
五、实验结果。
通过对数据的分析和挖掘,我们得到了一些有价值的实验结果和结论。
例如,发现了用户的购买偏好和消费习惯,发现了商品之间的关联规则,发现了用户的不同价值等。
这些结论为电商平台的运营和管理提供了一定的参考和决策支持。
六、结论与展望。
通过本次实验,我们对数据挖掘技术有了更深入的理解和应用。
同时,也发现了一些问题和不足,例如数据质量对挖掘结果的影响,挖掘算法的选择和优化等。
未来,我们将继续深入研究数据挖掘技术,不断提升数据挖掘的准确性和效率,为更多实际问题的决策提供更有力的支持。
数据挖掘实验报告结论(3篇)

第1篇一、实验概述本次数据挖掘实验以Apriori算法为核心,通过对GutenBerg和DBLP两个数据集进行关联规则挖掘,旨在探讨数据挖掘技术在知识发现中的应用。
实验过程中,我们遵循数据挖掘的一般流程,包括数据预处理、关联规则挖掘、结果分析和可视化等步骤。
二、实验结果分析1. 数据预处理在实验开始之前,我们对GutenBerg和DBLP数据集进行了预处理,包括数据清洗、数据集成和数据变换等。
通过对数据集的分析,我们发现了以下问题:(1)数据缺失:部分数据集存在缺失值,需要通过插补或删除缺失数据的方法进行处理。
(2)数据不一致:数据集中存在不同格式的数据,需要进行统一处理。
(3)数据噪声:数据集中存在一些异常值,需要通过滤波或聚类等方法进行处理。
2. 关联规则挖掘在数据预处理完成后,我们使用Apriori算法对数据集进行关联规则挖掘。
实验中,我们设置了不同的最小支持度和最小置信度阈值,以挖掘出不同粒度的关联规则。
以下是实验结果分析:(1)GutenBerg数据集在GutenBerg数据集中,我们以句子为篮子粒度,挖掘了林肯演讲集的关联规则。
通过分析挖掘结果,我们发现:- 单词“the”和“of”在句子中频繁出现,表明这两个词在林肯演讲中具有较高的出现频率。
- “and”和“to”等连接词也具有较高的出现频率,说明林肯演讲中句子结构较为复杂。
- 部分单词组合具有较高的置信度,如“war”和“soldier”,表明在林肯演讲中提到“war”时,很可能同时提到“soldier”。
(2)DBLP数据集在DBLP数据集中,我们以作者为单位,挖掘了作者之间的合作关系。
实验结果表明:- 部分作者之间存在较强的合作关系,如同一研究领域内的作者。
- 部分作者在多个研究领域均有合作关系,表明他们在不同领域具有一定的学术影响力。
3. 结果分析和可视化为了更好地展示实验结果,我们对挖掘出的关联规则进行了可视化处理。
通过可视化,我们可以直观地看出以下信息:(1)频繁项集的分布情况:通过柱状图展示频繁项集的分布情况,便于分析不同项集的出现频率。
数据挖掘实验报告代码

一、实验背景数据挖掘是计算机科学领域的一个重要分支,它涉及从大量数据中提取有用信息、模式和知识。
本实验旨在通过Python编程语言,对某个具体数据集进行数据挖掘,以了解数据集的特征、发现潜在的模式和规律。
二、实验目的1. 掌握Python在数据挖掘领域的应用。
2. 熟悉常用的数据挖掘算法。
3. 提高对数据集分析和处理的能力。
三、实验环境1. 操作系统:Windows 102. 编程语言:Python3.73. 数据集:某电商网站用户购买数据集4. 工具:NumPy、Pandas、Matplotlib、Scikit-learn四、实验内容1. 数据预处理2. 数据可视化3. 模式发现4. 模型构建与评估五、实验步骤1. 数据预处理```pythonimport pandas as pd# 读取数据集data = pd.read_csv("user_data.csv")# 数据清洗# 去除缺失值data.dropna(inplace=True)# 数据类型转换data["user_id"] = data["user_id"].astype(int)data["age"] = data["age"].astype(int)data["gender"] = data["gender"].astype(str)data["purchase_amount"] = data["purchase_amount"].astype(float)# 数据缩放from sklearn.preprocessing import StandardScalerscaler = StandardScaler()data[["age", "purchase_amount"]] = scaler.fit_transform(data[["age", "purchase_amount"]])```2. 数据可视化```pythonimport matplotlib.pyplot as plt# 年龄分布plt.figure(figsize=(10, 6))plt.hist(data["age"], bins=50, color="skyblue")plt.title("Age Distribution")plt.xlabel("Age")plt.ylabel("Frequency")plt.show()# 性别比例gender_counts = data["gender"].value_counts()plt.figure(figsize=(10, 6))gender_counts.plot(kind="bar", color=["skyblue", "salmon"])plt.title("Gender Ratio")plt.xlabel("Gender")plt.ylabel("Count")plt.show()# 购买金额分布plt.figure(figsize=(10, 6))plt.hist(data["purchase_amount"], bins=50, color="skyblue")plt.title("Purchase Amount Distribution")plt.xlabel("Purchase Amount")plt.ylabel("Frequency")plt.show()```3. 模式发现```pythonfrom sklearn.cluster import KMeans# 使用K-means聚类算法发现用户群体kmeans = KMeans(n_clusters=3, random_state=0)data["cluster"] = kmeans.fit_predict(data[["age", "purchase_amount"]]) # 分析不同用户群体的购买金额分布for i in range(3):plt.figure(figsize=(10, 6))plt.hist(data[data["cluster"] == i]["purchase_amount"], bins=50, color="skyblue")plt.title(f"Cluster {i} Purchase Amount Distribution")plt.xlabel("Purchase Amount")plt.ylabel("Frequency")plt.show()```4. 模型构建与评估```pythonfrom sklearn.model_selection import train_test_splitfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.metrics import accuracy_score# 将数据集分为训练集和测试集X = data[["age", "gender", "cluster"]]y = data["purchase_amount"]X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)# 构建随机森林分类器rf = RandomForestClassifier(n_estimators=100, random_state=0)rf.fit(X_train, y_train)# 预测测试集y_pred = rf.predict(X_test)# 评估模型accuracy = accuracy_score(y_test, y_pred)print(f"Model Accuracy: {accuracy}")```六、实验结果与分析1. 数据预处理:通过数据清洗、类型转换和缩放,使数据集更适合后续分析。
数据挖掘实验报告

数据挖掘实验报告数据挖掘是一门涉及发现、提取和分析大量数据的技术和过程,它可以揭示出隐藏在数据背后的模式、关系和趋势,对决策和预测具有重要的价值。
本文将介绍我在数据挖掘实验中的一些主要收获和心得体会。
实验一:数据预处理在数据挖掘的整个过程中,最重要的一环就是数据预处理。
数据预处理包括数据清洗、数据集成、数据转换和数据规约等步骤,目的是为了提高数据的质量和可用性。
首先,我对所使用的数据集进行了初步的观察和探索。
发现数据集中存在着一些缺失值和异常值。
为此,我使用了一些常见的缺失值处理方法,如均值替代、中值替代和删除等。
对于异常值,我采用了离群值检测和修正等方法,使得数据在后续的分析过程中更加真实可信。
其次,我进行了数据集成的工作。
数据集合并是为了整合多个来源的数据,从而得到更全面和综合的信息。
在这个过程中,我需要考虑数据的一致性和冗余情况。
通过采用数据压缩和去重等技术,我成功地完成了数据集成的工作。
接着,我进行了数据转换的处理。
数据转换是为了将原始的数据转换成适合数据挖掘算法处理的形式。
在这个实验中,我采用了数据标准化和归一化等方法,使得不同属性之间具备了可比性和可计算性,从而便于后续的分析过程。
最后,我进行了数据规约的操作。
数据规约的目的在于减少数据的维数和复杂度,以提高数据挖掘的效果。
在这个阶段,我采用了主成分分析和属性筛选等方法,通过压缩数据集的维度和减少冗余属性,成功地简化了数据结构,提高了挖掘效率。
实验二:关联规则挖掘关联规则挖掘是数据挖掘中常用的一种方法,它用于发现数据集中项集之间的关联关系。
在这个实验中,我使用了Apriori算法来进行关联规则的挖掘。
首先,我对数据进行了预处理,包括数据清洗和转换。
然后,我选择了适当的最小支持度和最小置信度阈值,通过对数据集的扫描和频繁项集生成,找出了数据集中的频繁项集。
接着,我使用了关联规则挖掘算法,从频繁项集中挖掘出了具有一定置信度的关联规则。
在实验过程中,我发现挖掘出的关联规则具有一定的实用性和可行性。
数据挖掘实验报告-数据预处理

数据挖掘实验报告-数据预处理数据挖掘实验报告数据预处理一、实验目的本次实验的主要目的是深入了解和掌握数据预处理在数据挖掘过程中的重要性及相关技术,通过对实际数据集的处理,提高数据质量,为后续的数据挖掘和分析工作奠定良好的基础。
二、实验背景在当今数字化时代,数据的规模和复杂性不断增加,而原始数据往往存在着各种问题,如缺失值、噪声、异常值、不一致性等。
这些问题如果不加以处理,将会严重影响数据挖掘算法的性能和结果的准确性。
因此,数据预处理成为了数据挖掘过程中不可或缺的重要环节。
三、实验数据集本次实验使用了一个名为“销售数据”的数据集,该数据集包含了某公司在过去一年中不同产品的销售记录,包括产品名称、销售日期、销售数量、销售价格、客户信息等字段。
四、数据预处理技术(一)数据清洗1、处理缺失值首先,对数据集中的缺失值进行了识别和分析。
通过观察发现,“客户信息”字段存在部分缺失。
对于这些缺失值,采用了两种处理方法:一是如果缺失比例较小(小于5%),直接删除含有缺失值的记录;二是如果缺失比例较大,采用均值填充的方法进行补充。
2、处理噪声数据数据中的噪声通常表现为数据中的错误或异常值。
通过对销售数量和销售价格的观察,发现了一些明显不合理的数值,如销售数量为负数或销售价格过高或过低的情况。
对于这些噪声数据,采用了基于统计的方法进行识别和处理,将超出合理范围的数据视为噪声并进行删除。
(二)数据集成由于原始数据集可能来自多个数据源,存在着重复和不一致的问题。
在本次实验中,对“销售数据”进行了集成处理,通过对关键字段(如产品名称、销售日期)的比较和合并,消除了重复的记录,并确保了数据的一致性。
(三)数据变换1、数据标准化为了消除不同字段之间量纲的影响,对销售数量和销售价格进行了标准化处理,使其具有可比性。
2、数据离散化对于连续型的数据字段,如销售价格,采用了等宽离散化的方法将其转换为离散型数据,以便于后续的数据挖掘算法处理。
数据挖掘实验报告-数据预处理

数据挖掘实验报告(一)数据预处理姓名:李圣杰班级:计算机1304学号:02一、实验目的1.学习均值平滑,中值平滑,边界值平滑的基本原理2.掌握链表的使用方法3.掌握文件读取的方法二、实验设备PC一台,dev-c++三、实验内容数据平滑假定用于分析的数据包含属性age。
数据元组中age的值如下(按递增序):13, 15, 16, 16, 19, 20, 20, 21, 22, 22, 25, 25, 25, 25, 30, 33, 33, 35, 35, 35, 35, 36, 40, 45, 46, 52, 70。
使用你所熟悉的程序设计语言进行编程,实现如下功能(要求程序具有通用性):(a) 使用按箱平均值平滑法对以上数据进行平滑,箱的深度为3。
(b) 使用按箱中值平滑法对以上数据进行平滑,箱的深度为3。
(c) 使用按箱边界值平滑法对以上数据进行平滑,箱的深度为3。
四、实验原理使用c语言,对数据文件进行读取,存入带头节点的指针链表中,同时计数,均值求三个数的平均值,中值求中间的一个数的值,边界值将中间的数转换为离边界较近的边界值五、实验步骤代码#include <>#include <>#include <>#define DEEP 3#define DATAFILE ""#define VPT 10//定义结构体typedef struct chain{int num;struct chain *next;}* data;//定义全局变量data head,p,q;FILE *fp;int num,sum,count=0;int i,j;int *box;void mean();void medain();void boundary();int main (){//定义头指针head=(data)malloc(sizeof(struct chain));head->next=NULL;/*打开文件*/fp=fopen(DATAFILE,"r");if(!fp)exit(0);p=head;while(!feof(fp)){q=(data)malloc(sizeof(struct chain));q->next=NULL;fscanf(fp,"%d",&q->num); /*读一个数据*/p->next=q;p=q;count++;}/* 关闭文件*/fclose(fp);//输出printf("源数据为:\n");printf("共%d箱%d个数据\n",count/DEEP,count);p=head->next;count=1;num=1;while(p!=NULL){if(count==1)printf("箱%d:",num);if(count==DEEP){printf("%d\n",p->num);num++;count=1;}else{printf("%d ",p->num);count++;}p=p->next;}mean();medain();boundary();scanf("%d",&i);return 0;}//均值void mean(){printf("均值平滑后为:");box=(int *)malloc(sizeof(int)*num);p=head->next;count=1;num=0;sum=0;while(p!=NULL){if(count==DEEP){count=1;sum=sum+p->num;box[num]=sum/DEEP;sum=0;num++;}else{sum=sum+p->num;count++;}p=p->next;}for (i=0;i<num;i++){printf("\n箱%d:",i+1);for (j=0;j<DEEP;j++)printf("%d ",box[i]);}p=head->next;printf("\n离群值为:");while(p!=NULL){for(i=0;i<num;i++){for (j=0;j<DEEP;j++){if(abs(p->num-box[i])>(int)VPT){printf("\n箱%d:",i+1);printf("%d ",p->num);}p=p->next;}}}}//中值void medain(){printf("\n中值平滑后为:");p=head->next;count=1;num=0;int mid;while(p!=NULL){if(count==DEEP){box[num]=sum;count=1;num++;}else {if(count==DEEP/2||count==DEEP/2+1) if(DEEP%2){if(count==DEEP/2+1)sum=p->num;}else{if(count==DEEP/2+1)sum=(p->num+mid)/2;elsemid=p->num;}count++;}p=p->next;}for (i=0;i<num;i++){printf("\n箱%d:",i+1);for (j=0;j<DEEP;j++)printf("%d ",box[i]);}}//边界值void boundary(){printf("\n边界值平滑后为:\n");p=head->next;count=1;box=(int *)malloc(sizeof(int)*num*2); num=0;while(p!=NULL){if(count==DEEP){box[2*num+1]=p->num;count=1;num++;}else{if(count==1) {box[2*num]=p->num;}count++;}p=p->next;}p=head->next;count=1;num=0;while(p!=NULL){if(count==1)printf("箱%d:",num);if((p->num-box[2*num])>(box[2*num+1] -p->num)){printf("%d ",box[2*num+1]);}elseprintf("%d ",box[2*num]);if(count==DEEP){printf("\n");count=0;num++;}count++;p=p->next;}}实验数据文件:用空格分开13 15 16 16 19 20 20 21 22 22 25 25 25 25 30 33 33 35 35 35 35 36 40 45 46 52 70六、结果截图。
数据挖掘实验报告

数据挖掘实验报告近年来,数据挖掘技术在各个领域得到了广泛的应用和发展。
作为一种从大量数据中自动或半自动地获取信息的技术手段,数据挖掘已经成为了解决复杂问题的重要工具。
本文就进行的一次数据挖掘实验进行介绍。
一、实验介绍本次实验使用的数据集是某电商平台的用户购买记录。
数据集中主要记录了用户的购买行为,包括商品名称、价格、购买时间、购买数量等。
本次实验旨在对用户购买行为进行分析,以发现用户的消费特点和购物习惯。
二、数据预处理在进行数据挖掘前,首先需要对原始数据进行处理。
本次实验对数据进行了以下处理:1. 数据清洗:去掉重复记录、缺失数据和异常值。
2. 数据转换:将数据转化为适合挖掘的形式,即去除无关数据和重要性较低的数据,并将数据标准化。
3. 数据集成:将多个数据源中的数据集成到一起,以便进行挖掘。
三、数据分析在进行数据分析时,首先需要选择适合的算法对数据进行分析。
本次实验使用了关联规则分析算法和聚类分析算法。
这两个算法对数据进行分析后,可以提取出不同方面的数据,以发现用户的消费特点和购物习惯。
1. 关联规则分析关联规则分析算法是一种从大规模数据中发现如果一个事件出现,另一个事件也经常出现的规则的方法。
本次实验中,通过关联规则分析找出购买某一件商品时,可能会购买的其他商品。
通过分析不同商品之间的关联,可以发现用户的消费行为和购物习惯。
2. 聚类分析聚类分析算法是一种将数据集划分为多个类别的方法,使得每个类别内数据的相似度高于类别间的相似度。
本次实验中,通过聚类分析将用户划分为不同的群组,以进一步发现用户的消费特点和购物习惯。
四、实验结论基于本次实验的数据挖掘分析,得到了以下结论:1. 用户的消费行为和购物习惯对其购买行为有重要影响,需通过分析消费行为和购物习惯来预测和推荐用户购买商品。
2. 不同商品之间具有一定的关联性,可以通过对商品之间的关联进行分析,来推广和营销相关商品。
3. 用户的购买行为和个人特性的关联值得深入研究,可以提供更加个性化的商品推荐服务。
数据预处理案例实验报告

一、实验背景随着大数据时代的到来,数据挖掘和数据分析成为热门的研究领域。
然而,在实际应用中,原始数据往往存在噪声、缺失值、异常值等问题,直接对数据进行挖掘和分析难以得到准确的结果。
因此,数据预处理成为数据挖掘和数据分析的重要环节。
本实验以某电商平台用户购买数据为例,进行数据预处理实验,旨在提高数据质量,为后续的数据挖掘和分析提供基础。
二、实验目的1. 了解数据预处理的流程和常用方法;2. 掌握缺失值处理、异常值处理、特征筛选等数据预处理技术;3. 提高数据质量,为后续的数据挖掘和分析提供基础。
三、实验数据本实验数据来源于某电商平台用户购买数据,包括用户ID、商品ID、购买时间、购买金额、用户性别、用户年龄、用户职业等字段。
四、实验步骤1. 数据加载与探索首先,使用Python的pandas库加载实验数据,并进行初步探索。
通过观察数据的基本统计信息,了解数据分布情况,为后续的数据预处理提供依据。
2. 缺失值处理(1)数据可视化:通过散点图、直方图等方式,观察数据中缺失值的分布情况。
(2)缺失值填充:根据缺失值的分布情况,选择合适的填充方法。
例如,对于连续型变量,可以使用均值、中位数或众数进行填充;对于分类变量,可以使用众数或根据其他变量进行填充。
3. 异常值处理(1)数据可视化:通过箱线图、散点图等方式,观察数据中异常值的分布情况。
(2)异常值处理:根据异常值的性质,选择合适的处理方法。
例如,删除异常值、对异常值进行修正或替换等。
4. 特征筛选(1)相关性分析:计算变量之间的相关系数,筛选出与目标变量高度相关的特征。
(2)信息增益分析:根据信息增益计算特征的重要性,筛选出对目标变量有较大贡献的特征。
5. 数据预处理结果经过数据预处理,数据质量得到提高,为后续的数据挖掘和分析提供了良好的基础。
五、实验结果与分析1. 缺失值处理通过对缺失值进行填充,降低了数据缺失的比例,提高了数据质量。
2. 异常值处理通过对异常值进行处理,消除了数据中的噪声,提高了数据质量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据挖掘实验报告(一)
数据预处理
姓名:李圣杰
班级:计算机1304
学号:02
一、实验目的
1.学习均值平滑,中值平滑,边界值平滑的基本原理
2.掌握链表的使用方法
3.掌握文件读取的方法
二、实验设备
PC一台,dev-c++
三、实验内容
数据平滑
假定用于分析的数据包含属性age。
数据元组中age的值如下(按递增序):13, 15, 16, 16, 19, 20, 20, 21, 22, 22, 25, 25, 25, 25, 30, 33, 33, 35, 35, 35, 35, 36, 40, 45, 46, 52, 70。
使用你所熟悉的程序设计语言进行编程,实现如下功能(要求程序具有通用性):
(a) 使用按箱平均值平滑法对以上数据进行平滑,箱的深度为3。
(b) 使用按箱中值平滑法对以上数据进行平滑,箱的深度为3。
(c) 使用按箱边界值平滑法对以上数据进行平滑,箱的深度为3。
四、实验原理
使用c语言,对数据文件进行读取,存入带头节点的指针链表中,同时计数,均值求三个数的平均值,中值求中间的一个数的值,边界值将中间的数转换为离边界较近的边界值
五、实验步骤
代码
#include <>
#include <>
#include <>
#define DEEP 3
#define DATAFILE ""
#define VPT 10
//定义结构体
typedef struct chain{
int num;
struct chain *next;
}* data;
//定义全局变量
data head,p,q;
FILE *fp;
int num,sum,count=0;
int i,j;
int *box;
void mean();
void medain();
void boundary();
int main ()
{
//定义头指针
head=(data)malloc(sizeof(struct chain));
head->next=NULL;
/*打开文件*/
fp=fopen(DATAFILE,"r");
if(!fp)
exit(0);
p=head;
while(!feof(fp)){
q=(data)malloc(sizeof(struct chain));
q->next=NULL;
fscanf(fp,"%d",&q->num); /*读一个数据*/
p->next=q;
p=q;
count++;
}
/* 关闭文件*/
fclose(fp);
//输出
printf("源数据为:\n");
printf("共%d箱%d个数据\n",count/DEEP,count);
p=head->next;
count=1;
num=1;
while(p!=NULL){
if(count==1)printf("箱%d:",num);
if(count==DEEP){
printf("%d\n",p->num);
num++;
count=1;
}
else{
printf("%d ",p->num);
count++;
}
p=p->next;
}
mean();
medain();
boundary();
scanf("%d",&i);
return 0;
}
//均值
void mean(){
printf("均值平滑后为:");
box=(int *)malloc(sizeof(int)*num);
p=head->next;
count=1;
num=0;
sum=0;
while(p!=NULL){
if(count==DEEP){
count=1;
sum=sum+p->num;
box[num]=sum/DEEP;
sum=0;
num++;
}
else{
sum=sum+p->num;
count++;
}
p=p->next;
}
for (i=0;i<num;i++){
printf("\n箱%d:",i+1);
for (j=0;j<DEEP;j++)
printf("%d ",box[i]);
}
p=head->next;
printf("\n离群值为:");
while(p!=NULL){
for(i=0;i<num;i++)
{
for (j=0;j<DEEP;j++)
{
if(abs(p->num-box[i])>(int)VPT)
{
printf("\n箱%d:",i+1);
printf("%d ",p->num);
}
p=p->next;
}
}
}
}
//中值
void medain(){
printf("\n中值平滑后为:");
p=head->next;
count=1;
num=0;
int mid;
while(p!=NULL){
if(count==DEEP){
box[num]=sum;
count=1;
num++;
}
else {
if(count==DEEP/2||count==DEEP/2+1) if(DEEP%2){
if(count==DEEP/2+1)
sum=p->num;
}
else{
if(count==DEEP/2+1)
sum=(p->num+mid)/2;
else
mid=p->num;
}
count++;
}
p=p->next;
}
for (i=0;i<num;i++){
printf("\n箱%d:",i+1);
for (j=0;j<DEEP;j++)
printf("%d ",box[i]);
}
}
//边界值
void boundary(){
printf("\n边界值平滑后为:\n");
p=head->next;
count=1;
box=(int *)malloc(sizeof(int)*num*2); num=0;
while(p!=NULL){
if(count==DEEP){
box[2*num+1]=p->num;
count=1;
num++;
}
else{
if(count==1) {
box[2*num]=p->num;
}
count++;
}
p=p->next;
}
p=head->next;
count=1;
num=0;
while(p!=NULL){
if(count==1)
printf("箱%d:",num);
if((p->num-box[2*num])>(box[2*num+1] -p->num)){
printf("%d ",box[2*num+1]);
}
else
printf("%d ",box[2*num]);
if(count==DEEP){
printf("\n");
count=0;
num++;
}
count++;
p=p->next;
}
}
实验数据文件:用空格分开
13 15 16 16 19 20 20 21 22 22 25 25 25 25 30 33 33 35 35 35 35 36 40 45 46 52 70
六、结果截图。