用MATLAB实现大数据挖掘地一种算法

合集下载

matlab贝叶斯算法

matlab贝叶斯算法

matlab贝叶斯算法一、引言随着科技的发展,人工智能、数据挖掘等领域的研究日益深入,贝叶斯算法作为一种基于概率推理的方法,在这些领域中得到了广泛的应用。

MATLAB 作为一款强大的数学软件,为贝叶斯算法的实现和应用提供了便利。

本文将介绍贝叶斯算法的原理,以及如何在MATLAB中实现和应用贝叶斯算法。

二、贝叶斯算法的原理1.贝叶斯定理贝叶斯定理是贝叶斯算法的基础,它描述了在已知某条件概率的情况下,求解相关联的逆条件概率。

贝叶斯定理的数学表达式为:P(A|B) = P(B|A) * P(A) / P(B)2.概率论基础贝叶斯算法涉及到的概率论基础包括概率分布、条件概率、独立性等概念。

在实际问题中,我们需要根据已知条件来计算概率分布,从而得出相关联的概率值。

三、MATLAB实现贝叶斯算法的方法1.贝叶斯网络贝叶斯网络是一种基于贝叶斯定理的图形化表示方法,它可以帮助我们构建复杂的问题模型。

在MATLAB中,可以使用Bayes Net Toolbox工具包来创建和计算贝叶斯网络。

2.极大似然估计极大似然估计是一种求解概率模型参数的方法。

在贝叶斯算法中,我们可以通过极大似然估计来优化模型参数,从而提高预测准确性。

在MATLAB中,可以使用统计工具箱中的极大似然估计函数进行计算。

3.朴素贝叶斯分类器朴素贝叶斯分类器是一种基于贝叶斯定理的分类方法,它要求特征之间相互独立。

在MATLAB中,可以使用朴素贝叶斯分类器进行文本分类、故障诊断等任务。

四、实例分析1.故障诊断应用贝叶斯算法在故障诊断领域具有广泛的应用。

通过建立故障诊断模型,可以对设备的故障进行预测和诊断。

例如,在MATLAB中,可以使用朴素贝叶斯分类器对轴承故障数据进行分类。

2.文本分类应用贝叶斯算法在文本分类领域也具有较高的准确率。

通过构建贝叶斯网络模型,可以对文本进行自动分类。

例如,在MATLAB中,可以使用朴素贝叶斯分类器对新闻分类数据进行分类。

MATLAB大数据处理与分析方法

MATLAB大数据处理与分析方法

MATLAB大数据处理与分析方法导语:随着互联网和计算机技术的不断发展,海量数据的产生和存储给传统的数据处理和分析带来了巨大挑战。

在这个信息爆炸的时代,如何有效地处理大数据成为了一个迫切需要解决的问题。

而MATLAB作为一种强大的数值计算软件,提供了多种方法和工具来处理和分析大数据。

本文将从不同的角度介绍MATLAB在大数据处理与分析中的应用方法。

1.数据的导入与读取对于大数据的处理,首先需要将数据导入到MATLAB环境中。

MATLAB提供了多种数据格式的读取函数,包括常见的文本文件、Excel文件、数据库等。

根据不同的数据格式,可以使用不同的函数进行读取和导入操作。

例如,对于文本文件,可以使用`readtable`函数将数据读取为表格形式;对于Excel文件,可以使用`xlsread`函数读取;而对于数据库,可以使用`database`函数连接数据库并读取数据。

2.数据的清洗与处理在大数据分析中,往往需要对数据进行清洗和预处理,以去除噪声、处理缺失值等。

MATLAB提供了丰富的函数和工具来进行数据清洗和处理。

例如,`ismissing`函数可以用于检测缺失值,`fillmissing`函数可以用于填充缺失值;`isnan`函数可以用于检测NaN值,`rmmissing`函数可以用于删除包含缺失值的行。

此外,MATLAB还提供了强大的统计工具箱和机器学习工具箱,可以用于数据的降维、特征选择和异常值检测等操作。

3.数据的可视化与探索数据可视化是大数据分析中不可或缺的环节,它能够直观地展示数据的特征和规律。

MATLAB提供了丰富的绘图函数和工具,可以用于生成各种类型的图表,如散点图、折线图、柱状图等。

在绘制图表时,可以通过调整颜色、线型、标签等参数来使图表更加美观和易于理解。

此外,MATLAB还支持交互式的绘图,可以通过缩放、平移、旋转等操作来查看数据的不同维度和细节。

4.数据的分析与建模在大数据处理和分析中,数据的分析和建模是关键步骤。

在Matlab中如何进行大数据处理

在Matlab中如何进行大数据处理

在Matlab中如何进行大数据处理引言随着现代科技的快速发展,我们已经进入了一个大数据时代。

在各行各业中,海量的数据被不断地收集和生成。

如何高效地处理这些大数据成为了一个重要的问题。

Matlab作为一种强大的数据分析和计算工具,提供了许多实用的函数和方法来进行大数据处理。

本文将介绍在Matlab中如何进行大数据处理的一些技巧和方法。

一、数据加载在进行大数据处理之前,首先需要将数据加载到Matlab中。

Matlab提供了多种加载数据的方式,包括读取文本文件、Excel文件、数据库等。

对于较大的数据文件,可以通过使用适当的文件格式和读取方法来提高加载速度。

在读取大型文本文件时,可以使用fread或者textscan函数。

fread函数可以按照指定的数据类型读取二进制文件,而textscan函数可以按照行读取文本文件,并且支持多种数据格式和分隔符。

对于Excel文件,可以使用xlsread函数来读取数据,该函数可以指定要读取的Sheet和范围。

对于数据库中的大数据表,可以使用Database Toolbox中的函数来进行快速加载。

这些函数可以轻松地连接到数据库,并且支持高级数据检索和过滤。

二、数据预处理在进行大数据处理之前,通常需要对原始数据进行预处理。

预处理的目的是清洗数据、去除异常值、填充缺失值、进行数据转换等。

Matlab提供了丰富的函数和工具箱来进行数据预处理。

常见的数据预处理包括平滑处理、数据插补、特征选择和降维等。

平滑处理可以通过滤波、移动平均等方法来消除数据中的噪声和波动。

数据插补可以通过线性插值、插值法、回归方法等来填充缺失值。

特征选择可以通过统计方法和机器学习算法来选择对数据建模具有重要意义的特征。

降维可以使用主成分分析(PCA)和独立成分分析(ICA)等方法来减少数据的维度,并保留原始数据中的主要信息。

三、数据分析在大数据处理中,数据分析是至关重要的一步。

通过对数据进行统计分析、模式识别和机器学习等方法,可以从数据中发现有价值的信息和规律。

使用MATLAB进行数据分析教程

使用MATLAB进行数据分析教程

使用MATLAB进行数据分析教程第一章:介绍MATLAB的基本知识MATLAB是一种广泛应用于科学计算和工程设计的软件工具。

本章将介绍MATLAB的基本知识,包括安装和启动MATLAB、MATLAB工作环境的组成以及基本的编程语法和命令。

通过本章的学习,读者可以快速上手使用MATLAB进行数据分析。

第二章:数据导入与清洗在进行数据分析之前,首先需要将数据导入到MATLAB中,并进行必要的数据清洗。

本章将介绍如何从不同的数据源导入数据,如Excel表格、文本文件和数据库。

此外,还将涵盖数据清洗的基本技术,例如处理缺失值、异常值和重复值等。

第三章:数据可视化数据可视化是数据分析的重要环节,可以帮助我们更好地理解数据的分布、趋势和关系。

本章将详细介绍如何使用MATLAB进行数据可视化分析。

包括绘制散点图、折线图、直方图、箱线图等常用的图形,并掌握调整图形样式和添加图例、标签等技巧。

第四章:统计分析统计分析是数据分析的关键部分,可以揭示数据背后的规律和关联。

本章将讲解如何使用MATLAB进行统计分析。

包括描述性统计分析,如计算均值、方差和百分位数等;基本的假设检验,如t检验和方差分析等;以及回归分析和相关分析等。

第五章:机器学习基础机器学习是近年来兴起的一种强大的数据分析技术。

本章将介绍MATLAB中的机器学习基础知识,包括常见的机器学习算法、如决策树、支持向量机和神经网络等;以及如何使用MATLAB进行数据预处理、模型训练和评估等。

第六章:时间序列分析时间序列分析是一种专门针对时间相关数据的分析方法。

本章将介绍MATLAB中的时间序列分析工具,包括自相关函数、移动平均和指数平滑等;以及如何进行时间序列模型的建立和预测等。

读者可以通过本章的学习,掌握MATLAB在时间序列分析中的应用技巧。

第七章:图像处理与分析图像处理与分析是MATLAB的重要应用领域之一。

本章将介绍MATLAB中的图像处理和分析工具,包括图像读取、显示和处理等基本操作;常见的图像处理技术,如灰度变换、滤波和边缘检测等;以及图像分割和特征提取等相关内容。

如何在MATLAB中进行大数据处理

如何在MATLAB中进行大数据处理

如何在MATLAB中进行大数据处理随着现代科技的快速发展,大数据处理已经成为了一个非常重要的领域。

在各行各业中,大规模的数据集不断涌现,对于我们来说,如何高效地处理和分析这些数据是非常关键的。

而作为一种常用的科学计算软件,MATLAB提供了许多强大的工具和函数,使我们能够更加容易地进行大数据处理。

本文将为你介绍如何在MATLAB中进行大数据处理,帮助你更好地应对这个挑战。

首先,我们来了解一下MATLAB中常用的数据结构和处理方法。

在MATLAB 中,数组是一种基本的数据结构。

它可以容纳各种类型的数据,如数值、字符串等。

通过使用数组,我们可以方便地存储和处理大量的数据。

而且,MATLAB提供了许多矩阵和数组运算函数,可以快速进行各种数值计算和统计分析。

比如,我们可以使用MATLAB提供的sum函数求解数组元素之和,mean函数计算数组的平均值,std函数计算数组的标准差等等。

这些函数的使用非常简单,只需要输入待处理的数组即可。

除了基本的数组运算函数外,MATLAB还提供了许多强大的数据处理工具箱。

比如,MATLAB提供了统计与机器学习工具箱,可以进行数据建模、统计分析和机器学习等任务。

MATLAB还提供了图像处理工具箱,可以进行图像处理和计算机视觉等任务。

此外,MATLAB还提供了信号处理工具箱,可以进行信号处理和音频处理等任务。

通过使用这些工具箱,我们可以更加高效地处理大规模的数据集,并取得更好的分析结果。

除了提供各种数据处理工具箱外,MATLAB还支持并行计算。

在处理大规模的数据集时,传统的串行计算效率较低,耗时较长。

而使用并行计算可以充分利用多核处理器的优势,加速数据处理过程。

MATLAB提供了Parallel Computing Toolbox,可以方便地进行并行计算。

我们只需要将待处理的任务划分成多个子任务,然后使用MATLAB提供的parfor循环结构即可进行并行计算。

通过并行计算,我们可以大大缩短数据处理的时间,提高效率。

用MATLAB实现大数据挖掘地一种算法

用MATLAB实现大数据挖掘地一种算法

一、数据挖掘的目的数据挖掘(Data Mining)阶段首先要确定挖掘的任务或目的。

数据挖掘的目的就是得出隐藏在数据中的有价值的信息。

数据挖掘是一门涉及面很广的交叉学科,包括器学习、数理统计、神经网络、数据库、模式识别、粗糙集、模糊数学等相关技术。

它也常被称为“知识发现”。

知识发现(KDD)被认为是从数据中发现有用知识的整个过程。

数据挖掘被认为是KDD过程中的一个特定步骤,它用专门算法从数据中抽取模式(patter,如数据分类、聚类、关联规则发现或序列模式发现等。

数据挖掘主要步骤是:数据准备、数据挖掘、结果的解释评估。

二、数据挖掘算法说明确定了挖掘任务后,就要决定使用什么样的挖掘算法。

由于条件属性在各样本的分布特性和所反映的主观特性的不同, 每一个样本对应于真实情况的局部映射。

建立了粗糙集理论中样本知识与信息之间的对应表示关系, 给出了由属性约简求约简决策表的方法。

基于后离散化策略处理连续属性, 实现离散效率和信息损失之间的动态折衷。

提出相对值条件互信息的概念衡量单一样本中各条件属性的相关性, 可以充分利用现有数据处理不完备信息系统。

本次数据挖掘的方法是两种,一是找到若干条特殊样本,而是找出若干条特殊条件属性。

最后利用这些样本和属性找出关联规则。

(第四部分详细讲解样本和属性的选择)三数据预处理过程数据预处理一般包括消除噪声、推导计算缺值数据、消除重复记录、完成数据类型转换(如把连续值数据转换为离散型数据,以便于符号归纳,或是把离散型数据转换为连续)。

本文使用的数据来源是名为“CardiologyCategorical”的excel文件中的“源数据”。

该数据表共303行,14个属性。

即共有303个样本。

将该数据表的前200行设为训练样本,剩下后的103行作为测试样本,用基于粗糙集理论的属性约简的方法生成相应的规则,再利用测试样本对这些规则进行测试。

首先对源数据进行预处理,主要包括字符型数据的转化和数据的归一化。

使用Matlab进行大规模数据处理的技巧

使用Matlab进行大规模数据处理的技巧

使用Matlab进行大规模数据处理的技巧1. 引言大规模数据的处理已经成为当今科研和商业领域中的一个重要挑战。

随着数据量的不断增加,传统的数据处理方法已经无法满足需求。

而Matlab作为一种强大的科学计算软件,提供了丰富的工具和函数来处理大规模数据。

本文将介绍一些使用Matlab进行大规模数据处理的技巧,帮助读者应对此类挑战。

2. 数据读取和加载在处理大规模数据之前,首先需要将数据加载到Matlab中。

Matlab提供了多种方法来读取和加载数据。

对于小型数据文件,可以使用`load`函数或`csvread`函数来读取。

而对于大型数据文件,可以使用`memmapfile`函数来实现内存映射,以避免将整个文件加载到内存中。

此外,Matlab还支持对数据库和网络数据的读取。

3. 数据预处理在进行大规模数据处理之前,通常需要对数据进行预处理,以清洗和转换数据。

Matlab提供了一系列函数和工具来进行数据预处理。

例如,使用`table`和`struct`可以方便地处理结构化数据。

使用`reshape`和`repmat`函数可以重新调整和重复数组。

使用`filter`函数可以实现滤波操作。

使用`interpn`函数可以进行插值操作。

通过这些预处理方法,可以使得数据变得更加适合进行后续处理和分析。

4. 并行计算和分布式计算大规模数据处理往往需要消耗大量的计算资源。

Matlab提供了并行计算和分布式计算的功能,以加速大规模数据处理过程。

通过使用`parfor`和`spmd`等并行计算工具,可以利用多核处理器的并行能力,加快运算速度。

而通过使用`matlabpool`和`parpool`等分布式计算工具,可以将任务分发到多个计算节点上,进一步提高计算效率。

这些功能的灵活使用,可以帮助用户在处理大规模数据时节约时间和资源。

5. 数据压缩和存储处理大规模数据时,数据的存储和传输成本也是一个重要方面,往往需要将数据进行压缩和存储。

如何使用Matlab技术进行大数据分析

如何使用Matlab技术进行大数据分析

如何使用Matlab技术进行大数据分析大数据分析是当前智能时代的热门话题,对于各行各业来说,如何高效地利用大数据进行分析和决策是一个重要问题。

而Matlab作为一种高效的科学计算软件,其强大的数据处理和可视化功能,使其成为许多数据科学家的首选工具。

本文将探讨如何使用Matlab技术进行大数据分析。

1. 数据预处理大数据分析的第一步是数据预处理。

在数据的收集和整理阶段,往往需要对数据进行清洗、去噪、归一化等处理。

而Matlab提供了一系列内置函数和工具箱,可以方便地实现这些操作。

例如,可以使用Matlab中的impute函数来处理缺失值,使用filter函数来滤波,使用normalize函数来进行数据归一化等。

此外,Matlab还支持多种数据格式的导入和导出,包括文本文件、Excel文件、数据库等,方便用户进行数据的读取和存储。

2. 数据可视化数据可视化是大数据分析的重要手段之一。

通过将数据以图表、图像等形式展示出来,可以更直观地理解数据的规律和特点。

而Matlab作为一个强大的绘图工具,提供了丰富的绘图函数和工具箱,可以绘制各种类型的图表,包括散点图、折线图、柱状图、饼图等。

此外,Matlab还支持交互式可视化,用户可以通过交互式操作来探索和分析数据,提高分析的效率和准确性。

3. 数据分析Matlab提供了丰富的数据分析函数和工具箱,包括统计分析、信号处理、机器学习等领域的方法和算法。

通过调用这些函数和工具箱,用户可以快速进行多种数据分析任务,如回归分析、聚类分析、分类分析等。

同时,Matlab还支持自定义函数和算法的编写和调用,用户可以根据自己的需求和特定问题,编写自己的数据分析方法。

此外,Matlab还支持并行计算,可以充分利用多核和集群计算资源,提高分析速度和效率。

4. 模型建立和优化在大数据分析中,常常需要建立数学模型来描述数据之间的关系和规律。

而Matlab提供了丰富的数学建模函数和工具箱,可以方便地进行模型的建立和求解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、数据挖掘的目的数据挖掘(Data Mining)阶段首先要确定挖掘的任务或目的。

数据挖掘的目的就是得出隐藏在数据中的有价值的信息。

数据挖掘是一门涉及面很广的交叉学科,包括器学习、数理统计、神经网络、数据库、模式识别、粗糙集、模糊数学等相关技术。

它也常被称为“知识发现”。

知识发现(KDD)被认为是从数据中发现有用知识的整个过程。

数据挖掘被认为是KDD过程中的一个特定步骤,它用专门算法从数据中抽取模式(patter,如数据分类、聚类、关联规则发现或序列模式发现等。

数据挖掘主要步骤是:数据准备、数据挖掘、结果的解释评估。

二、数据挖掘算法说明确定了挖掘任务后,就要决定使用什么样的挖掘算法。

由于条件属性在各样本的分布特性和所反映的主观特性的不同, 每一个样本对应于真实情况的局部映射。

建立了粗糙集理论中样本知识与信息之间的对应表示关系, 给出了由属性约简求约简决策表的方法。

基于后离散化策略处理连续属性, 实现离散效率和信息损失之间的动态折衷。

提出相对值条件互信息的概念衡量单一样本中各条件属性的相关性, 可以充分利用现有数据处理不完备信息系统。

本次数据挖掘的方法是两种,一是找到若干条特殊样本,而是找出若干条特殊条件属性。

最后利用这些样本和属性找出关联规则。

(第四部分详细讲解样本和属性的选择)三数据预处理过程数据预处理一般包括消除噪声、推导计算缺值数据、消除重复记录、完成数据类型转换(如把连续值数据转换为离散型数据,以便于符号归纳,或是把离散型数据转换为连续)。

本文使用的数据来源是名为“CardiologyCategorical”的excel文件中的“源数据”。

该数据表共303行,14个属性。

即共有303个样本。

将该数据表的前200行设为训练样本,剩下后的103行作为测试样本,用基于粗糙集理论的属性约简的方法生成相应的规则,再利用测试样本对这些规则进行测试。

首先对源数据进行预处理,主要包括字符型数据的转化和数据的归一化。

数据预处理的第一步是整理源数据,为了便于matlab读取数据,把非数字数据转换为离散型数字数据。

生成lisanhua.xsl文件。

这一部分直接在excel工作表中直接进行。

步骤如下:将属性“sex”中的“Male”用“1”表示,“Female”用“2”表示;将属性“chest pain type”中的“Asymptomatic”用“1”表示,“Abnormal Angina”用“2”表示,“Angina”用“3”表示,“NoTang”用“4”表示;将属性“Fasting blood suga<120”与属性“angina”中的“FALSE”用“1”表示,“TRUE”用“2”表示;将属性“resting ecg”中的“Hyp”用“1”表示,“Normal”用“2”表示,“Abnormal”用“3”表示;将属性“slope”中的“Down”用“1”表示,“Flat”用“2”表示,“Up”用“3”表示,;将属性“thal”中的“Rev”用“1”表示,“Normal”用“2”表示,“Fix”用“3”表示;将属性“class”中的“Healthy”用“1”表示,“Sick”用“2”表示;数据预处理的第二步:使用dm=xlsread('lisanhua');导入’lisanhua’.xls文件,在MATLAB中对一些连续属性值离散化。

如下:1、[29,48]=1,[48,62]=2,[62,77]=34、[94,110]=1,[110,143]=2,[143,200]=35、[126,205]=1,[205,293]=2,[293,564]=38、[71,120]=1,[120,175]=2,[175,202]=310、[0,1.5]=1,[1.5,2.5]=2,[2.5,6.2]=3。

然后对数据进行归一化处理:由于不同属性之间的属性值相同,所以利用下面语句对一共13个条件属性中的38个属性进行如下赋值,使每条属性唯一确定。

从而得到38个条件属性,只不过38个里面有且只能出现13个。

程序如下:m1=[0,3,2,4,3,3,2,3,3,2,3,3,4,3];k=1;w=m1(k);dm3=dm2;for i=1:3939dm3(i)=dm2(i)+w;if rem(i,303)==0k=k+1;w=w+m1(k);endend从而得到dm(3)矩阵。

而且决策属性分为1:healthy;2:sick。

并且在38个条件属性中没有值为0。

四、挖掘算法1、特殊样本首先在前200条样本中分别找出三条对应两种决策属性的重要样本,样本必须满足在同类决策属性下其他199条的13条决策属性中和它的13条条件属性数目大于等于10的前3条样本。

2、特殊条件属性值其次分别对应两条决策属性值的5条重要条件属性值(在38个条件属性里找),特殊属性值必须满足:(1)在对应相同决策属性下,此决策属性支持率必须在前五,(2)而且如果不同决策属性出现相同条件属性。

如果相同决策属性同时出现在不同决策属性中,删除这条后找支持率第六的条件属性,以此类推。

挖掘算法在MATLAB里列出并做了标注。

五、验证程序1、预处理在验证程序里面分别对测试数据和六条样本做了对比,又对其属性值和特殊属性值做了对比,最后利用加权求和算法判断测试样本的决策属性正确率。

其中:nc,mc代表测试数据分别和两类样本属性中相同数是否大于等于9时的加权值。

ncc,mcc代表测试数据分别和两类特殊属性满足几条数目的加权值。

2、关联规则(1)、如果(nc>=0.9&ncc>=8)|(ncc>=10&nc>=0.6) 得到决策属性healthy(2)、不满足以上条件的话如果(mc>=0.9|mcc>=8)|(mcc>=9&mc>=0.6) 得到决策属性sick。

(3)、不满足以上条件的话如果nc>=(mc+0.3)|ncc>=(mcc+2) 得到决策属性healthy。

(4)、不满足以上条件的话如果mc>nc 得到决策属性为sick。

(5)、不满足以上条件的话如果ncc>mcc 得到决策属性为healthy。

(6)、不满足以上条件的话如果mcc>ncc 得到决策属性为sick。

(7)、不满足以上条件的话得到决策属性为sick。

六、正确率及结果分析正确率为82.5%结果分析:由于采用了两类约束方法,所以效果还可以。

七、程序如下页所示clear;%%%%% 数据预处理程序%%%%%%dm=xlsread('lisanhua'); % 载入数据%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% z1=dm(:,1); % 离散化第一列数据for i=1:303if z1(i)>=29&z1(i)<48z1(i)=1;elseif z1(i)>=48&z1(i)<62z1(i)=2;else z1(i)=3;endendz2=dm(:,2);for i=1:303if z2(i)==0z2(i)=1;else z2(i)=2;endendz3=dm(:,3);for i=1:303z3(i)=z3(i)+1;endz4=dm(:,4);for i=1:303if z4(i)>=94&z4(i)<110z4(i)=1;elseif z4(i)>=110&z4(i)<143z4(i)=2;else z4(i)=3;endendz5=dm(:,5);for i=1:303if z5(i)>=126&z5(i)<205z5(i)=1;elseif z5(i)>=205&z5(i)<293z5(i)=2;else z5(i)=3;endendz6=dm(:,6);for i=1:303z6(i)=z6(i)+1;endz7=dm(:,7);for i=1:303z7(i)=z7(i)+1;endz8=dm(:,8);for i=1:303if z8(i)>=71&z8(i)<120z8(i)=1;elseif z8(i)>=120&z8(i)<175z8(i)=2;else z8(i)=3;endendz9=dm(:,9);for i=1:303z9(i)=z9(i)+1;endz10=dm(:,10);for i=1:303if z10(i)>=0&z10(i)<1.5z10(i)=1;elseif z10(i)>=1.5&z10(i)<2.5 z10(i)=2;else z10(i)=3;endendz11=dm(:,11);for i=1:303z11(i)=z11(i)+1;endz12=dm(:,12);for i=1:303z12(i)=z12(i)+1;endz13=dm(:,13);for i=1:303z13(i)=z13(i)+1;endz14=dm(:,14);for i=1:303z14(i)=z14(i)+1;enddm2=[z1,z2,z3,z4,z5,z6,z7,z8,z9,z10,z11,z12,z13,z14];%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%m1=[0,3,2,4,3,3,2,3,3,2,3,3,4,3];k=1;w=m1(k);dm3=dm2;for i=1:3939dm3(i)=dm2(i)+w;if rem(i,303)==0k=k+1;w=w+m1(k);endend%%%%% 预处理结束%%%%%%%%%% 挖掘算法%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 找6条样本前的预处理dm4=zeros(200,14);dm5=zeros(200,14);for i=1:200if dm3(i,14)==1dm4(i,1:13)=dm3(i,1:13);else dm5(i,1:13)=dm3(i,1:13);endenda1=zeros(38,1);a2=zeros(38,1);for k=1:38for i=1:13for j=1:200if dm4(j,i)==k&dm4(j,i)~=0a1(k)=a1(k)+1;endif dm5(j,i)==k&dm5(j,i)~=0a2(k)=a2(k)+1;endendendenda5=a1;a6=a2;a3=zeros(5,1);a4=zeros(5,1);j=1;while j<6a11=0;a11=max(a1);for i=1:38if a1(i)==a11a3(j)=a11;j=j+1;if j>5break;enda1(i)=0;endendendj=1;while j<6a22=0;a22=max(a2);for i=1:38if a2(i)==a22a4(j)=a22;j=j+1;if j>5break;enda2(i)=0;endendend%%%%%%%%%%%%%%%% 构造h1 h2 矩阵h1=zeros(200,14);h2=zeros(1,200);y1=0;y2=0;y3=0;y4=0;for j=1:200x=0;for i=1:200h1(i,1:13)=dm3(j,1:13)==dm3(i,1:13);h1(i,14)=dm3(j,14)==dm3(i,14);if sum(h1(i,1:13))>=10&h1(i,14)==1x=x+1;endendh2(j)=x;end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 筛选h2 矩阵得到h3 h4矩阵h3=zeros(1,200);h4=zeros(1,200);for i=1:200if z14(i)==1h3(i)=h2(i);else h4(i)=h2(i);endend %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% h5=h3;h6=h4;%%%%%%%%%%%%%% 找六条重要样本%%%%%%%%% y1=max(h5);for i=1:200if h5(i)==y1h5(i)=0;t1=i;endendy2=max(h5);for i=1:200if h5(i)==y2h5(i)=0;t2=i;endendy3=max(h5);for i=1:200if h5(i)==y3h5(i)=0;t3=i;endendy4=max(h6);for i=1:200if h6(i)==y4h6(i)=0;t4=i;endendy5=max(h6);for i=1:200if h6(i)==y5h6(i)=0;t5=i;endendy6=max(h6);for i=1:200if h6(i)==y6h6(i)=0;t6=i;endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%% 找特殊样本结束%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 找特殊属性值dm4=zeros(200,14);dm5=zeros(200,14);for i=1:200if dm3(i,14)==1dm4(i,1:13)=dm3(i,1:13);else dm5(i,1:13)=dm3(i,1:13);endenda1=zeros(38,1);a2=zeros(38,1);for k=1:38for i=1:13for j=1:200if dm4(j,i)==k&dm4(j,i)~=0a1(k)=a1(k)+1;endif dm5(j,i)==k&dm5(j,i)~=0a2(k)=a2(k)+1;endendendenda5=a1;a6=a2;a3=zeros(6,1);a4=zeros(6,1); j=1;while j<7a11=0;a11=max(a1);for i=1:38if a1(i)==a11a3(j)=a11;j=j+1;if j>6break;enda1(i)=0;endendendj=1;while j<7a22=0;a22=max(a2);for i=1:38if a2(i)==a22a4(j)=a22;j=j+1;if j>6break;enda2(i)=0;endendendb1=zeros(6,1);b2=zeros(6,1);for j=1:6for i=1:38if a5(i)==a3(j)b1(j)=i;endendendfor j=1:6for i=1:38if a6(i)==a4(j)b2(j)=i;endendendb3(1:5,1)=b1(2:6,1);b4(1:5,1)=b2(1:5,1);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 寻找结束%%%%%%%%%%%%%%%%%%%%% 验证程序开始h7=zeros(103,14);h8=zeros(103,14);tc=0;for i=1:103h7(i,1:13)=dm3(200+i,1:13);end%%%%%%%%%%%%%%%%%%%%%%%%%% 特殊样本for i=1:103nc=0;mc=0;ncc=0;mcc=0;h8(i,1:13)=h7(i,1:13)==dm3(t1,1:13);if sum(h8(i,1:13))>=9nc=nc+0.3;endh8(i,1:13)=h7(i,1:13)==dm3(t2,1:13);if sum(h8(i,1:13))>=9nc=nc+0.3;endh8(i,1:13)=h7(i,1:13)==dm3(t3,1:13);if sum(h8(i,1:13))>=9nc=nc+0.3;endh8(i,1:13)=h7(i,1:13)==dm3(t4,1:13);if sum(h8(i,1:13))>=9mc=mc+0.3;endh8(i,1:13)=h7(i,1:13)==dm3(t5,1:13);if sum(h8(i,1:13))>=9mc=mc+0.3;endh8(i,1:13)=h7(i,1:13)==dm3(t6,1:13);if sum(h8(i,1:13))>=9mc=mc+0.3;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 样本结束%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 特殊属性值ncc=0;mcc=0;for j=1:13if h7(i,j)==b3(1)ncc=ncc+3;else if h7(i,j)==b3(2)ncc=ncc+3;else if h7(i,j)==b3(3)ncc=ncc+2;else if h7(i,j)==b3(4)ncc=ncc+2;else if h7(i,j)==b3(5)ncc=ncc+2;else if h7(i,j)==b4(1)mcc=mcc+3;else if h7(i,j)==b4(2)mcc=mcc+3;else if h7(i,j)==b4(3)mcc=mcc+2;else if h7(i,j)==b4(4)mcc=mcc+2;else if h7(i,j)==b4(5)mcc=mcc+2;endendendendendendendendendendend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 属性值结束%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 挖掘算法if (nc>=0.9&ncc>=8)|(ncc>=10&nc>=0.6)h7(i,14)=1;else if (mc>=0.9|mcc>=8)|(mcc>=9&mc>=0.6)h7(i,14)=2;else if nc>=(mc+0.3)|ncc>=(mcc+2)h7(i,14)=1;else if mc>nch7(i,14)=2;else if ncc>mcch7(i,14)=1;else if mcc>ncch7(i,14)=2;elseh7(i,14)=2;endendendendendendend %%%%%%%%%%%%%%%%%%%%%%%%% 挖掘结束%%%%%%%%%%%%%%%%%% 计算正确率h9=zeros(103,1);h9=h7(:,14)==dm3(201:303,14);tc=sum(h9)/103 %%%%%%%%%%%%%%%%%%%%%%% 算法完毕。

相关文档
最新文档