武汉大学国际软件学院
实验报告
课程名称 模式识别导论 专业年级 2015级 姓 名 宁佳星 学 号 2015302580323
协 作 者 实验学期 2017-2018 学年 上 学期
课堂时数 0 课外时数 12 填写时间 2017 年 11 月 12 日
1
实验概述 【实验项目名称】: 模式识别作业1 【实验目的】: 1、请编写程序实现混合类型属性差异性矩阵计算 2、请编写程序实现近邻聚类算法或者最大最小距离聚类算法 3、请编写程序实现层次聚类算法 4、请编写程序实现K-means或者K-中心点聚类算法 5、请编写程序实现ISODATA算法 6、使用统一的测试数据观察不同算法的聚类结果,并讨论为什么 【实验环境】(使用的软件): ? Windiws 7 ? Visual Studio 2017 【参考资料】: ? ? ? 《模式识别作业1》 模式识别PPT 网络索引 实验内容 2
【实验方案设计】: 1、编写程序实现混合类型属性差异性矩阵计算 //矩阵三元组之矩阵相加 相乘 ... #define MAXSIZE 12500 //最大非零元素 ... void InputMatrix(TSMatrix &T) //输入t个非零元素 { ... } ... void TransposeSMatrix(TSMatrix M, TSMatrix &T) //矩阵的转置 { ... } ... void AddMastrix(TSMatrix M, TSMatrix T, TSMatrix &Q) //矩阵相加 { ... } ... //for循环复制剩余元素 ... void Multiply(TSMatrix M, TSMatrix T, TSMatrix &Q) //矩阵相乘 { ... int *rowSize = new int[T.mu + 1]; //存放每行非零元素的个数 int *rowStart = new int[T.mu + 2]; //矩阵每行在三元组开始位置 int *temp = new int[T.nu + 1]; //存放结果矩阵中每行的计算结果 ... while (Current <= M.tu) { ROWM = M.data[Current].row; //当前三元组数据中元素的行号 ... while (Current <= M.tu&&ROWM == M.data[Current].row) { COLM = M.data[Current].col; //当前元素的列号,方便与T矩阵的行号相乘 for (i = rowStart[COLM]; i 3