Skip to content

源代码2017年数学建模国赛B题山东省二等奖

Notifications You must be signed in to change notification settings

LittleSec/2017CUMCMCoding

Repository files navigation

CUMCMCoding 2017

一、运行说明

  1. 环境:
    • macOS Sierra 10.12.5
    • Python 3.6.2
    • IPython 6.2.0
    • Anaconda Navigator 1.6.4, spyder 3.2.3
  2. 使用的第三方库:(请先使用pip install 安装)
    • matplotlib (2.0.2)
    • scikit-learn (0.19.0)
    • graphviz (0.8)
    • pydot (1.2.3)
    • xlrd (1.1.0)
    • xlwt (1.3.0)
  3. 为确保程序读取数据无误,若使用命令行执行代码,请先确保进入当前目录。
  4. graphviz可能需要使用brew安装,或其他办法解决路径问题。

二、py源程序文件说明

  1. 统一说明:
    • 程序内含有计时模块,因此程序运行完后会打印运行时间。
    • 对于运行时间较长的程序已经在代码开头以注释方式写明大约运行时长。该时间受环境影响。
  2. kNN求绝对和相对密度.py
    • 用到原始信息.xlsx的数据,并会把结果在本目录下输出为一个.xls文件,该文件会含有两个sheet。
    • main()函数中的oldOrNew为0则对已完成任务进行处理。oldOrNew为1则对新任务进行处理。因此运行前先自行修改。
  3. 决策树分类.py
    • 用到用于决策树与回归的密度数据.xlsx的数据,并会把结果在本目录下输出一个中间文件和DecideTree.pdf文件,该文件是决策树的可视化。
    • 决策树的默认最大深度(即不剪枝处理)。也可以设置最大深度,在main()函数中有相应注释可以修改。
  4. 多元线性回归.py
    • 用到用于决策树与回归的密度数据.xlsx的数据。
    • 结果输出回归系数,以及10折交叉验证的均方差和均方根差。
  5. 测试最佳价格方案.py
    • 用到用于决策树与回归的密度数据.xlsx的数据。
    • 测试方法分两种,一种是给出文件让程度读入并测试,一种是根据前题结果计算价格并测试。默认使用第二种,使用枚举方法获得最佳系数。
    • 若只用文件数据测试,则文件格式和读入数据文件格式一致即可,并修改main()中相应注释的代码。
  6. 任务打包+价格修改+测试.py
    • 用到第三问编程数据.xlsx第四问编程数据.xlsx的数据。
    • main()函数中的oldOrNew为0则对已完成任务进行处理。oldOrNew为1则对新任务进行处理,并分别导入不用的xlsx数据。因此运行前先自行修改。
    • 对于oldOrNew=1时,若想查看任务不打包时的测试结果,怎在main()函数中注释kNNUpdatePrice(bigTable, k, p/10)即可。此时输出结果也为多个,但不受p值影响,因此是同一个结果。

三、xlsx文件说明

  1. 原始信息.xlsx 是对附件1~3的精简处理,里面共对应三个sheet。
  2. 用于决策树与回归的密度数据.xlsxkNN求绝对和相对密度.py 程序运行后数据整合的结果。
  3. 用于决策树与回归的密度数据.xlsx 用于生成决策树和多元线性回归,由2点文件整合而成。
  4. 第三问编程数据.xlsx第四问编程数据.xlsx 也是由 原始信息.xlsx用于决策树与回归的密度数据.xlsx 整合而成。

四、日志

  1. 比赛结束当晚9.17初次完成,并用MaHua转化成.html,提交版是.html文档。后因考虑到查重所以删除了仓库。
  2. 10.24,省赛结果已出,遗憾省二。重新整理回.md文件并commit。

五、参考资料

排名不分先后

  1. python操作Excel读写--使用xlrd - lhj588 - 博客园
  2. Python--matplotlib绘图可视化知识点整理 - 潘凌昀的兴趣技术杂货铺 - CSDN博客
  3. python中NumPy和Pandas工具包中的函数使用笔记(方便自己查找) - baoyan2015的博客 - CSDN博客
  4. python中的sum函数.sum(axis=1) - yyxayz - 博客园
  5. python实现根据两点经纬度计算实际距离 - TH_NUM的博客 - CSDN博客
  6. Python 字典 列表 嵌套 复杂排序大全 - 木木_Ray的专栏 - CSDN博客
  7. 用Python实现K-近邻算法 - Python - 伯乐在线
  8. Python中numpy模块的tile()方法简单说明 - wy的点滴 - CSDN博客
  9. Python数据分析与挖掘实战--读书笔记 - 简书
  10. "RuntimeError: Make sure the Graphviz executables are on your system's path" after installing Graphviz 2.38 | Stackoverflow Help | Query Starter
  11. Numpy and Scipy Documentation — Numpy and Scipy documentation
  12. 1.10. Decision Trees — scikit-learn 0.19.0 documentation
  13. sklearn.linear_model.LogisticRegression — scikit-learn 0.19.0 documentation
  14. 用scikit-learn和pandas学习线性回归 - 刘建平Pinard - 博客园
  15. Sklearn-train_test_split随机划分训练集和测试集 - Cherzhoucheer的博客 - CSDN博客
  16. 使用graphviz画关系图
  17. 详细记录python的range()函数用法 - xxd - 博客园
  18. Python如何克隆或复制列表(list)? - 共享笔记
  19. python - Can't catch mocked exception because it doesn't inherit BaseException - Stack Overflow
  20. Python补充05 字符串格式化 (%操作符) - Vamei - 博客园
  21. MaHua 在线markdown编辑器
  22. Python--matplotlib绘图可视化知识点整理 - 止战 - 博客园

About

源代码2017年数学建模国赛B题山东省二等奖

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages