├── LinearRegression ├── .ipynb_checkpoints │ ├── P2P网贷实例-checkpoint.ipynb │ ├── ipystata-checkpoint.ipynb │ ├── milk_power-checkpoint.csv │ ├── 多元线性回归-checkpoint.ipynb │ ├── 拟合-checkpoint.ipynb │ ├── 练习-checkpoint.ipynb │ └── 蒙特卡洛模拟内生性-checkpoint.ipynb ├── P2P网贷实例.ipynb ├── code.log ├── cotton.xlsx ├── ipystata.ipynb ├── milk_power.csv ├── raw_data.csv ├── 多元线性回归.ipynb ├── 拟合.ipynb ├── 练习.ipynb ├── 蒙特卡洛模拟内生性.ipynb └── 论文.docx ├── README.md ├── SVD奇异值分解 ├── .ipynb_checkpoints │ ├── code1-checkpoint.ipynb │ ├── heben-checkpoint.jpg │ ├── qyqx-checkpoint.png │ ├── 千与千寻-checkpoint.jpg │ ├── 视频处理-checkpoint.ipynb │ └── 赫本-checkpoint.jpg ├── code1.ipynb ├── heben.jpg ├── qyqx.png ├── 千与千寻.jpg ├── 新闻联播.flv ├── 视频处理.ipynb ├── 赫本.jpg └── 迅捷视频转换器转换后的新闻联播.mp4 ├── TOPSIS ├── .ipynb_checkpoints │ ├── TOPSIS代码-checkpoint.ipynb │ └── 改进-checkpoint.ipynb ├── TOPSIS代码.ipynb ├── river.csv ├── topsis论文.docx └── 改进.ipynb ├── 主成分分析 ├── .ipynb_checkpoints │ ├── code-checkpoint.ipynb │ └── 整合-checkpoint.ipynb ├── code.ipynb ├── cost_data.xlsx ├── 主成分论文.docx ├── 作业数据.xlsx └── 整合.ipynb ├── 分类 ├── .ipynb_checkpoints │ ├── 分类-checkpoint.ipynb │ └── 练习-checkpoint.ipynb ├── flower.xlsx ├── fruit_data.xlsx ├── mul_fruit.xlsx ├── 分类.ipynb ├── 分类论文.docx └── 练习.ipynb ├── 图论 ├── .ipynb_checkpoints │ ├── Untitled-checkpoint.ipynb │ ├── weighted_graph-checkpoint.png │ ├── 图论-checkpoint.ipynb │ └── 练习-checkpoint.ipynb ├── Untitled.ipynb ├── weighted_graph.png ├── 图论.ipynb └── 练习.ipynb ├── 层次分析法 ├── .ipynb_checkpoints │ └── 层次分析法代码-checkpoint.ipynb ├── 层次分析法代码.ipynb └── 层次分析论文.docx ├── 岭回归和LASSO ├── .ipynb_checkpoints │ └── 岭回归和LASSO-checkpoint.ipynb ├── cotton.xlsx └── 岭回归和LASSO.ipynb ├── 插值算法 ├── .ipynb_checkpoints │ ├── code-checkpoint.ipynb │ ├── terrain-checkpoint.csv │ └── 老哥练习-checkpoint.ipynb ├── code.ipynb ├── terrain.csv └── 老哥练习.ipynb ├── 数学规划模型 ├── .ipynb_checkpoints │ ├── 线性规划-checkpoint.ipynb │ ├── 规划代码-checkpoint.ipynb │ └── 非线性规划-checkpoint.ipynb ├── 线性规划.ipynb └── 非线性规划.ipynb ├── 时间序列分析 ├── .ipynb_checkpoints │ ├── women_dress-checkpoint.csv │ ├── 时间序列分析-checkpoint.ipynb │ └── 练习-checkpoint.ipynb ├── sale_data.xlsx ├── stock.csv ├── stock.sav ├── women_dress.csv ├── 时间序列分析.ipynb ├── 练习.ipynb └── 论文.docx ├── 灰色关联分析 ├── .ipynb_checkpoints │ └── 灰色关联分析代码-checkpoint.ipynb ├── gdp.csv ├── river.csv └── 灰色关联分析代码.ipynb ├── 灰色预测 ├── .ipynb_checkpoints │ ├── code-checkpoint.ipynb │ └── 代码改进-checkpoint.ipynb ├── code.ipynb ├── cotton.xlsx ├── data.xlsx └── 代码改进.ipynb ├── 相关性分析 ├── .ipynb_checkpoints │ ├── 相关性分析-checkpoint.ipynb │ └── 练习-checkpoint.ipynb ├── eighth_girl.xlsx ├── eigth_boy.xls ├── p_val_pearson.csv ├── p_val_spearman.csv ├── 相关性分析.ipynb ├── 相关性分析论文.docx └── 练习.ipynb ├── 聚类 ├── .ipynb_checkpoints │ ├── forest-checkpoint.csv │ ├── tmp-checkpoint.png │ ├── 练习-checkpoint.ipynb │ └── 聚类-checkpoint.ipynb ├── cost_data.xlsx ├── data.txt ├── forest.csv ├── mydata.mat ├── tmp ├── tmp.png ├── 练习.ipynb ├── 聚类.ipynb └── 聚类论文.docx └── 蒙特卡洛 ├── .ipynb_checkpoints ├── 导弹追踪-checkpoint.ipynb ├── 引例--投针、三门-checkpoint.ipynb ├── 排队服务-checkpoint.ipynb ├── 旅行商问题-checkpoint.ipynb └── 有约束规划-checkpoint.ipynb ├── 导弹追踪.ipynb ├── 引例--投针、三门.ipynb ├── 排队服务.ipynb ├── 旅行商问题.ipynb └── 有约束规划.ipynb /LinearRegression/.ipynb_checkpoints/练习-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 4 6 | } 7 | -------------------------------------------------------------------------------- /LinearRegression/.ipynb_checkpoints/蒙特卡洛模拟内生性-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "from scipy.optimize import leastsq\n", 11 | "from scipy.stats import norm\n", 12 | "from scipy import stats\n", 13 | "import matplotlib.pyplot as plt" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 2, 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "def err(p, x, y):\n", 23 | " return p[0] * x + p[1] - y" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 3, 29 | "metadata": {}, 30 | "outputs": [], 31 | "source": [ 32 | "times = 300\n", 33 | "r_mat = np.zeros(300)\n", 34 | "k_mat = np.zeros(300)" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 4, 40 | "metadata": {}, 41 | "outputs": [], 42 | "source": [ 43 | "for i in range(times):\n", 44 | " n = 30\n", 45 | " x1 = np.random.random(30)*20 - 10\n", 46 | " u1 = norm.rvs(loc=0, scale=5, size=30) - np.random.random(30)\n", 47 | " x2 = 0.3 * x1 + u1\n", 48 | " u = norm.rvs(0, 1, n)\n", 49 | " y = 0.5 + 2 * x1 + 5 * x2 + u\n", 50 | " p0 = [1, 1] #设置参数初始值,可以随意设置\n", 51 | " ret = leastsq(err, p0, args=(x1,y))\n", 52 | " k = ret[0][0]\n", 53 | " k_mat[i] = k\n", 54 | " u += x2\n", 55 | " r = stats.pearsonr(x1, u)\n", 56 | " r_mat[i] = r[0]" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": 5, 62 | "metadata": {}, 63 | "outputs": [ 64 | { 65 | "data": { 66 | "text/plain": [ 67 | "" 68 | ] 69 | }, 70 | "execution_count": 5, 71 | "metadata": {}, 72 | "output_type": "execute_result" 73 | }, 74 | { 75 | "data": { 76 | "image/png": "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\n", 77 | "text/plain": [ 78 | "
" 79 | ] 80 | }, 81 | "metadata": { 82 | "needs_background": "light" 83 | }, 84 | "output_type": "display_data" 85 | } 86 | ], 87 | "source": [ 88 | "plt.scatter(r_mat, k_mat)" 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "execution_count": 8, 94 | "metadata": {}, 95 | "outputs": [ 96 | { 97 | "name": "stdout", 98 | "output_type": "stream", 99 | "text": [ 100 | "Help on built-in function random_sample:\n", 101 | "\n", 102 | "random_sample(...) method of mtrand.RandomState instance\n", 103 | " random_sample(size=None)\n", 104 | " \n", 105 | " Return random floats in the half-open interval [0.0, 1.0).\n", 106 | " \n", 107 | " Results are from the \"continuous uniform\" distribution over the\n", 108 | " stated interval. To sample :math:`Unif[a, b), b > a` multiply\n", 109 | " the output of `random_sample` by `(b-a)` and add `a`::\n", 110 | " \n", 111 | " (b - a) * random_sample() + a\n", 112 | " \n", 113 | " Parameters\n", 114 | " ----------\n", 115 | " size : int or tuple of ints, optional\n", 116 | " Output shape. If the given shape is, e.g., ``(m, n, k)``, then\n", 117 | " ``m * n * k`` samples are drawn. Default is None, in which case a\n", 118 | " single value is returned.\n", 119 | " \n", 120 | " Returns\n", 121 | " -------\n", 122 | " out : float or ndarray of floats\n", 123 | " Array of random floats of shape `size` (unless ``size=None``, in which\n", 124 | " case a single float is returned).\n", 125 | " \n", 126 | " Examples\n", 127 | " --------\n", 128 | " >>> np.random.random_sample()\n", 129 | " 0.47108547995356098\n", 130 | " >>> type(np.random.random_sample())\n", 131 | " \n", 132 | " >>> np.random.random_sample((5,))\n", 133 | " array([ 0.30220482, 0.86820401, 0.1654503 , 0.11659149, 0.54323428])\n", 134 | " \n", 135 | " Three-by-two array of random numbers from [-5, 0):\n", 136 | " \n", 137 | " >>> 5 * np.random.random_sample((3, 2)) - 5\n", 138 | " array([[-3.99149989, -0.52338984],\n", 139 | " [-2.99091858, -0.79479508],\n", 140 | " [-1.23204345, -1.75224494]])\n", 141 | "\n" 142 | ] 143 | } 144 | ], 145 | "source": [ 146 | "help(np.random.random)" 147 | ] 148 | } 149 | ], 150 | "metadata": { 151 | "kernelspec": { 152 | "display_name": "Python 3", 153 | "language": "python", 154 | "name": "python3" 155 | }, 156 | "language_info": { 157 | "codemirror_mode": { 158 | "name": "ipython", 159 | "version": 3 160 | }, 161 | "file_extension": ".py", 162 | "mimetype": "text/x-python", 163 | "name": "python", 164 | "nbconvert_exporter": "python", 165 | "pygments_lexer": "ipython3", 166 | "version": "3.7.6" 167 | } 168 | }, 169 | "nbformat": 4, 170 | "nbformat_minor": 4 171 | } 172 | -------------------------------------------------------------------------------- /LinearRegression/code.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/LinearRegression/code.log -------------------------------------------------------------------------------- /LinearRegression/cotton.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/LinearRegression/cotton.xlsx -------------------------------------------------------------------------------- /LinearRegression/蒙特卡洛模拟内生性.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "from scipy.optimize import leastsq\n", 11 | "from scipy.stats import norm\n", 12 | "from scipy import stats\n", 13 | "import matplotlib.pyplot as plt" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 2, 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "def err(p, x, y):\n", 23 | " return p[0] * x + p[1] - y" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 3, 29 | "metadata": {}, 30 | "outputs": [], 31 | "source": [ 32 | "times = 300\n", 33 | "r_mat = np.zeros(300)\n", 34 | "k_mat = np.zeros(300)" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 4, 40 | "metadata": {}, 41 | "outputs": [], 42 | "source": [ 43 | "for i in range(times):\n", 44 | " n = 30\n", 45 | " x1 = np.random.random(30)*20 - 10\n", 46 | " u1 = norm.rvs(loc=0, scale=5, size=30) - np.random.random(30)\n", 47 | " x2 = 0.3 * x1 + u1\n", 48 | " u = norm.rvs(0, 1, n)\n", 49 | " y = 0.5 + 2 * x1 + 5 * x2 + u\n", 50 | " p0 = [1, 1] #设置参数初始值,可以随意设置\n", 51 | " ret = leastsq(err, p0, args=(x1,y))\n", 52 | " k = ret[0][0]\n", 53 | " k_mat[i] = k\n", 54 | " u += x2\n", 55 | " r = stats.pearsonr(x1, u)\n", 56 | " r_mat[i] = r[0]" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": 5, 62 | "metadata": {}, 63 | "outputs": [ 64 | { 65 | "data": { 66 | "text/plain": [ 67 | "" 68 | ] 69 | }, 70 | "execution_count": 5, 71 | "metadata": {}, 72 | "output_type": "execute_result" 73 | }, 74 | { 75 | "data": { 76 | "image/png": "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\n", 77 | "text/plain": [ 78 | "
" 79 | ] 80 | }, 81 | "metadata": { 82 | "needs_background": "light" 83 | }, 84 | "output_type": "display_data" 85 | } 86 | ], 87 | "source": [ 88 | "plt.scatter(r_mat, k_mat)" 89 | ] 90 | } 91 | ], 92 | "metadata": { 93 | "kernelspec": { 94 | "display_name": "Python 3", 95 | "language": "python", 96 | "name": "python3" 97 | }, 98 | "language_info": { 99 | "codemirror_mode": { 100 | "name": "ipython", 101 | "version": 3 102 | }, 103 | "file_extension": ".py", 104 | "mimetype": "text/x-python", 105 | "name": "python", 106 | "nbconvert_exporter": "python", 107 | "pygments_lexer": "ipython3", 108 | "version": "3.7.6" 109 | } 110 | }, 111 | "nbformat": 4, 112 | "nbformat_minor": 4 113 | } 114 | -------------------------------------------------------------------------------- /LinearRegression/论文.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/LinearRegression/论文.docx -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 常见模型及python实现 2 | -------------------------------------------------------------------------------- /SVD奇异值分解/.ipynb_checkpoints/heben-checkpoint.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/SVD奇异值分解/.ipynb_checkpoints/heben-checkpoint.jpg -------------------------------------------------------------------------------- /SVD奇异值分解/.ipynb_checkpoints/qyqx-checkpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/SVD奇异值分解/.ipynb_checkpoints/qyqx-checkpoint.png -------------------------------------------------------------------------------- /SVD奇异值分解/.ipynb_checkpoints/千与千寻-checkpoint.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/SVD奇异值分解/.ipynb_checkpoints/千与千寻-checkpoint.jpg -------------------------------------------------------------------------------- /SVD奇异值分解/.ipynb_checkpoints/视频处理-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import cv2\n", 10 | "import numpy as np\n", 11 | "import matplotlib.pyplot as plt\n", 12 | "import PyQt5\n", 13 | "%matplotlib qt5" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 2, 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "cap = cv2.VideoCapture('新闻联播.flv')\n", 23 | "\n", 24 | "ret, frame = cap.read()\n", 25 | "\n", 26 | "gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)\n" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 3, 32 | "metadata": {}, 33 | "outputs": [ 34 | { 35 | "data": { 36 | "text/plain": [ 37 | "" 38 | ] 39 | }, 40 | "execution_count": 3, 41 | "metadata": {}, 42 | "output_type": "execute_result" 43 | } 44 | ], 45 | "source": [ 46 | "plt.imshow(frame)" 47 | ] 48 | }, 49 | { 50 | "cell_type": "code", 51 | "execution_count": 5, 52 | "metadata": {}, 53 | "outputs": [ 54 | { 55 | "ename": "KeyboardInterrupt", 56 | "evalue": "", 57 | "output_type": "error", 58 | "traceback": [ 59 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 60 | "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", 61 | "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[0mgray\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcv2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcvtColor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcv2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mCOLOR_BGR2GRAY\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mimshow\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 9\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcv2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwaitKey\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m&\u001b[0m \u001b[1;36m0xFF\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0mord\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'q'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[1;32mbreak\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 62 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\pyplot.py\u001b[0m in \u001b[0;36mimshow\u001b[1;34m(X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, data, **kwargs)\u001b[0m\n\u001b[0;32m 2649\u001b[0m \u001b[0mfilternorm\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfilternorm\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfilterrad\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfilterrad\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mimlim\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mimlim\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2650\u001b[0m resample=resample, url=url, **({\"data\": data} if data is not\n\u001b[1;32m-> 2651\u001b[1;33m None else {}), **kwargs)\n\u001b[0m\u001b[0;32m 2652\u001b[0m \u001b[0msci\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m__ret\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2653\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0m__ret\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 63 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\__init__.py\u001b[0m in \u001b[0;36minner\u001b[1;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1563\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0minner\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1564\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1565\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0mmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msanitize_sequence\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1566\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1567\u001b[0m \u001b[0mbound\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnew_sig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 64 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\cbook\\deprecation.py\u001b[0m in \u001b[0;36mwrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 356\u001b[0m \u001b[1;34mf\"%(removal)s. If any parameter follows {name!r}, they \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 357\u001b[0m f\"should be pass as keyword, not positionally.\")\n\u001b[1;32m--> 358\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 359\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 360\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 65 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\cbook\\deprecation.py\u001b[0m in \u001b[0;36mwrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 356\u001b[0m \u001b[1;34mf\"%(removal)s. If any parameter follows {name!r}, they \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 357\u001b[0m f\"should be pass as keyword, not positionally.\")\n\u001b[1;32m--> 358\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 359\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 360\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 66 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\axes\\_axes.py\u001b[0m in \u001b[0;36mimshow\u001b[1;34m(self, X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, **kwargs)\u001b[0m\n\u001b[0;32m 5621\u001b[0m \u001b[0mim\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mset_clim\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvmin\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvmax\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5622\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 5623\u001b[1;33m \u001b[0mim\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mautoscale_None\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5624\u001b[0m \u001b[0mim\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mset_url\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5625\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", 67 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\cm.py\u001b[0m in \u001b[0;36mautoscale_None\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 352\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_A\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 353\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'You must first set_array for mappable'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 354\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnorm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mautoscale_None\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_A\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 355\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mchanged\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 356\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", 68 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\colors.py\u001b[0m in \u001b[0;36mautoscale_None\u001b[1;34m(self, A)\u001b[0m\n\u001b[0;32m 1054\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvmin\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mA\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1055\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvmax\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mA\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msize\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1056\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvmax\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mA\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmax\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1057\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1058\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mscaled\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 69 | "\u001b[1;32mc:\\users\\lanr\\miniconda3\\lib\\site-packages\\numpy\\ma\\core.py\u001b[0m in \u001b[0;36mmax\u001b[1;34m(self, axis, out, fill_value, keepdims)\u001b[0m\n\u001b[0;32m 5805\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mout\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5806\u001b[0m result = self.filled(fill_value).max(\n\u001b[1;32m-> 5807\u001b[1;33m axis=axis, out=out, **kwargs).view(type(self))\n\u001b[0m\u001b[0;32m 5808\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5809\u001b[0m \u001b[1;31m# Set the mask\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 70 | "\u001b[1;32mc:\\users\\lanr\\miniconda3\\lib\\site-packages\\numpy\\core\\_methods.py\u001b[0m in \u001b[0;36m_amax\u001b[1;34m(a, axis, out, keepdims, initial, where)\u001b[0m\n\u001b[0;32m 28\u001b[0m def _amax(a, axis=None, out=None, keepdims=False,\n\u001b[0;32m 29\u001b[0m initial=_NoValue, where=True):\n\u001b[1;32m---> 30\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mumr_maximum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mout\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkeepdims\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minitial\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mwhere\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 31\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 32\u001b[0m def _amin(a, axis=None, out=None, keepdims=False,\n", 71 | "\u001b[1;31mKeyboardInterrupt\u001b[0m: " 72 | ] 73 | } 74 | ], 75 | "source": [ 76 | "cap = cv2.VideoCapture('新闻联播.flv')\n", 77 | "\n", 78 | "while(cap.isOpened()):\n", 79 | " ret, frame = cap.read()\n", 80 | "\n", 81 | " gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)\n", 82 | "\n", 83 | " plt.imshow(frame)\n", 84 | " if cv2.waitKey(1) & 0xFF == ord('q'):\n", 85 | " break\n", 86 | "\n", 87 | "cap.release()\n", 88 | "cv2.destroyAllWindows()" 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "execution_count": null, 94 | "metadata": {}, 95 | "outputs": [], 96 | "source": [] 97 | } 98 | ], 99 | "metadata": { 100 | "kernelspec": { 101 | "display_name": "Python 3", 102 | "language": "python", 103 | "name": "python3" 104 | }, 105 | "language_info": { 106 | "codemirror_mode": { 107 | "name": "ipython", 108 | "version": 3 109 | }, 110 | "file_extension": ".py", 111 | "mimetype": "text/x-python", 112 | "name": "python", 113 | "nbconvert_exporter": "python", 114 | "pygments_lexer": "ipython3", 115 | "version": "3.7.6" 116 | } 117 | }, 118 | "nbformat": 4, 119 | "nbformat_minor": 4 120 | } 121 | -------------------------------------------------------------------------------- /SVD奇异值分解/.ipynb_checkpoints/赫本-checkpoint.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/SVD奇异值分解/.ipynb_checkpoints/赫本-checkpoint.jpg -------------------------------------------------------------------------------- /SVD奇异值分解/heben.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/SVD奇异值分解/heben.jpg -------------------------------------------------------------------------------- /SVD奇异值分解/qyqx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/SVD奇异值分解/qyqx.png -------------------------------------------------------------------------------- /SVD奇异值分解/千与千寻.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/SVD奇异值分解/千与千寻.jpg -------------------------------------------------------------------------------- /SVD奇异值分解/新闻联播.flv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/SVD奇异值分解/新闻联播.flv -------------------------------------------------------------------------------- /SVD奇异值分解/视频处理.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import cv2\n", 10 | "import numpy as np\n", 11 | "import matplotlib.pyplot as plt\n", 12 | "import PyQt5\n", 13 | "%matplotlib qt5" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 2, 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "cap = cv2.VideoCapture('新闻联播.flv')\n", 23 | "\n", 24 | "ret, frame = cap.read()\n", 25 | "\n", 26 | "gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)\n" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 3, 32 | "metadata": {}, 33 | "outputs": [ 34 | { 35 | "data": { 36 | "text/plain": [ 37 | "" 38 | ] 39 | }, 40 | "execution_count": 3, 41 | "metadata": {}, 42 | "output_type": "execute_result" 43 | } 44 | ], 45 | "source": [ 46 | "plt.imshow(frame)" 47 | ] 48 | }, 49 | { 50 | "cell_type": "code", 51 | "execution_count": 5, 52 | "metadata": {}, 53 | "outputs": [ 54 | { 55 | "ename": "KeyboardInterrupt", 56 | "evalue": "", 57 | "output_type": "error", 58 | "traceback": [ 59 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 60 | "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", 61 | "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[0mgray\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcv2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcvtColor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcv2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mCOLOR_BGR2GRAY\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mimshow\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mframe\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 9\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcv2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwaitKey\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m&\u001b[0m \u001b[1;36m0xFF\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0mord\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'q'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[1;32mbreak\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 62 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\pyplot.py\u001b[0m in \u001b[0;36mimshow\u001b[1;34m(X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, data, **kwargs)\u001b[0m\n\u001b[0;32m 2649\u001b[0m \u001b[0mfilternorm\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfilternorm\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfilterrad\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mfilterrad\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mimlim\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mimlim\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2650\u001b[0m resample=resample, url=url, **({\"data\": data} if data is not\n\u001b[1;32m-> 2651\u001b[1;33m None else {}), **kwargs)\n\u001b[0m\u001b[0;32m 2652\u001b[0m \u001b[0msci\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m__ret\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2653\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0m__ret\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 63 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\__init__.py\u001b[0m in \u001b[0;36minner\u001b[1;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1563\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0minner\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1564\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1565\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0mmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msanitize_sequence\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1566\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1567\u001b[0m \u001b[0mbound\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnew_sig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 64 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\cbook\\deprecation.py\u001b[0m in \u001b[0;36mwrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 356\u001b[0m \u001b[1;34mf\"%(removal)s. If any parameter follows {name!r}, they \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 357\u001b[0m f\"should be pass as keyword, not positionally.\")\n\u001b[1;32m--> 358\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 359\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 360\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 65 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\cbook\\deprecation.py\u001b[0m in \u001b[0;36mwrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 356\u001b[0m \u001b[1;34mf\"%(removal)s. If any parameter follows {name!r}, they \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 357\u001b[0m f\"should be pass as keyword, not positionally.\")\n\u001b[1;32m--> 358\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 359\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 360\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 66 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\axes\\_axes.py\u001b[0m in \u001b[0;36mimshow\u001b[1;34m(self, X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, **kwargs)\u001b[0m\n\u001b[0;32m 5621\u001b[0m \u001b[0mim\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mset_clim\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvmin\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvmax\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5622\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 5623\u001b[1;33m \u001b[0mim\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mautoscale_None\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5624\u001b[0m \u001b[0mim\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mset_url\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0murl\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5625\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", 67 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\cm.py\u001b[0m in \u001b[0;36mautoscale_None\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 352\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_A\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 353\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'You must first set_array for mappable'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 354\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnorm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mautoscale_None\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_A\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 355\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mchanged\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 356\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", 68 | "\u001b[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\colors.py\u001b[0m in \u001b[0;36mautoscale_None\u001b[1;34m(self, A)\u001b[0m\n\u001b[0;32m 1054\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvmin\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mA\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1055\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvmax\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mA\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msize\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1056\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvmax\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mA\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmax\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1057\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1058\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mscaled\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 69 | "\u001b[1;32mc:\\users\\lanr\\miniconda3\\lib\\site-packages\\numpy\\ma\\core.py\u001b[0m in \u001b[0;36mmax\u001b[1;34m(self, axis, out, fill_value, keepdims)\u001b[0m\n\u001b[0;32m 5805\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mout\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5806\u001b[0m result = self.filled(fill_value).max(\n\u001b[1;32m-> 5807\u001b[1;33m axis=axis, out=out, **kwargs).view(type(self))\n\u001b[0m\u001b[0;32m 5808\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5809\u001b[0m \u001b[1;31m# Set the mask\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 70 | "\u001b[1;32mc:\\users\\lanr\\miniconda3\\lib\\site-packages\\numpy\\core\\_methods.py\u001b[0m in \u001b[0;36m_amax\u001b[1;34m(a, axis, out, keepdims, initial, where)\u001b[0m\n\u001b[0;32m 28\u001b[0m def _amax(a, axis=None, out=None, keepdims=False,\n\u001b[0;32m 29\u001b[0m initial=_NoValue, where=True):\n\u001b[1;32m---> 30\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mumr_maximum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mout\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkeepdims\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minitial\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mwhere\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 31\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 32\u001b[0m def _amin(a, axis=None, out=None, keepdims=False,\n", 71 | "\u001b[1;31mKeyboardInterrupt\u001b[0m: " 72 | ] 73 | } 74 | ], 75 | "source": [ 76 | "cap = cv2.VideoCapture('新闻联播.flv')\n", 77 | "\n", 78 | "while(cap.isOpened()):\n", 79 | " ret, frame = cap.read()\n", 80 | "\n", 81 | " gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)\n", 82 | "\n", 83 | " plt.imshow(frame)\n", 84 | " if cv2.waitKey(1) & 0xFF == ord('q'):\n", 85 | " break\n", 86 | "\n", 87 | "cap.release()\n", 88 | "cv2.destroyAllWindows()" 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "execution_count": null, 94 | "metadata": {}, 95 | "outputs": [], 96 | "source": [] 97 | } 98 | ], 99 | "metadata": { 100 | "kernelspec": { 101 | "display_name": "Python 3", 102 | "language": "python", 103 | "name": "python3" 104 | }, 105 | "language_info": { 106 | "codemirror_mode": { 107 | "name": "ipython", 108 | "version": 3 109 | }, 110 | "file_extension": ".py", 111 | "mimetype": "text/x-python", 112 | "name": "python", 113 | "nbconvert_exporter": "python", 114 | "pygments_lexer": "ipython3", 115 | "version": "3.7.6" 116 | } 117 | }, 118 | "nbformat": 4, 119 | "nbformat_minor": 4 120 | } 121 | -------------------------------------------------------------------------------- /SVD奇异值分解/赫本.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/SVD奇异值分解/赫本.jpg -------------------------------------------------------------------------------- /SVD奇异值分解/迅捷视频转换器转换后的新闻联播.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/SVD奇异值分解/迅捷视频转换器转换后的新闻联播.mp4 -------------------------------------------------------------------------------- /TOPSIS/.ipynb_checkpoints/TOPSIS代码-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": { 7 | "scrolled": true 8 | }, 9 | "outputs": [ 10 | { 11 | "name": "stdout", 12 | "output_type": "stream", 13 | "text": [ 14 | "共有 20 个评价对象 4 个评价指标\n", 15 | "指标是否需要正向化处理,需要请输入1,不需要则输入0:1\n", 16 | "请输入需要正向化处理的指标所在的列,例如第1、3、4列需要处理,则输入1,3,42,3,4\n", 17 | "请按照顺序输入这些列的指标类型(1:极小型,2:中间型,3:区间型)格式同上2,1,3\n", 18 | "第 1 列是中间型\n", 19 | "请输入最佳值:7\n", 20 | "第 1 列中间型处理完成\n", 21 | "--------------------------分隔--------------------------\n", 22 | "第 2 列是极小型,正向化中...\n", 23 | "第 2 列极小型处理完成\n", 24 | "--------------------------分隔--------------------------\n", 25 | "第 3 列是区间型\n", 26 | "按顺序输入最佳区间的左右界,并用逗号隔开:10,20\n", 27 | "第 3 列区间型处理完成\n", 28 | "--------------------------分隔--------------------------\n", 29 | "正向化后的矩阵: [[4.69000000e+00 7.17241379e-01 3.00000000e+00 1.00000000e+00]\n", 30 | " [2.03000000e+00 4.06896552e-01 3.50000000e+01 6.94036301e-01]\n", 31 | " [9.11000000e+00 5.24137931e-01 8.00000000e+00 9.05790838e-01]\n", 32 | " [8.61000000e+00 9.65517241e-01 8.00000000e+00 4.44252377e-01]\n", 33 | " [7.13000000e+00 6.55172414e-01 4.00000000e+00 6.91443388e-01]\n", 34 | " [2.39000000e+00 8.41379310e-01 1.60000000e+01 6.00691443e-01]\n", 35 | " [7.69000000e+00 8.55172414e-01 1.60000000e+01 6.55142610e-01]\n", 36 | " [9.30000000e+00 8.68965517e-01 2.70000000e+01 0.00000000e+00]\n", 37 | " [5.45000000e+00 5.72413793e-01 4.90000000e+01 1.00000000e+00]\n", 38 | " [6.19000000e+00 8.13793103e-01 3.70000000e+01 7.84788245e-01]\n", 39 | " [7.93000000e+00 6.34482759e-01 4.50000000e+01 6.99222126e-01]\n", 40 | " [4.40000000e+00 8.06896552e-01 3.70000000e+01 5.41918755e-01]\n", 41 | " [7.46000000e+00 1.44827586e-01 3.10000000e+01 1.00000000e+00]\n", 42 | " [2.01000000e+00 0.00000000e+00 7.00000000e+00 4.54624028e-01]\n", 43 | " [2.04000000e+00 5.86206897e-01 3.10000000e+01 1.00000000e+00]\n", 44 | " [7.73000000e+00 4.06896552e-01 2.00000000e+00 1.00000000e+00]\n", 45 | " [6.35000000e+00 6.00000000e-01 2.90000000e+01 1.82368194e-01]\n", 46 | " [8.29000000e+00 2.75862069e-02 1.50000000e+01 1.00000000e+00]\n", 47 | " [3.54000000e+00 8.13793103e-01 0.00000000e+00 4.08815903e-01]\n", 48 | " [7.44000000e+00 4.89655172e-01 4.60000000e+01 2.73120138e-01]]\n", 49 | "标准化后的矩阵为: [[0.16218592 0.24825528 0.02454403 0.30645756]\n", 50 | " [0.07019987 0.14083713 0.28634707 0.21269267]\n", 51 | " [0.3150349 0.18141732 0.06545076 0.27758645]\n", 52 | " [0.29774429 0.3341898 0.06545076 0.1361445 ]\n", 53 | " [0.24656409 0.22677165 0.03272538 0.21189806]\n", 54 | " [0.08264911 0.29122254 0.13090152 0.18408644]\n", 55 | " [0.26592957 0.29599668 0.13090152 0.20077341]\n", 56 | " [0.32160534 0.30077082 0.22089631 0. ]\n", 57 | " [0.18846764 0.19812681 0.4008859 0.30645756]\n", 58 | " [0.21405774 0.28167426 0.30270976 0.24050429]\n", 59 | " [0.27422907 0.21961044 0.36816052 0.21428191]\n", 60 | " [0.15215736 0.27928719 0.30270976 0.1660751 ]\n", 61 | " [0.25797589 0.05012847 0.25362169 0.30645756]\n", 62 | " [0.06950825 0. 0.05726941 0.13932297]\n", 63 | " [0.07054569 0.20290095 0.25362169 0.30645756]\n", 64 | " [0.26731282 0.14083713 0.01636269 0.30645756]\n", 65 | " [0.21959074 0.20767509 0.237259 0.05588811]\n", 66 | " [0.2866783 0.00954828 0.12272017 0.30645756]\n", 67 | " [0.12241751 0.28167426 0. 0.12528473]\n", 68 | " [0.25728427 0.16948197 0.37634187 0.08369973]]\n" 69 | ] 70 | } 71 | ], 72 | "source": [ 73 | "import numpy as np # 导入numpy包并将其命名为np\n", 74 | "\n", 75 | "##定义正向化的函数\n", 76 | "def positivization(x,type,i):\n", 77 | "# x:需要正向化处理的指标对应的原始向量\n", 78 | "# typ:指标类型(1:极小型,2:中间型,3:区间型)\n", 79 | "# i:正在处理的是原始矩阵的哪一列\n", 80 | " if type == 1: #极小型\n", 81 | " print(\"第\",i,\"列是极小型,正向化中...\")\n", 82 | " posit_x = x.max(0)-x\n", 83 | " print(\"第\",i,\"列极小型处理完成\")\n", 84 | " print(\"--------------------------分隔--------------------------\")\n", 85 | " return posit_x\n", 86 | " elif type == 2: #中间型\n", 87 | " print(\"第\",i,\"列是中间型\")\n", 88 | " best = int(input(\"请输入最佳值:\"))\n", 89 | " m = (abs(x-best)).max()\n", 90 | " posit_x = 1-abs(x-best)/m\n", 91 | " print(\"第\",i,\"列中间型处理完成\")\n", 92 | " print(\"--------------------------分隔--------------------------\")\n", 93 | " return posit_x\n", 94 | " elif type == 3: #区间型\n", 95 | " print(\"第\",i,\"列是区间型\")\n", 96 | " a,b = [int(l) for l in input(\"按顺序输入最佳区间的左右界,并用逗号隔开:\").split(\",\")]\n", 97 | " m = (np.append(a-x.min(),x.max()-b)).max()\n", 98 | " x_row = x.shape[0] #获取x的行数\n", 99 | " posit_x = np.zeros((x_row,1),dtype=float)\n", 100 | " for r in range(x_row):\n", 101 | " if x[r] < a:\n", 102 | " posit_x[r] = 1-(a-x[r])/m\n", 103 | " elif x[r] > b:\n", 104 | " posit_x[r] = 1-(x[r]-b)/m\n", 105 | " else:\n", 106 | " posit_x[r] = 1\n", 107 | " print(\"第\",i,\"列区间型处理完成\")\n", 108 | " print(\"--------------------------分隔--------------------------\")\n", 109 | " return posit_x.reshape(x_row)\n", 110 | "\n", 111 | "\n", 112 | "## 第一步:从外部导入数据\n", 113 | "#注:保证表格不包含除数字以外的内容\n", 114 | "x_mat = np.loadtxt('river.csv', encoding='UTF-8-sig', delimiter=',') # 推荐使用csv格式文件\n", 115 | "\n", 116 | "## 第二步:判断是否需要正向化\n", 117 | "n, m = x_mat.shape\n", 118 | "print(\"共有\", n, \"个评价对象\", m, \"个评价指标\")\n", 119 | "judge = int(input(\"指标是否需要正向化处理,需要请输入1,不需要则输入0:\"))\n", 120 | "if judge == 1:\n", 121 | " position = np.array([int(i) for i in input(\"请输入需要正向化处理的指标所在的列,例如第1、3、4列需要处理,则输入1,3,4\").split(',')])\n", 122 | " position = position-1\n", 123 | " typ = np.array([int(j) for j in input(\"请按照顺序输入这些列的指标类型(1:极小型,2:中间型,3:区间型)格式同上\").split(',')])\n", 124 | " for k in range(position.shape[0]):\n", 125 | " x_mat[:, position[k]] = positivization(x_mat[:, position[k]], typ[k], position[k])\n", 126 | " print(\"正向化后的矩阵:\", x_mat)\n", 127 | "\n", 128 | "## 第三步:对正向化后的矩阵进行标准化\n", 129 | "tep_x1 = (x_mat * x_mat).sum(axis=0) # 每个元素平方后按列相加\n", 130 | "tep_x2 = np.tile(tep_x1, (n, 1)) # 将矩阵tep_x1平铺n行\n", 131 | "Z = x_mat / ((tep_x2) ** 0.5) # Z为标准化矩阵\n", 132 | "print(\"标准化后的矩阵为:\", Z)\n", 133 | "\n", 134 | "## 第四步:计算与最大值和最小值的距离,并算出得分\n", 135 | "tep_max = Z.max(0) # 得到Z中每列的最大值\n", 136 | "tep_min = Z.min(0) # 每列的最小值\n", 137 | "tep_a = Z - np.tile(tep_max, (n, 1)) # 将tep_max向下平铺n行,并与Z中的每个对应元素做差\n", 138 | "tep_i = Z - np.tile(tep_min, (n, 1)) # 将tep_max向下平铺n行,并与Z中的每个对应元素做差\n", 139 | "D_P = ((tep_a ** 2).sum(axis=1)) ** 0.5 # D+与最大值的距离向量\n", 140 | "D_N = ((tep_i ** 2).sum(axis=1)) ** 0.5\n", 141 | "S = D_N / (D_P + D_N) # 未归一化的得分\n", 142 | "std_S = S / S.sum(axis=0)\n", 143 | "sorted_S = np.sort(std_S, axis=0)" 144 | ] 145 | }, 146 | { 147 | "cell_type": "code", 148 | "execution_count": 3, 149 | "metadata": {}, 150 | "outputs": [ 151 | { 152 | "name": "stdout", 153 | "output_type": "stream", 154 | "text": [ 155 | "[0.01919585 0.03580976 0.04311311 0.04335862 0.04384359 0.04483784\n", 156 | " 0.04505807 0.04657437 0.04779877 0.0484974 0.04882021 0.05099837\n", 157 | " 0.05265184 0.05330661 0.05394726 0.05646602 0.05909344 0.06807383\n", 158 | " 0.06839331 0.07016173]\n" 159 | ] 160 | } 161 | ], 162 | "source": [ 163 | "print(sorted_S)" 164 | ] 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": null, 169 | "metadata": {}, 170 | "outputs": [], 171 | "source": [] 172 | } 173 | ], 174 | "metadata": { 175 | "kernelspec": { 176 | "display_name": "Python 3", 177 | "language": "python", 178 | "name": "python3" 179 | }, 180 | "language_info": { 181 | "codemirror_mode": { 182 | "name": "ipython", 183 | "version": 3 184 | }, 185 | "file_extension": ".py", 186 | "mimetype": "text/x-python", 187 | "name": "python", 188 | "nbconvert_exporter": "python", 189 | "pygments_lexer": "ipython3", 190 | "version": "3.7.6" 191 | }, 192 | "varInspector": { 193 | "cols": { 194 | "lenName": 16, 195 | "lenType": 16, 196 | "lenVar": 40 197 | }, 198 | "kernels_config": { 199 | "python": { 200 | "delete_cmd_postfix": "", 201 | "delete_cmd_prefix": "del ", 202 | "library": "var_list.py", 203 | "varRefreshCmd": "print(var_dic_list())" 204 | }, 205 | "r": { 206 | "delete_cmd_postfix": ") ", 207 | "delete_cmd_prefix": "rm(", 208 | "library": "var_list.r", 209 | "varRefreshCmd": "cat(var_dic_list()) " 210 | } 211 | }, 212 | "types_to_exclude": [ 213 | "module", 214 | "function", 215 | "builtin_function_or_method", 216 | "instance", 217 | "_Feature" 218 | ], 219 | "window_display": false 220 | } 221 | }, 222 | "nbformat": 4, 223 | "nbformat_minor": 4 224 | } 225 | -------------------------------------------------------------------------------- /TOPSIS/.ipynb_checkpoints/改进-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "text/html": [ 21 | "
\n", 22 | "\n", 35 | "\n", 36 | " \n", 37 | " \n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | "
0123
04.696.5951.011.94
12.037.8619.06.46
29.116.3146.08.91
38.617.0546.026.43
47.136.5050.023.57
52.396.7738.024.62
67.696.7938.06.01
79.306.8127.031.57
85.457.625.018.46
96.197.2717.07.51
107.937.539.06.52
114.407.2817.025.30
127.468.2423.014.42
132.015.5547.026.31
142.046.4023.017.91
157.736.1452.015.72
166.357.5825.029.46
178.298.4139.012.02
183.547.2754.03.16
197.446.268.028.41
\n", 188 | "
" 189 | ], 190 | "text/plain": [ 191 | " 0 1 2 3\n", 192 | "0 4.69 6.59 51.0 11.94\n", 193 | "1 2.03 7.86 19.0 6.46\n", 194 | "2 9.11 6.31 46.0 8.91\n", 195 | "3 8.61 7.05 46.0 26.43\n", 196 | "4 7.13 6.50 50.0 23.57\n", 197 | "5 2.39 6.77 38.0 24.62\n", 198 | "6 7.69 6.79 38.0 6.01\n", 199 | "7 9.30 6.81 27.0 31.57\n", 200 | "8 5.45 7.62 5.0 18.46\n", 201 | "9 6.19 7.27 17.0 7.51\n", 202 | "10 7.93 7.53 9.0 6.52\n", 203 | "11 4.40 7.28 17.0 25.30\n", 204 | "12 7.46 8.24 23.0 14.42\n", 205 | "13 2.01 5.55 47.0 26.31\n", 206 | "14 2.04 6.40 23.0 17.91\n", 207 | "15 7.73 6.14 52.0 15.72\n", 208 | "16 6.35 7.58 25.0 29.46\n", 209 | "17 8.29 8.41 39.0 12.02\n", 210 | "18 3.54 7.27 54.0 3.16\n", 211 | "19 7.44 6.26 8.0 28.41" 212 | ] 213 | }, 214 | "execution_count": 2, 215 | "metadata": {}, 216 | "output_type": "execute_result" 217 | } 218 | ], 219 | "source": [ 220 | "data = pd.read_csv(\"river.csv\", header=None)\n", 221 | "data" 222 | ] 223 | }, 224 | { 225 | "cell_type": "code", 226 | "execution_count": 3, 227 | "metadata": {}, 228 | "outputs": [], 229 | "source": [ 230 | "class Topsis:\n", 231 | " def __init__(self,X,**typ):\n", 232 | " # 所有待转换的类型\n", 233 | " x_mat = X.copy()\n", 234 | " ctype = ['cmin','cmedian','crange']\n", 235 | " if typ:\n", 236 | " # 提取待转换类型及对应的列为一个新字典\n", 237 | " type_dic = dict([(t,typ[t]) for t in ctype if t in typ.keys()])\n", 238 | " position = sum(type_dic.values(),[])\n", 239 | "\n", 240 | " for col_wait_for_convert in position:\n", 241 | " convert_type = [k for k, v in typ.items() if col_wait_for_convert in v][0]\n", 242 | " current_index = typ[convert_type].index(col_wait_for_convert)\n", 243 | " if convert_type == 'cmedian':\n", 244 | " x_mat.iloc[:,col_wait_for_convert] = self.positivization(x_mat[col_wait_for_convert], convert_type,typ['best_median'][current_index])\n", 245 | " \n", 246 | " elif convert_type == 'crange':\n", 247 | " x_mat.iloc[:,col_wait_for_convert] = self.positivization(x_mat[col_wait_for_convert], convert_type,typ['best_range'][current_index])\n", 248 | " \n", 249 | " else:\n", 250 | " x_mat.iloc[:,col_wait_for_convert] = self.positivization(x_mat[col_wait_for_convert],convert_type)\n", 251 | " else:\n", 252 | " print('无需正向化')\n", 253 | " \n", 254 | " self.x_mat = x_mat\n", 255 | " \n", 256 | " def positivization(self, col ,t, best=None):\n", 257 | " if t == 'cmin':\n", 258 | " posit = col.max() - col\n", 259 | " return posit\n", 260 | " elif t == 'cmedian':\n", 261 | " m = max(abs(col - best))\n", 262 | " posit = 1 - abs(col - best) / m\n", 263 | " return posit\n", 264 | " else:\n", 265 | " posit = col\n", 266 | " t == 'crange'\n", 267 | " a,b = best\n", 268 | " m = max(np.append(a-min(col),max(col)-b))\n", 269 | " x_row = col.shape[0]\n", 270 | " for i in range(x_row):\n", 271 | " if col[i] < a:\n", 272 | " posit[i] = 1 - (a-col[i]) / m\n", 273 | " elif col[i] > b:\n", 274 | " posit[i] = 1 - (col[i]-b) / m\n", 275 | " else:\n", 276 | " posit[i] = 1\n", 277 | " return posit\n", 278 | " \n", 279 | " # 计算距离及得分\n", 280 | " def score(self,weight=1):\n", 281 | " Z = self.standardize()\n", 282 | " col_max = Z.max()\n", 283 | " col_min = Z.min()\n", 284 | " D_max_sum = np.sqrt(np.sum(weight*(col_max-Z)**2,axis=1))\n", 285 | " D_min_sum = np.sqrt(np.sum(weight*(col_min-Z)**2,axis=1))\n", 286 | " S = D_min_sum/(D_max_sum+D_min_sum)\n", 287 | " stand_S = S/sum(S)\n", 288 | " self.stand_S = stand_S\n", 289 | " \n", 290 | " # 标准化函数\n", 291 | " def standardize(self):\n", 292 | " # 每列元素平方和\n", 293 | " square_sum = np.square(self.x_mat).sum(axis=0)\n", 294 | " self.standard_mat = self.x_mat / np.sqrt(square_sum)\n", 295 | " \n", 296 | " return self.standard_mat\n", 297 | " \n" 298 | ] 299 | }, 300 | { 301 | "cell_type": "code", 302 | "execution_count": 4, 303 | "metadata": {}, 304 | "outputs": [], 305 | "source": [ 306 | "tp = Topsis(X=data,cmin=[2],cmedian=[1],best_median=[7],crange=[3],best_range=[[10,20]])" 307 | ] 308 | }, 309 | { 310 | "cell_type": "code", 311 | "execution_count": 5, 312 | "metadata": {}, 313 | "outputs": [], 314 | "source": [ 315 | "tp.score()" 316 | ] 317 | }, 318 | { 319 | "cell_type": "code", 320 | "execution_count": 6, 321 | "metadata": {}, 322 | "outputs": [ 323 | { 324 | "data": { 325 | "text/plain": [ 326 | "10 0.070162\n", 327 | "9 0.068393\n", 328 | "8 0.068074\n", 329 | "11 0.059093\n", 330 | "19 0.056466\n", 331 | "6 0.053947\n", 332 | "14 0.053307\n", 333 | "12 0.052652\n", 334 | "7 0.050998\n", 335 | "3 0.048820\n", 336 | "2 0.048497\n", 337 | "1 0.047799\n", 338 | "16 0.046574\n", 339 | "0 0.045058\n", 340 | "5 0.044838\n", 341 | "17 0.043844\n", 342 | "15 0.043359\n", 343 | "4 0.043113\n", 344 | "18 0.035810\n", 345 | "13 0.019196\n", 346 | "dtype: float64" 347 | ] 348 | }, 349 | "execution_count": 6, 350 | "metadata": {}, 351 | "output_type": "execute_result" 352 | } 353 | ], 354 | "source": [ 355 | "tp.stand_S.sort_values(ascending=False)" 356 | ] 357 | }, 358 | { 359 | "cell_type": "markdown", 360 | "metadata": {}, 361 | "source": [ 362 | "### 熵权法赋权" 363 | ] 364 | }, 365 | { 366 | "cell_type": "code", 367 | "execution_count": 73, 368 | "metadata": {}, 369 | "outputs": [], 370 | "source": [ 371 | "def judge(x):\n", 372 | " if x == 0:\n", 373 | " return 0.000001\n", 374 | " else:\n", 375 | " return x" 376 | ] 377 | }, 378 | { 379 | "cell_type": "code", 380 | "execution_count": 80, 381 | "metadata": {}, 382 | "outputs": [ 383 | { 384 | "name": "stdout", 385 | "output_type": "stream", 386 | "text": [ 387 | "0 0.141061\n", 388 | "1 0.226674\n", 389 | "2 0.440935\n", 390 | "3 0.191330\n", 391 | "dtype: float64\n" 392 | ] 393 | } 394 | ], 395 | "source": [ 396 | "x_mat = tp.x_mat\n", 397 | "if (x_mat < 0).astype(np.int).sum().sum() > 0:\n", 398 | " x_mat = (x_mat - x_mat.min()) / (x_mat.max() - x_mat.min())\n", 399 | "for i in range(x_mat.shape[1]):\n", 400 | " x_mat.iloc[:,i] = x_mat.iloc[:,i].apply(judge)\n", 401 | "x_p = x_mat / x_mat.sum()\n", 402 | "info_tropy = -(1/np.log(x_mat.shape[0])) * np.sum(x_p * np.log(x_p))\n", 403 | "w = 1 - info_tropy\n", 404 | "w = w / sum(w)\n", 405 | "print(w)" 406 | ] 407 | }, 408 | { 409 | "cell_type": "code", 410 | "execution_count": null, 411 | "metadata": {}, 412 | "outputs": [], 413 | "source": [] 414 | } 415 | ], 416 | "metadata": { 417 | "kernelspec": { 418 | "display_name": "Python 3", 419 | "language": "python", 420 | "name": "python3" 421 | }, 422 | "language_info": { 423 | "codemirror_mode": { 424 | "name": "ipython", 425 | "version": 3 426 | }, 427 | "file_extension": ".py", 428 | "mimetype": "text/x-python", 429 | "name": "python", 430 | "nbconvert_exporter": "python", 431 | "pygments_lexer": "ipython3", 432 | "version": "3.7.6" 433 | } 434 | }, 435 | "nbformat": 4, 436 | "nbformat_minor": 4 437 | } 438 | -------------------------------------------------------------------------------- /TOPSIS/TOPSIS代码.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": { 7 | "scrolled": true 8 | }, 9 | "outputs": [ 10 | { 11 | "name": "stdout", 12 | "output_type": "stream", 13 | "text": [ 14 | "共有 20 个评价对象 4 个评价指标\n", 15 | "指标是否需要正向化处理,需要请输入1,不需要则输入0:1\n", 16 | "请输入需要正向化处理的指标所在的列,例如第1、3、4列需要处理,则输入1,3,42,3,4\n", 17 | "请按照顺序输入这些列的指标类型(1:极小型,2:中间型,3:区间型)格式同上2,1,3\n", 18 | "第 1 列是中间型\n", 19 | "请输入最佳值:7\n", 20 | "第 1 列中间型处理完成\n", 21 | "--------------------------分隔--------------------------\n", 22 | "第 2 列是极小型,正向化中...\n", 23 | "第 2 列极小型处理完成\n", 24 | "--------------------------分隔--------------------------\n", 25 | "第 3 列是区间型\n", 26 | "按顺序输入最佳区间的左右界,并用逗号隔开:10,20\n", 27 | "第 3 列区间型处理完成\n", 28 | "--------------------------分隔--------------------------\n", 29 | "正向化后的矩阵: [[4.69000000e+00 7.17241379e-01 3.00000000e+00 1.00000000e+00]\n", 30 | " [2.03000000e+00 4.06896552e-01 3.50000000e+01 6.94036301e-01]\n", 31 | " [9.11000000e+00 5.24137931e-01 8.00000000e+00 9.05790838e-01]\n", 32 | " [8.61000000e+00 9.65517241e-01 8.00000000e+00 4.44252377e-01]\n", 33 | " [7.13000000e+00 6.55172414e-01 4.00000000e+00 6.91443388e-01]\n", 34 | " [2.39000000e+00 8.41379310e-01 1.60000000e+01 6.00691443e-01]\n", 35 | " [7.69000000e+00 8.55172414e-01 1.60000000e+01 6.55142610e-01]\n", 36 | " [9.30000000e+00 8.68965517e-01 2.70000000e+01 0.00000000e+00]\n", 37 | " [5.45000000e+00 5.72413793e-01 4.90000000e+01 1.00000000e+00]\n", 38 | " [6.19000000e+00 8.13793103e-01 3.70000000e+01 7.84788245e-01]\n", 39 | " [7.93000000e+00 6.34482759e-01 4.50000000e+01 6.99222126e-01]\n", 40 | " [4.40000000e+00 8.06896552e-01 3.70000000e+01 5.41918755e-01]\n", 41 | " [7.46000000e+00 1.44827586e-01 3.10000000e+01 1.00000000e+00]\n", 42 | " [2.01000000e+00 0.00000000e+00 7.00000000e+00 4.54624028e-01]\n", 43 | " [2.04000000e+00 5.86206897e-01 3.10000000e+01 1.00000000e+00]\n", 44 | " [7.73000000e+00 4.06896552e-01 2.00000000e+00 1.00000000e+00]\n", 45 | " [6.35000000e+00 6.00000000e-01 2.90000000e+01 1.82368194e-01]\n", 46 | " [8.29000000e+00 2.75862069e-02 1.50000000e+01 1.00000000e+00]\n", 47 | " [3.54000000e+00 8.13793103e-01 0.00000000e+00 4.08815903e-01]\n", 48 | " [7.44000000e+00 4.89655172e-01 4.60000000e+01 2.73120138e-01]]\n", 49 | "标准化后的矩阵为: [[0.16218592 0.24825528 0.02454403 0.30645756]\n", 50 | " [0.07019987 0.14083713 0.28634707 0.21269267]\n", 51 | " [0.3150349 0.18141732 0.06545076 0.27758645]\n", 52 | " [0.29774429 0.3341898 0.06545076 0.1361445 ]\n", 53 | " [0.24656409 0.22677165 0.03272538 0.21189806]\n", 54 | " [0.08264911 0.29122254 0.13090152 0.18408644]\n", 55 | " [0.26592957 0.29599668 0.13090152 0.20077341]\n", 56 | " [0.32160534 0.30077082 0.22089631 0. ]\n", 57 | " [0.18846764 0.19812681 0.4008859 0.30645756]\n", 58 | " [0.21405774 0.28167426 0.30270976 0.24050429]\n", 59 | " [0.27422907 0.21961044 0.36816052 0.21428191]\n", 60 | " [0.15215736 0.27928719 0.30270976 0.1660751 ]\n", 61 | " [0.25797589 0.05012847 0.25362169 0.30645756]\n", 62 | " [0.06950825 0. 0.05726941 0.13932297]\n", 63 | " [0.07054569 0.20290095 0.25362169 0.30645756]\n", 64 | " [0.26731282 0.14083713 0.01636269 0.30645756]\n", 65 | " [0.21959074 0.20767509 0.237259 0.05588811]\n", 66 | " [0.2866783 0.00954828 0.12272017 0.30645756]\n", 67 | " [0.12241751 0.28167426 0. 0.12528473]\n", 68 | " [0.25728427 0.16948197 0.37634187 0.08369973]]\n" 69 | ] 70 | } 71 | ], 72 | "source": [ 73 | "import numpy as np # 导入numpy包并将其命名为np\n", 74 | "\n", 75 | "##定义正向化的函数\n", 76 | "def positivization(x,type,i):\n", 77 | "# x:需要正向化处理的指标对应的原始向量\n", 78 | "# typ:指标类型(1:极小型,2:中间型,3:区间型)\n", 79 | "# i:正在处理的是原始矩阵的哪一列\n", 80 | " if type == 1: #极小型\n", 81 | " print(\"第\",i,\"列是极小型,正向化中...\")\n", 82 | " posit_x = x.max(0)-x\n", 83 | " print(\"第\",i,\"列极小型处理完成\")\n", 84 | " print(\"--------------------------分隔--------------------------\")\n", 85 | " return posit_x\n", 86 | " elif type == 2: #中间型\n", 87 | " print(\"第\",i,\"列是中间型\")\n", 88 | " best = int(input(\"请输入最佳值:\"))\n", 89 | " m = (abs(x-best)).max()\n", 90 | " posit_x = 1-abs(x-best)/m\n", 91 | " print(\"第\",i,\"列中间型处理完成\")\n", 92 | " print(\"--------------------------分隔--------------------------\")\n", 93 | " return posit_x\n", 94 | " elif type == 3: #区间型\n", 95 | " print(\"第\",i,\"列是区间型\")\n", 96 | " a,b = [int(l) for l in input(\"按顺序输入最佳区间的左右界,并用逗号隔开:\").split(\",\")]\n", 97 | " m = (np.append(a-x.min(),x.max()-b)).max()\n", 98 | " x_row = x.shape[0] #获取x的行数\n", 99 | " posit_x = np.zeros((x_row,1),dtype=float)\n", 100 | " for r in range(x_row):\n", 101 | " if x[r] < a:\n", 102 | " posit_x[r] = 1-(a-x[r])/m\n", 103 | " elif x[r] > b:\n", 104 | " posit_x[r] = 1-(x[r]-b)/m\n", 105 | " else:\n", 106 | " posit_x[r] = 1\n", 107 | " print(\"第\",i,\"列区间型处理完成\")\n", 108 | " print(\"--------------------------分隔--------------------------\")\n", 109 | " return posit_x.reshape(x_row)\n", 110 | "\n", 111 | "\n", 112 | "## 第一步:从外部导入数据\n", 113 | "#注:保证表格不包含除数字以外的内容\n", 114 | "x_mat = np.loadtxt('river.csv', encoding='UTF-8-sig', delimiter=',') # 推荐使用csv格式文件\n", 115 | "\n", 116 | "## 第二步:判断是否需要正向化\n", 117 | "n, m = x_mat.shape\n", 118 | "print(\"共有\", n, \"个评价对象\", m, \"个评价指标\")\n", 119 | "judge = int(input(\"指标是否需要正向化处理,需要请输入1,不需要则输入0:\"))\n", 120 | "if judge == 1:\n", 121 | " position = np.array([int(i) for i in input(\"请输入需要正向化处理的指标所在的列,例如第1、3、4列需要处理,则输入1,3,4\").split(',')])\n", 122 | " position = position-1\n", 123 | " typ = np.array([int(j) for j in input(\"请按照顺序输入这些列的指标类型(1:极小型,2:中间型,3:区间型)格式同上\").split(',')])\n", 124 | " for k in range(position.shape[0]):\n", 125 | " x_mat[:, position[k]] = positivization(x_mat[:, position[k]], typ[k], position[k])\n", 126 | " print(\"正向化后的矩阵:\", x_mat)\n", 127 | "\n", 128 | "## 第三步:对正向化后的矩阵进行标准化\n", 129 | "tep_x1 = (x_mat * x_mat).sum(axis=0) # 每个元素平方后按列相加\n", 130 | "tep_x2 = np.tile(tep_x1, (n, 1)) # 将矩阵tep_x1平铺n行\n", 131 | "Z = x_mat / ((tep_x2) ** 0.5) # Z为标准化矩阵\n", 132 | "print(\"标准化后的矩阵为:\", Z)\n", 133 | "\n", 134 | "## 第四步:计算与最大值和最小值的距离,并算出得分\n", 135 | "tep_max = Z.max(0) # 得到Z中每列的最大值\n", 136 | "tep_min = Z.min(0) # 每列的最小值\n", 137 | "tep_a = Z - np.tile(tep_max, (n, 1)) # 将tep_max向下平铺n行,并与Z中的每个对应元素做差\n", 138 | "tep_i = Z - np.tile(tep_min, (n, 1)) # 将tep_max向下平铺n行,并与Z中的每个对应元素做差\n", 139 | "D_P = ((tep_a ** 2).sum(axis=1)) ** 0.5 # D+与最大值的距离向量\n", 140 | "D_N = ((tep_i ** 2).sum(axis=1)) ** 0.5\n", 141 | "S = D_N / (D_P + D_N) # 未归一化的得分\n", 142 | "std_S = S / S.sum(axis=0)\n", 143 | "sorted_S = np.sort(std_S, axis=0)" 144 | ] 145 | }, 146 | { 147 | "cell_type": "code", 148 | "execution_count": 3, 149 | "metadata": {}, 150 | "outputs": [ 151 | { 152 | "name": "stdout", 153 | "output_type": "stream", 154 | "text": [ 155 | "[0.01919585 0.03580976 0.04311311 0.04335862 0.04384359 0.04483784\n", 156 | " 0.04505807 0.04657437 0.04779877 0.0484974 0.04882021 0.05099837\n", 157 | " 0.05265184 0.05330661 0.05394726 0.05646602 0.05909344 0.06807383\n", 158 | " 0.06839331 0.07016173]\n" 159 | ] 160 | } 161 | ], 162 | "source": [ 163 | "print(sorted_S)" 164 | ] 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": null, 169 | "metadata": {}, 170 | "outputs": [], 171 | "source": [] 172 | } 173 | ], 174 | "metadata": { 175 | "kernelspec": { 176 | "display_name": "Python 3", 177 | "language": "python", 178 | "name": "python3" 179 | }, 180 | "language_info": { 181 | "codemirror_mode": { 182 | "name": "ipython", 183 | "version": 3 184 | }, 185 | "file_extension": ".py", 186 | "mimetype": "text/x-python", 187 | "name": "python", 188 | "nbconvert_exporter": "python", 189 | "pygments_lexer": "ipython3", 190 | "version": "3.7.6" 191 | }, 192 | "varInspector": { 193 | "cols": { 194 | "lenName": 16, 195 | "lenType": 16, 196 | "lenVar": 40 197 | }, 198 | "kernels_config": { 199 | "python": { 200 | "delete_cmd_postfix": "", 201 | "delete_cmd_prefix": "del ", 202 | "library": "var_list.py", 203 | "varRefreshCmd": "print(var_dic_list())" 204 | }, 205 | "r": { 206 | "delete_cmd_postfix": ") ", 207 | "delete_cmd_prefix": "rm(", 208 | "library": "var_list.r", 209 | "varRefreshCmd": "cat(var_dic_list()) " 210 | } 211 | }, 212 | "types_to_exclude": [ 213 | "module", 214 | "function", 215 | "builtin_function_or_method", 216 | "instance", 217 | "_Feature" 218 | ], 219 | "window_display": false 220 | } 221 | }, 222 | "nbformat": 4, 223 | "nbformat_minor": 4 224 | } 225 | -------------------------------------------------------------------------------- /TOPSIS/river.csv: -------------------------------------------------------------------------------- 1 | 4.69 ,6.59 ,51.00 ,11.94 2 | 2.03 ,7.86 ,19.00 ,6.46 3 | 9.11 ,6.31 ,46.00 ,8.91 4 | 8.61 ,7.05 ,46.00 ,26.43 5 | 7.13 ,6.50 ,50.00 ,23.57 6 | 2.39 ,6.77 ,38.00 ,24.62 7 | 7.69 ,6.79 ,38.00 ,6.01 8 | 9.30 ,6.81 ,27.00 ,31.57 9 | 5.45 ,7.62 ,5.00 ,18.46 10 | 6.19 ,7.27 ,17.00 ,7.51 11 | 7.93 ,7.53 ,9.00 ,6.52 12 | 4.40 ,7.28 ,17.00 ,25.30 13 | 7.46 ,8.24 ,23.00 ,14.42 14 | 2.01 ,5.55 ,47.00 ,26.31 15 | 2.04 ,6.40 ,23.00 ,17.91 16 | 7.73 ,6.14 ,52.00 ,15.72 17 | 6.35 ,7.58 ,25.00 ,29.46 18 | 8.29 ,8.41 ,39.00 ,12.02 19 | 3.54 ,7.27 ,54.00 ,3.16 20 | 7.44 ,6.26 ,8.00 ,28.41 21 | -------------------------------------------------------------------------------- /TOPSIS/topsis论文.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/TOPSIS/topsis论文.docx -------------------------------------------------------------------------------- /TOPSIS/改进.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import numpy as np" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "text/html": [ 21 | "
\n", 22 | "\n", 35 | "\n", 36 | " \n", 37 | " \n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | "
0123
04.696.5951.011.94
12.037.8619.06.46
29.116.3146.08.91
38.617.0546.026.43
47.136.5050.023.57
52.396.7738.024.62
67.696.7938.06.01
79.306.8127.031.57
85.457.625.018.46
96.197.2717.07.51
107.937.539.06.52
114.407.2817.025.30
127.468.2423.014.42
132.015.5547.026.31
142.046.4023.017.91
157.736.1452.015.72
166.357.5825.029.46
178.298.4139.012.02
183.547.2754.03.16
197.446.268.028.41
\n", 188 | "
" 189 | ], 190 | "text/plain": [ 191 | " 0 1 2 3\n", 192 | "0 4.69 6.59 51.0 11.94\n", 193 | "1 2.03 7.86 19.0 6.46\n", 194 | "2 9.11 6.31 46.0 8.91\n", 195 | "3 8.61 7.05 46.0 26.43\n", 196 | "4 7.13 6.50 50.0 23.57\n", 197 | "5 2.39 6.77 38.0 24.62\n", 198 | "6 7.69 6.79 38.0 6.01\n", 199 | "7 9.30 6.81 27.0 31.57\n", 200 | "8 5.45 7.62 5.0 18.46\n", 201 | "9 6.19 7.27 17.0 7.51\n", 202 | "10 7.93 7.53 9.0 6.52\n", 203 | "11 4.40 7.28 17.0 25.30\n", 204 | "12 7.46 8.24 23.0 14.42\n", 205 | "13 2.01 5.55 47.0 26.31\n", 206 | "14 2.04 6.40 23.0 17.91\n", 207 | "15 7.73 6.14 52.0 15.72\n", 208 | "16 6.35 7.58 25.0 29.46\n", 209 | "17 8.29 8.41 39.0 12.02\n", 210 | "18 3.54 7.27 54.0 3.16\n", 211 | "19 7.44 6.26 8.0 28.41" 212 | ] 213 | }, 214 | "execution_count": 2, 215 | "metadata": {}, 216 | "output_type": "execute_result" 217 | } 218 | ], 219 | "source": [ 220 | "data = pd.read_csv(\"river.csv\", header=None)\n", 221 | "data" 222 | ] 223 | }, 224 | { 225 | "cell_type": "code", 226 | "execution_count": 3, 227 | "metadata": {}, 228 | "outputs": [], 229 | "source": [ 230 | "class Topsis:\n", 231 | " def __init__(self,X,**typ):\n", 232 | " # 所有待转换的类型\n", 233 | " x_mat = X.copy()\n", 234 | " ctype = ['cmin','cmedian','crange']\n", 235 | " if typ:\n", 236 | " # 提取待转换类型及对应的列为一个新字典\n", 237 | " type_dic = dict([(t,typ[t]) for t in ctype if t in typ.keys()])\n", 238 | " position = sum(type_dic.values(),[])\n", 239 | "\n", 240 | " for col_wait_for_convert in position:\n", 241 | " convert_type = [k for k, v in typ.items() if col_wait_for_convert in v][0]\n", 242 | " current_index = typ[convert_type].index(col_wait_for_convert)\n", 243 | " if convert_type == 'cmedian':\n", 244 | " x_mat.iloc[:,col_wait_for_convert] = self.positivization(x_mat[col_wait_for_convert], convert_type,typ['best_median'][current_index])\n", 245 | " \n", 246 | " elif convert_type == 'crange':\n", 247 | " x_mat.iloc[:,col_wait_for_convert] = self.positivization(x_mat[col_wait_for_convert], convert_type,typ['best_range'][current_index])\n", 248 | " \n", 249 | " else:\n", 250 | " x_mat.iloc[:,col_wait_for_convert] = self.positivization(x_mat[col_wait_for_convert],convert_type)\n", 251 | " else:\n", 252 | " print('无需正向化')\n", 253 | " \n", 254 | " self.x_mat = x_mat\n", 255 | " \n", 256 | " def positivization(self, col ,t, best=None):\n", 257 | " if t == 'cmin':\n", 258 | " posit = col.max() - col\n", 259 | " return posit\n", 260 | " elif t == 'cmedian':\n", 261 | " m = max(abs(col - best))\n", 262 | " posit = 1 - abs(col - best) / m\n", 263 | " return posit\n", 264 | " else:\n", 265 | " posit = col\n", 266 | " t == 'crange'\n", 267 | " a,b = best\n", 268 | " m = max(np.append(a-min(col),max(col)-b))\n", 269 | " x_row = col.shape[0]\n", 270 | " for i in range(x_row):\n", 271 | " if col[i] < a:\n", 272 | " posit[i] = 1 - (a-col[i]) / m\n", 273 | " elif col[i] > b:\n", 274 | " posit[i] = 1 - (col[i]-b) / m\n", 275 | " else:\n", 276 | " posit[i] = 1\n", 277 | " return posit\n", 278 | " \n", 279 | " # 计算距离及得分\n", 280 | " def score(self,weight=1):\n", 281 | " Z = self.standardize()\n", 282 | " col_max = Z.max()\n", 283 | " col_min = Z.min()\n", 284 | " D_max_sum = np.sqrt(np.sum(weight*(col_max-Z)**2,axis=1))\n", 285 | " D_min_sum = np.sqrt(np.sum(weight*(col_min-Z)**2,axis=1))\n", 286 | " S = D_min_sum/(D_max_sum+D_min_sum)\n", 287 | " stand_S = S/sum(S)\n", 288 | " self.stand_S = stand_S\n", 289 | " \n", 290 | " # 标准化函数\n", 291 | " def standardize(self):\n", 292 | " # 每列元素平方和\n", 293 | " square_sum = np.square(self.x_mat).sum(axis=0)\n", 294 | " self.standard_mat = self.x_mat / np.sqrt(square_sum)\n", 295 | " \n", 296 | " return self.standard_mat\n", 297 | " \n" 298 | ] 299 | }, 300 | { 301 | "cell_type": "code", 302 | "execution_count": 4, 303 | "metadata": {}, 304 | "outputs": [], 305 | "source": [ 306 | "tp = Topsis(X=data,cmin=[2],cmedian=[1],best_median=[7],crange=[3],best_range=[[10,20]])" 307 | ] 308 | }, 309 | { 310 | "cell_type": "code", 311 | "execution_count": 5, 312 | "metadata": {}, 313 | "outputs": [], 314 | "source": [ 315 | "tp.score()" 316 | ] 317 | }, 318 | { 319 | "cell_type": "code", 320 | "execution_count": 6, 321 | "metadata": {}, 322 | "outputs": [ 323 | { 324 | "data": { 325 | "text/plain": [ 326 | "10 0.070162\n", 327 | "9 0.068393\n", 328 | "8 0.068074\n", 329 | "11 0.059093\n", 330 | "19 0.056466\n", 331 | "6 0.053947\n", 332 | "14 0.053307\n", 333 | "12 0.052652\n", 334 | "7 0.050998\n", 335 | "3 0.048820\n", 336 | "2 0.048497\n", 337 | "1 0.047799\n", 338 | "16 0.046574\n", 339 | "0 0.045058\n", 340 | "5 0.044838\n", 341 | "17 0.043844\n", 342 | "15 0.043359\n", 343 | "4 0.043113\n", 344 | "18 0.035810\n", 345 | "13 0.019196\n", 346 | "dtype: float64" 347 | ] 348 | }, 349 | "execution_count": 6, 350 | "metadata": {}, 351 | "output_type": "execute_result" 352 | } 353 | ], 354 | "source": [ 355 | "tp.stand_S.sort_values(ascending=False)" 356 | ] 357 | }, 358 | { 359 | "cell_type": "markdown", 360 | "metadata": {}, 361 | "source": [ 362 | "### 熵权法赋权" 363 | ] 364 | }, 365 | { 366 | "cell_type": "code", 367 | "execution_count": 73, 368 | "metadata": {}, 369 | "outputs": [], 370 | "source": [ 371 | "def judge(x):\n", 372 | " if x == 0:\n", 373 | " return 0.000001\n", 374 | " else:\n", 375 | " return x" 376 | ] 377 | }, 378 | { 379 | "cell_type": "code", 380 | "execution_count": 80, 381 | "metadata": {}, 382 | "outputs": [ 383 | { 384 | "name": "stdout", 385 | "output_type": "stream", 386 | "text": [ 387 | "0 0.141061\n", 388 | "1 0.226674\n", 389 | "2 0.440935\n", 390 | "3 0.191330\n", 391 | "dtype: float64\n" 392 | ] 393 | } 394 | ], 395 | "source": [ 396 | "x_mat = tp.x_mat\n", 397 | "if (x_mat < 0).astype(np.int).sum().sum() > 0:\n", 398 | " x_mat = (x_mat - x_mat.min()) / (x_mat.max() - x_mat.min())\n", 399 | "for i in range(x_mat.shape[1]):\n", 400 | " x_mat.iloc[:,i] = x_mat.iloc[:,i].apply(judge)\n", 401 | "x_p = x_mat / x_mat.sum()\n", 402 | "info_tropy = -(1/np.log(x_mat.shape[0])) * np.sum(x_p * np.log(x_p))\n", 403 | "w = 1 - info_tropy\n", 404 | "w = w / sum(w)\n", 405 | "print(w)" 406 | ] 407 | }, 408 | { 409 | "cell_type": "code", 410 | "execution_count": null, 411 | "metadata": {}, 412 | "outputs": [], 413 | "source": [] 414 | } 415 | ], 416 | "metadata": { 417 | "kernelspec": { 418 | "display_name": "Python 3", 419 | "language": "python", 420 | "name": "python3" 421 | }, 422 | "language_info": { 423 | "codemirror_mode": { 424 | "name": "ipython", 425 | "version": 3 426 | }, 427 | "file_extension": ".py", 428 | "mimetype": "text/x-python", 429 | "name": "python", 430 | "nbconvert_exporter": "python", 431 | "pygments_lexer": "ipython3", 432 | "version": "3.7.6" 433 | } 434 | }, 435 | "nbformat": 4, 436 | "nbformat_minor": 4 437 | } 438 | -------------------------------------------------------------------------------- /主成分分析/cost_data.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/主成分分析/cost_data.xlsx -------------------------------------------------------------------------------- /主成分分析/主成分论文.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/主成分分析/主成分论文.docx -------------------------------------------------------------------------------- /主成分分析/作业数据.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/主成分分析/作业数据.xlsx -------------------------------------------------------------------------------- /分类/.ipynb_checkpoints/练习-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 9, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "from sklearn import datasets\n", 11 | "from sklearn.linear_model import LogisticRegression\n", 12 | "import warnings\n", 13 | "warnings.filterwarnings('ignore')" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 10, 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "X, y = datasets.load_iris(return_X_y=True)" 23 | ] 24 | }, 25 | { 26 | "cell_type": "markdown", 27 | "metadata": {}, 28 | "source": [ 29 | "**********" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 14, 35 | "metadata": {}, 36 | "outputs": [], 37 | "source": [ 38 | "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n", 39 | "from sklearn.model_selection import train_test_split" 40 | ] 41 | }, 42 | { 43 | "cell_type": "code", 44 | "execution_count": 15, 45 | "metadata": {}, 46 | "outputs": [], 47 | "source": [ 48 | "X_train, X_test, y_train, y_test = train_test_split(\n", 49 | " X, y, test_size=0.3, random_state=0)" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 16, 55 | "metadata": {}, 56 | "outputs": [ 57 | { 58 | "data": { 59 | "text/plain": [ 60 | "0.9777777777777777" 61 | ] 62 | }, 63 | "execution_count": 16, 64 | "metadata": {}, 65 | "output_type": "execute_result" 66 | } 67 | ], 68 | "source": [ 69 | "lda = LinearDiscriminantAnalysis()\n", 70 | "\n", 71 | "LDA = lda.fit(X_train,y_train)\n", 72 | "LDA.score(X_test,y_test)" 73 | ] 74 | }, 75 | { 76 | "cell_type": "code", 77 | "execution_count": 19, 78 | "metadata": {}, 79 | "outputs": [ 80 | { 81 | "data": { 82 | "text/plain": [ 83 | "array([2, 1, 0, 2, 0, 2, 0, 1, 1, 1, 2, 1, 1, 1, 1, 0, 1, 1, 0, 0, 2, 1,\n", 84 | " 0, 0, 2, 0, 0, 1, 1, 0, 2, 1, 0, 2, 2, 1, 0, 2, 1, 1, 2, 0, 2, 0,\n", 85 | " 0])" 86 | ] 87 | }, 88 | "execution_count": 19, 89 | "metadata": {}, 90 | "output_type": "execute_result" 91 | } 92 | ], 93 | "source": [ 94 | "LDA.predict(X_test)" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": 21, 100 | "metadata": {}, 101 | "outputs": [ 102 | { 103 | "data": { 104 | "text/plain": [ 105 | "0.9800000000000001" 106 | ] 107 | }, 108 | "execution_count": 21, 109 | "metadata": {}, 110 | "output_type": "execute_result" 111 | } 112 | ], 113 | "source": [ 114 | "lda_ = LinearDiscriminantAnalysis()\n", 115 | "\n", 116 | "scores = cross_val_score(lda_,X,y)\n", 117 | "scores.mean()" 118 | ] 119 | }, 120 | { 121 | "cell_type": "markdown", 122 | "metadata": {}, 123 | "source": [ 124 | "**********" 125 | ] 126 | }, 127 | { 128 | "cell_type": "markdown", 129 | "metadata": {}, 130 | "source": [ 131 | "### 计算交叉验证指标" 132 | ] 133 | }, 134 | { 135 | "cell_type": "code", 136 | "execution_count": 17, 137 | "metadata": {}, 138 | "outputs": [], 139 | "source": [ 140 | "from sklearn.model_selection import cross_val_score" 141 | ] 142 | }, 143 | { 144 | "cell_type": "code", 145 | "execution_count": 18, 146 | "metadata": {}, 147 | "outputs": [ 148 | { 149 | "data": { 150 | "text/plain": [ 151 | "array([0.96666667, 1. , 0.93333333, 0.96666667, 1. ])" 152 | ] 153 | }, 154 | "execution_count": 18, 155 | "metadata": {}, 156 | "output_type": "execute_result" 157 | } 158 | ], 159 | "source": [ 160 | "lr = LogisticRegression()\n", 161 | "# 当 cv 参数为整数时, cross_val_score 默认使用 KFold方式\n", 162 | "scores = cross_val_score(lr, X, y, cv=5) # cv表示fold个数\n", 163 | "scores" 164 | ] 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": 19, 169 | "metadata": {}, 170 | "outputs": [ 171 | { 172 | "name": "stdout", 173 | "output_type": "stream", 174 | "text": [ 175 | "Accuracy: 0.97 (+/- 0.05)\n" 176 | ] 177 | } 178 | ], 179 | "source": [ 180 | "# 得分估计(score estimate)的平均得分和95%置信区间\n", 181 | "print(\"Accuracy: %0.2f (+/- %0.2f)\" % (scores.mean(), scores.std() * 2))" 182 | ] 183 | }, 184 | { 185 | "cell_type": "markdown", 186 | "metadata": {}, 187 | "source": [ 188 | "#### 传入一个交叉验证迭代器(cross validation iterator)来使用其他交叉验证策略" 189 | ] 190 | }, 191 | { 192 | "cell_type": "code", 193 | "execution_count": 20, 194 | "metadata": {}, 195 | "outputs": [], 196 | "source": [ 197 | "from sklearn.model_selection import ShuffleSplit" 198 | ] 199 | }, 200 | { 201 | "cell_type": "code", 202 | "execution_count": 46, 203 | "metadata": {}, 204 | "outputs": [ 205 | { 206 | "data": { 207 | "text/plain": [ 208 | "array([0.97777778, 0.91111111, 0.95555556, 0.93333333, 0.95555556])" 209 | ] 210 | }, 211 | "execution_count": 46, 212 | "metadata": {}, 213 | "output_type": "execute_result" 214 | } 215 | ], 216 | "source": [ 217 | "n_samples = X.shape[0]\n", 218 | "cv = ShuffleSplit(n_splits=5, test_size=0.3, random_state=0)\n", 219 | "cross_val_score(lr, X, y, cv=cv)" 220 | ] 221 | }, 222 | { 223 | "cell_type": "markdown", 224 | "metadata": {}, 225 | "source": [ 226 | "### 测试集的数据转换" 227 | ] 228 | }, 229 | { 230 | "cell_type": "code", 231 | "execution_count": 26, 232 | "metadata": {}, 233 | "outputs": [], 234 | "source": [ 235 | "from sklearn.preprocessing import StandardScaler\n", 236 | "from sklearn.model_selection import train_test_split" 237 | ] 238 | }, 239 | { 240 | "cell_type": "code", 241 | "execution_count": 27, 242 | "metadata": {}, 243 | "outputs": [ 244 | { 245 | "data": { 246 | "text/plain": [ 247 | "0.9333333333333333" 248 | ] 249 | }, 250 | "execution_count": 27, 251 | "metadata": {}, 252 | "output_type": "execute_result" 253 | } 254 | ], 255 | "source": [ 256 | "X_train, X_test, y_train, y_test = train_test_split(\n", 257 | " X, y, test_size=0.4, random_state=0)\n", 258 | "\n", 259 | "scaler = StandardScaler().fit(X_train)\n", 260 | "\n", 261 | "X_train_transformed = scaler.transform(X_train)\n", 262 | "\n", 263 | "lr = LogisticRegression()\n", 264 | "lr.fit(X_train_transformed, y_train)\n", 265 | "\n", 266 | "X_test_transformed = scaler.transform(X_test)\n", 267 | "lr.score(X_test_transformed, y_test)" 268 | ] 269 | }, 270 | { 271 | "cell_type": "markdown", 272 | "metadata": {}, 273 | "source": [ 274 | "### 管道(Pipeline)使组合估计器变得更加容易,在交叉验证下提供此行为:" 275 | ] 276 | }, 277 | { 278 | "cell_type": "code", 279 | "execution_count": 28, 280 | "metadata": {}, 281 | "outputs": [], 282 | "source": [ 283 | "from sklearn.pipeline import make_pipeline" 284 | ] 285 | }, 286 | { 287 | "cell_type": "code", 288 | "execution_count": 47, 289 | "metadata": {}, 290 | "outputs": [ 291 | { 292 | "data": { 293 | "text/plain": [ 294 | "array([0.97777778, 0.91111111, 0.95555556, 0.93333333, 0.95555556])" 295 | ] 296 | }, 297 | "execution_count": 47, 298 | "metadata": {}, 299 | "output_type": "execute_result" 300 | } 301 | ], 302 | "source": [ 303 | "lr = make_pipeline(StandardScaler(), LogisticRegression())\n", 304 | "cross_val_score(lr, X, y, cv=cv)" 305 | ] 306 | }, 307 | { 308 | "cell_type": "markdown", 309 | "metadata": {}, 310 | "source": [ 311 | "## 交叉验证函数与多指标评价" 312 | ] 313 | }, 314 | { 315 | "cell_type": "code", 316 | "execution_count": 48, 317 | "metadata": {}, 318 | "outputs": [], 319 | "source": [ 320 | "from sklearn.model_selection import cross_validate\n", 321 | "from sklearn.metrics import recall_score" 322 | ] 323 | }, 324 | { 325 | "cell_type": "code", 326 | "execution_count": 59, 327 | "metadata": {}, 328 | "outputs": [], 329 | "source": [ 330 | "scoring = ['precision_macro', 'recall_macro']\n", 331 | "lr = LogisticRegression()\n", 332 | "# return_estimator=True来保留在每个训练集上拟合的估计器。\n", 333 | "# return_train_score=True可以返回训练集上评估的分数, 但会额外消耗时间\n", 334 | "scores = cross_validate(lr, X, y, scoring=scoring,\n", 335 | " return_estimator=True,\n", 336 | " return_train_score=True)" 337 | ] 338 | }, 339 | { 340 | "cell_type": "code", 341 | "execution_count": 60, 342 | "metadata": {}, 343 | "outputs": [ 344 | { 345 | "data": { 346 | "text/plain": [ 347 | "{'fit_time': array([0.01994562, 0.0209415 , 0.02095532, 0.01698995, 0.01894307]),\n", 348 | " 'score_time': array([0.00199461, 0.00102544, 0.00099897, 0.00195312, 0.00099754]),\n", 349 | " 'estimator': (LogisticRegression(),\n", 350 | " LogisticRegression(),\n", 351 | " LogisticRegression(),\n", 352 | " LogisticRegression(),\n", 353 | " LogisticRegression()),\n", 354 | " 'test_precision_macro': array([0.96969697, 1. , 0.94444444, 0.96969697, 1. ]),\n", 355 | " 'train_precision_macro': array([0.96741855, 0.96741855, 0.98333333, 0.98412698, 0.97519283]),\n", 356 | " 'test_recall_macro': array([0.96666667, 1. , 0.93333333, 0.96666667, 1. ]),\n", 357 | " 'train_recall_macro': array([0.96666667, 0.96666667, 0.98333333, 0.98333333, 0.975 ])}" 358 | ] 359 | }, 360 | "execution_count": 60, 361 | "metadata": {}, 362 | "output_type": "execute_result" 363 | } 364 | ], 365 | "source": [ 366 | "scores" 367 | ] 368 | }, 369 | { 370 | "cell_type": "markdown", 371 | "metadata": {}, 372 | "source": [ 373 | "## 通过交叉验证获取预测" 374 | ] 375 | }, 376 | { 377 | "cell_type": "code", 378 | "execution_count": 61, 379 | "metadata": {}, 380 | "outputs": [], 381 | "source": [ 382 | "from sklearn.model_selection import cross_val_predict" 383 | ] 384 | }, 385 | { 386 | "cell_type": "code", 387 | "execution_count": null, 388 | "metadata": {}, 389 | "outputs": [], 390 | "source": [] 391 | } 392 | ], 393 | "metadata": { 394 | "kernelspec": { 395 | "display_name": "Python 3", 396 | "language": "python", 397 | "name": "python3" 398 | }, 399 | "language_info": { 400 | "codemirror_mode": { 401 | "name": "ipython", 402 | "version": 3 403 | }, 404 | "file_extension": ".py", 405 | "mimetype": "text/x-python", 406 | "name": "python", 407 | "nbconvert_exporter": "python", 408 | "pygments_lexer": "ipython3", 409 | "version": "3.7.6" 410 | } 411 | }, 412 | "nbformat": 4, 413 | "nbformat_minor": 4 414 | } 415 | -------------------------------------------------------------------------------- /分类/flower.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/分类/flower.xlsx -------------------------------------------------------------------------------- /分类/fruit_data.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/分类/fruit_data.xlsx -------------------------------------------------------------------------------- /分类/mul_fruit.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/分类/mul_fruit.xlsx -------------------------------------------------------------------------------- /分类/分类论文.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/分类/分类论文.docx -------------------------------------------------------------------------------- /分类/练习.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 9, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "from sklearn import datasets\n", 11 | "from sklearn.linear_model import LogisticRegression\n", 12 | "import warnings\n", 13 | "warnings.filterwarnings('ignore')" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 10, 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "X, y = datasets.load_iris(return_X_y=True)" 23 | ] 24 | }, 25 | { 26 | "cell_type": "markdown", 27 | "metadata": {}, 28 | "source": [ 29 | "**********" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 14, 35 | "metadata": {}, 36 | "outputs": [], 37 | "source": [ 38 | "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n", 39 | "from sklearn.model_selection import train_test_split" 40 | ] 41 | }, 42 | { 43 | "cell_type": "code", 44 | "execution_count": 15, 45 | "metadata": {}, 46 | "outputs": [], 47 | "source": [ 48 | "X_train, X_test, y_train, y_test = train_test_split(\n", 49 | " X, y, test_size=0.3, random_state=0)" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 16, 55 | "metadata": {}, 56 | "outputs": [ 57 | { 58 | "data": { 59 | "text/plain": [ 60 | "0.9777777777777777" 61 | ] 62 | }, 63 | "execution_count": 16, 64 | "metadata": {}, 65 | "output_type": "execute_result" 66 | } 67 | ], 68 | "source": [ 69 | "lda = LinearDiscriminantAnalysis()\n", 70 | "\n", 71 | "LDA = lda.fit(X_train,y_train)\n", 72 | "LDA.score(X_test,y_test)" 73 | ] 74 | }, 75 | { 76 | "cell_type": "code", 77 | "execution_count": 19, 78 | "metadata": {}, 79 | "outputs": [ 80 | { 81 | "data": { 82 | "text/plain": [ 83 | "array([2, 1, 0, 2, 0, 2, 0, 1, 1, 1, 2, 1, 1, 1, 1, 0, 1, 1, 0, 0, 2, 1,\n", 84 | " 0, 0, 2, 0, 0, 1, 1, 0, 2, 1, 0, 2, 2, 1, 0, 2, 1, 1, 2, 0, 2, 0,\n", 85 | " 0])" 86 | ] 87 | }, 88 | "execution_count": 19, 89 | "metadata": {}, 90 | "output_type": "execute_result" 91 | } 92 | ], 93 | "source": [ 94 | "LDA.predict(X_test)" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": 21, 100 | "metadata": {}, 101 | "outputs": [ 102 | { 103 | "data": { 104 | "text/plain": [ 105 | "0.9800000000000001" 106 | ] 107 | }, 108 | "execution_count": 21, 109 | "metadata": {}, 110 | "output_type": "execute_result" 111 | } 112 | ], 113 | "source": [ 114 | "lda_ = LinearDiscriminantAnalysis()\n", 115 | "\n", 116 | "scores = cross_val_score(lda_,X,y)\n", 117 | "scores.mean()" 118 | ] 119 | }, 120 | { 121 | "cell_type": "markdown", 122 | "metadata": {}, 123 | "source": [ 124 | "**********" 125 | ] 126 | }, 127 | { 128 | "cell_type": "markdown", 129 | "metadata": {}, 130 | "source": [ 131 | "### 计算交叉验证指标" 132 | ] 133 | }, 134 | { 135 | "cell_type": "code", 136 | "execution_count": 17, 137 | "metadata": {}, 138 | "outputs": [], 139 | "source": [ 140 | "from sklearn.model_selection import cross_val_score" 141 | ] 142 | }, 143 | { 144 | "cell_type": "code", 145 | "execution_count": 18, 146 | "metadata": {}, 147 | "outputs": [ 148 | { 149 | "data": { 150 | "text/plain": [ 151 | "array([0.96666667, 1. , 0.93333333, 0.96666667, 1. ])" 152 | ] 153 | }, 154 | "execution_count": 18, 155 | "metadata": {}, 156 | "output_type": "execute_result" 157 | } 158 | ], 159 | "source": [ 160 | "lr = LogisticRegression()\n", 161 | "# 当 cv 参数为整数时, cross_val_score 默认使用 KFold方式\n", 162 | "scores = cross_val_score(lr, X, y, cv=5) # cv表示fold个数\n", 163 | "scores" 164 | ] 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": 19, 169 | "metadata": {}, 170 | "outputs": [ 171 | { 172 | "name": "stdout", 173 | "output_type": "stream", 174 | "text": [ 175 | "Accuracy: 0.97 (+/- 0.05)\n" 176 | ] 177 | } 178 | ], 179 | "source": [ 180 | "# 得分估计(score estimate)的平均得分和95%置信区间\n", 181 | "print(\"Accuracy: %0.2f (+/- %0.2f)\" % (scores.mean(), scores.std() * 2))" 182 | ] 183 | }, 184 | { 185 | "cell_type": "markdown", 186 | "metadata": {}, 187 | "source": [ 188 | "#### 传入一个交叉验证迭代器(cross validation iterator)来使用其他交叉验证策略" 189 | ] 190 | }, 191 | { 192 | "cell_type": "code", 193 | "execution_count": 20, 194 | "metadata": {}, 195 | "outputs": [], 196 | "source": [ 197 | "from sklearn.model_selection import ShuffleSplit" 198 | ] 199 | }, 200 | { 201 | "cell_type": "code", 202 | "execution_count": 46, 203 | "metadata": {}, 204 | "outputs": [ 205 | { 206 | "data": { 207 | "text/plain": [ 208 | "array([0.97777778, 0.91111111, 0.95555556, 0.93333333, 0.95555556])" 209 | ] 210 | }, 211 | "execution_count": 46, 212 | "metadata": {}, 213 | "output_type": "execute_result" 214 | } 215 | ], 216 | "source": [ 217 | "n_samples = X.shape[0]\n", 218 | "cv = ShuffleSplit(n_splits=5, test_size=0.3, random_state=0)\n", 219 | "cross_val_score(lr, X, y, cv=cv)" 220 | ] 221 | }, 222 | { 223 | "cell_type": "markdown", 224 | "metadata": {}, 225 | "source": [ 226 | "### 测试集的数据转换" 227 | ] 228 | }, 229 | { 230 | "cell_type": "code", 231 | "execution_count": 26, 232 | "metadata": {}, 233 | "outputs": [], 234 | "source": [ 235 | "from sklearn.preprocessing import StandardScaler\n", 236 | "from sklearn.model_selection import train_test_split" 237 | ] 238 | }, 239 | { 240 | "cell_type": "code", 241 | "execution_count": 27, 242 | "metadata": {}, 243 | "outputs": [ 244 | { 245 | "data": { 246 | "text/plain": [ 247 | "0.9333333333333333" 248 | ] 249 | }, 250 | "execution_count": 27, 251 | "metadata": {}, 252 | "output_type": "execute_result" 253 | } 254 | ], 255 | "source": [ 256 | "X_train, X_test, y_train, y_test = train_test_split(\n", 257 | " X, y, test_size=0.4, random_state=0)\n", 258 | "\n", 259 | "scaler = StandardScaler().fit(X_train)\n", 260 | "\n", 261 | "X_train_transformed = scaler.transform(X_train)\n", 262 | "\n", 263 | "lr = LogisticRegression()\n", 264 | "lr.fit(X_train_transformed, y_train)\n", 265 | "\n", 266 | "X_test_transformed = scaler.transform(X_test)\n", 267 | "lr.score(X_test_transformed, y_test)" 268 | ] 269 | }, 270 | { 271 | "cell_type": "markdown", 272 | "metadata": {}, 273 | "source": [ 274 | "### 管道(Pipeline)使组合估计器变得更加容易,在交叉验证下提供此行为:" 275 | ] 276 | }, 277 | { 278 | "cell_type": "code", 279 | "execution_count": 28, 280 | "metadata": {}, 281 | "outputs": [], 282 | "source": [ 283 | "from sklearn.pipeline import make_pipeline" 284 | ] 285 | }, 286 | { 287 | "cell_type": "code", 288 | "execution_count": 47, 289 | "metadata": {}, 290 | "outputs": [ 291 | { 292 | "data": { 293 | "text/plain": [ 294 | "array([0.97777778, 0.91111111, 0.95555556, 0.93333333, 0.95555556])" 295 | ] 296 | }, 297 | "execution_count": 47, 298 | "metadata": {}, 299 | "output_type": "execute_result" 300 | } 301 | ], 302 | "source": [ 303 | "lr = make_pipeline(StandardScaler(), LogisticRegression())\n", 304 | "cross_val_score(lr, X, y, cv=cv)" 305 | ] 306 | }, 307 | { 308 | "cell_type": "markdown", 309 | "metadata": {}, 310 | "source": [ 311 | "## 交叉验证函数与多指标评价" 312 | ] 313 | }, 314 | { 315 | "cell_type": "code", 316 | "execution_count": 48, 317 | "metadata": {}, 318 | "outputs": [], 319 | "source": [ 320 | "from sklearn.model_selection import cross_validate\n", 321 | "from sklearn.metrics import recall_score" 322 | ] 323 | }, 324 | { 325 | "cell_type": "code", 326 | "execution_count": 59, 327 | "metadata": {}, 328 | "outputs": [], 329 | "source": [ 330 | "scoring = ['precision_macro', 'recall_macro']\n", 331 | "lr = LogisticRegression()\n", 332 | "# return_estimator=True来保留在每个训练集上拟合的估计器。\n", 333 | "# return_train_score=True可以返回训练集上评估的分数, 但会额外消耗时间\n", 334 | "scores = cross_validate(lr, X, y, scoring=scoring,\n", 335 | " return_estimator=True,\n", 336 | " return_train_score=True)" 337 | ] 338 | }, 339 | { 340 | "cell_type": "code", 341 | "execution_count": 60, 342 | "metadata": {}, 343 | "outputs": [ 344 | { 345 | "data": { 346 | "text/plain": [ 347 | "{'fit_time': array([0.01994562, 0.0209415 , 0.02095532, 0.01698995, 0.01894307]),\n", 348 | " 'score_time': array([0.00199461, 0.00102544, 0.00099897, 0.00195312, 0.00099754]),\n", 349 | " 'estimator': (LogisticRegression(),\n", 350 | " LogisticRegression(),\n", 351 | " LogisticRegression(),\n", 352 | " LogisticRegression(),\n", 353 | " LogisticRegression()),\n", 354 | " 'test_precision_macro': array([0.96969697, 1. , 0.94444444, 0.96969697, 1. ]),\n", 355 | " 'train_precision_macro': array([0.96741855, 0.96741855, 0.98333333, 0.98412698, 0.97519283]),\n", 356 | " 'test_recall_macro': array([0.96666667, 1. , 0.93333333, 0.96666667, 1. ]),\n", 357 | " 'train_recall_macro': array([0.96666667, 0.96666667, 0.98333333, 0.98333333, 0.975 ])}" 358 | ] 359 | }, 360 | "execution_count": 60, 361 | "metadata": {}, 362 | "output_type": "execute_result" 363 | } 364 | ], 365 | "source": [ 366 | "scores" 367 | ] 368 | }, 369 | { 370 | "cell_type": "markdown", 371 | "metadata": {}, 372 | "source": [ 373 | "## 通过交叉验证获取预测" 374 | ] 375 | }, 376 | { 377 | "cell_type": "code", 378 | "execution_count": 61, 379 | "metadata": {}, 380 | "outputs": [], 381 | "source": [ 382 | "from sklearn.model_selection import cross_val_predict" 383 | ] 384 | }, 385 | { 386 | "cell_type": "code", 387 | "execution_count": null, 388 | "metadata": {}, 389 | "outputs": [], 390 | "source": [] 391 | } 392 | ], 393 | "metadata": { 394 | "kernelspec": { 395 | "display_name": "Python 3", 396 | "language": "python", 397 | "name": "python3" 398 | }, 399 | "language_info": { 400 | "codemirror_mode": { 401 | "name": "ipython", 402 | "version": 3 403 | }, 404 | "file_extension": ".py", 405 | "mimetype": "text/x-python", 406 | "name": "python", 407 | "nbconvert_exporter": "python", 408 | "pygments_lexer": "ipython3", 409 | "version": "3.7.6" 410 | } 411 | }, 412 | "nbformat": 4, 413 | "nbformat_minor": 4 414 | } 415 | -------------------------------------------------------------------------------- /图论/.ipynb_checkpoints/Untitled-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 4 6 | } 7 | -------------------------------------------------------------------------------- /图论/.ipynb_checkpoints/weighted_graph-checkpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/图论/.ipynb_checkpoints/weighted_graph-checkpoint.png -------------------------------------------------------------------------------- /图论/weighted_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/图论/weighted_graph.png -------------------------------------------------------------------------------- /层次分析法/.ipynb_checkpoints/层次分析法代码-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 19, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "# A = [[1,1,4,1/3,3],\n", 10 | "# [1,1,4,1/3,3],\n", 11 | "# [1/4,1/4,1,1/3,1/2],\n", 12 | "# [3,3,3,1,3],\n", 13 | "# [1/3,1/3,2,1/3,1]]" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 20, 19 | "metadata": {}, 20 | "outputs": [ 21 | { 22 | "data": { 23 | "text/plain": [ 24 | "0" 25 | ] 26 | }, 27 | "execution_count": 20, 28 | "metadata": {}, 29 | "output_type": "execute_result" 30 | } 31 | ], 32 | "source": [ 33 | "# 检验A是否为正互反矩阵\n", 34 | "B = np.array(A)\n", 35 | "(np.ones(B.shape) != B.T * B).sum()" 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": 2, 41 | "metadata": {}, 42 | "outputs": [], 43 | "source": [ 44 | "import numpy as np #导入所需包并将其命名为np\n", 45 | "def ConsisTest(X): #函数接收一个如上述A似的矩阵\n", 46 | "#计算权重\n", 47 | " #方法一:算术平均法\n", 48 | " ## 第一步:将判断矩阵按照列归一化(每个元素除以其所在列的和)\n", 49 | " X = np.array(X) #将X转换为np.array对象\n", 50 | " sum_X = X.sum(axis=0) #计算X每列的和\n", 51 | " (n,n) = X.shape #X为方阵,行和列相同,所以用一个n来接收\n", 52 | " sum_X = np.tile(sum_X,(n,1)) #将和向量重复n行组成新的矩阵\n", 53 | " stand_X = X/sum_X #标准化X(X中每个元素除以其所在列的和)\n", 54 | " \n", 55 | " ## 第二步:将归一化矩阵每一行求和\n", 56 | " sum_row = stand_X.sum(axis=1)\n", 57 | "\n", 58 | " ## 第三步:将相加后得到的向量中每个元素除以n即可得到权重向量\n", 59 | " print(\"算数平均法求权重的结果为:\")\n", 60 | " print(sum_row/n)\n", 61 | " \n", 62 | " #方法二:特征值法\n", 63 | " ## 第一步:找出矩阵X的最大特征值以及其对应的特征向量\n", 64 | " V,E = np.linalg.eig(X) #V是特征值,E是特征值对应的特征向量\n", 65 | " max_value = np.max(V) #最大特征值\n", 66 | " #print(\"最大特征值是:\",max_value)\n", 67 | " max_v_index = np.argmax(V) #返回最大特征值所在位置\n", 68 | " max_eiv = E[:,max_v_index] #最大特征值对应的特征向量\n", 69 | " \n", 70 | " ## 第二步:对求出的特征向量进行归一化处理即可得到权重\n", 71 | " stand_eiv = max_eiv/max_eiv.sum()\n", 72 | " print(\"特征值法求权重的结果为:\")\n", 73 | " print(stand_eiv)\n", 74 | " print(\"———————————————————————————————\")\n", 75 | "#一致性检验\n", 76 | " ## 第一步:计算一致性指标CI\n", 77 | " CI = (max_value-n)/(n-1)\n", 78 | " ## 第二步:查找对应的平均随机一致性指标RI\n", 79 | " RI = np.array([15,0,0,0.52,0.89,1.12,1.26,1.36,1.41,1.46,1.49,1.52,1.54,1.56,1.58,1.59])\n", 80 | " ## 第三步:计算一致性比例CR\n", 81 | " CR = CI/RI[n]\n", 82 | " if CR < 0.1:\n", 83 | " print(\"CR=\",CR,\",小于0.1,通过一致性检验\")\n", 84 | " else:\n", 85 | " print(\"CR=\",CR,\",大于等于0.1,没有通过一致性检验,请修改判断矩阵\")\n", 86 | " return None\n", 87 | "#ConsisTest(A)" 88 | ] 89 | }, 90 | { 91 | "cell_type": "code", 92 | "execution_count": null, 93 | "metadata": {}, 94 | "outputs": [], 95 | "source": [] 96 | } 97 | ], 98 | "metadata": { 99 | "kernelspec": { 100 | "display_name": "Python 3", 101 | "language": "python", 102 | "name": "python3" 103 | }, 104 | "language_info": { 105 | "codemirror_mode": { 106 | "name": "ipython", 107 | "version": 3 108 | }, 109 | "file_extension": ".py", 110 | "mimetype": "text/x-python", 111 | "name": "python", 112 | "nbconvert_exporter": "python", 113 | "pygments_lexer": "ipython3", 114 | "version": "3.7.6" 115 | }, 116 | "varInspector": { 117 | "cols": { 118 | "lenName": 16, 119 | "lenType": 16, 120 | "lenVar": 40 121 | }, 122 | "kernels_config": { 123 | "python": { 124 | "delete_cmd_postfix": "", 125 | "delete_cmd_prefix": "del ", 126 | "library": "var_list.py", 127 | "varRefreshCmd": "print(var_dic_list())" 128 | }, 129 | "r": { 130 | "delete_cmd_postfix": ") ", 131 | "delete_cmd_prefix": "rm(", 132 | "library": "var_list.r", 133 | "varRefreshCmd": "cat(var_dic_list()) " 134 | } 135 | }, 136 | "types_to_exclude": [ 137 | "module", 138 | "function", 139 | "builtin_function_or_method", 140 | "instance", 141 | "_Feature" 142 | ], 143 | "window_display": false 144 | } 145 | }, 146 | "nbformat": 4, 147 | "nbformat_minor": 4 148 | } 149 | -------------------------------------------------------------------------------- /层次分析法/层次分析法代码.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 19, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "# A = [[1,1,4,1/3,3],\n", 10 | "# [1,1,4,1/3,3],\n", 11 | "# [1/4,1/4,1,1/3,1/2],\n", 12 | "# [3,3,3,1,3],\n", 13 | "# [1/3,1/3,2,1/3,1]]" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 20, 19 | "metadata": {}, 20 | "outputs": [ 21 | { 22 | "data": { 23 | "text/plain": [ 24 | "0" 25 | ] 26 | }, 27 | "execution_count": 20, 28 | "metadata": {}, 29 | "output_type": "execute_result" 30 | } 31 | ], 32 | "source": [ 33 | "# 检验A是否为正互反矩阵\n", 34 | "B = np.array(A)\n", 35 | "(np.ones(B.shape) != B.T * B).sum()" 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": 2, 41 | "metadata": {}, 42 | "outputs": [], 43 | "source": [ 44 | "import numpy as np #导入所需包并将其命名为np\n", 45 | "def ConsisTest(X): #函数接收一个如上述A似的矩阵\n", 46 | "#计算权重\n", 47 | " #方法一:算术平均法\n", 48 | " ## 第一步:将判断矩阵按照列归一化(每个元素除以其所在列的和)\n", 49 | " X = np.array(X) #将X转换为np.array对象\n", 50 | " sum_X = X.sum(axis=0) #计算X每列的和\n", 51 | " (n,n) = X.shape #X为方阵,行和列相同,所以用一个n来接收\n", 52 | " sum_X = np.tile(sum_X,(n,1)) #将和向量重复n行组成新的矩阵\n", 53 | " stand_X = X/sum_X #标准化X(X中每个元素除以其所在列的和)\n", 54 | " \n", 55 | " ## 第二步:将归一化矩阵每一行求和\n", 56 | " sum_row = stand_X.sum(axis=1)\n", 57 | "\n", 58 | " ## 第三步:将相加后得到的向量中每个元素除以n即可得到权重向量\n", 59 | " print(\"算数平均法求权重的结果为:\")\n", 60 | " print(sum_row/n)\n", 61 | " \n", 62 | " #方法二:特征值法\n", 63 | " ## 第一步:找出矩阵X的最大特征值以及其对应的特征向量\n", 64 | " V,E = np.linalg.eig(X) #V是特征值,E是特征值对应的特征向量\n", 65 | " max_value = np.max(V) #最大特征值\n", 66 | " #print(\"最大特征值是:\",max_value)\n", 67 | " max_v_index = np.argmax(V) #返回最大特征值所在位置\n", 68 | " max_eiv = E[:,max_v_index] #最大特征值对应的特征向量\n", 69 | " \n", 70 | " ## 第二步:对求出的特征向量进行归一化处理即可得到权重\n", 71 | " stand_eiv = max_eiv/max_eiv.sum()\n", 72 | " print(\"特征值法求权重的结果为:\")\n", 73 | " print(stand_eiv)\n", 74 | " print(\"———————————————————————————————\")\n", 75 | "#一致性检验\n", 76 | " ## 第一步:计算一致性指标CI\n", 77 | " CI = (max_value-n)/(n-1)\n", 78 | " ## 第二步:查找对应的平均随机一致性指标RI\n", 79 | " RI = np.array([15,0,0,0.52,0.89,1.12,1.26,1.36,1.41,1.46,1.49,1.52,1.54,1.56,1.58,1.59])\n", 80 | " ## 第三步:计算一致性比例CR\n", 81 | " CR = CI/RI[n]\n", 82 | " if CR < 0.1:\n", 83 | " print(\"CR=\",CR,\",小于0.1,通过一致性检验\")\n", 84 | " else:\n", 85 | " print(\"CR=\",CR,\",大于等于0.1,没有通过一致性检验,请修改判断矩阵\")\n", 86 | " return None\n", 87 | "#ConsisTest(A)" 88 | ] 89 | }, 90 | { 91 | "cell_type": "code", 92 | "execution_count": null, 93 | "metadata": {}, 94 | "outputs": [], 95 | "source": [] 96 | } 97 | ], 98 | "metadata": { 99 | "kernelspec": { 100 | "display_name": "Python 3", 101 | "language": "python", 102 | "name": "python3" 103 | }, 104 | "language_info": { 105 | "codemirror_mode": { 106 | "name": "ipython", 107 | "version": 3 108 | }, 109 | "file_extension": ".py", 110 | "mimetype": "text/x-python", 111 | "name": "python", 112 | "nbconvert_exporter": "python", 113 | "pygments_lexer": "ipython3", 114 | "version": "3.7.6" 115 | }, 116 | "varInspector": { 117 | "cols": { 118 | "lenName": 16, 119 | "lenType": 16, 120 | "lenVar": 40 121 | }, 122 | "kernels_config": { 123 | "python": { 124 | "delete_cmd_postfix": "", 125 | "delete_cmd_prefix": "del ", 126 | "library": "var_list.py", 127 | "varRefreshCmd": "print(var_dic_list())" 128 | }, 129 | "r": { 130 | "delete_cmd_postfix": ") ", 131 | "delete_cmd_prefix": "rm(", 132 | "library": "var_list.r", 133 | "varRefreshCmd": "cat(var_dic_list()) " 134 | } 135 | }, 136 | "types_to_exclude": [ 137 | "module", 138 | "function", 139 | "builtin_function_or_method", 140 | "instance", 141 | "_Feature" 142 | ], 143 | "window_display": false 144 | } 145 | }, 146 | "nbformat": 4, 147 | "nbformat_minor": 4 148 | } 149 | -------------------------------------------------------------------------------- /层次分析法/层次分析论文.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/层次分析法/层次分析论文.docx -------------------------------------------------------------------------------- /岭回归和LASSO/.ipynb_checkpoints/岭回归和LASSO-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 10, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "from sklearn.linear_model import Lasso, Ridge\n", 10 | "import pandas as pd" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 11, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "text/html": [ 21 | "
\n", 22 | "\n", 35 | "\n", 36 | " \n", 37 | " \n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | "
年份单产种子费化肥费农药费机械费灌溉费
019901017.0106.05495.15305.1045.9056.10
119911036.5113.55561.45343.8068.5593.30
21992792.0104.55584.85414.0073.20104.55
31993861.0132.75658.35453.7582.95107.55
41994901.5174.30904.05625.05114.00152.10
\n", 101 | "
" 102 | ], 103 | "text/plain": [ 104 | " 年份 单产 种子费 化肥费 农药费 机械费 灌溉费\n", 105 | "0 1990 1017.0 106.05 495.15 305.10 45.90 56.10\n", 106 | "1 1991 1036.5 113.55 561.45 343.80 68.55 93.30\n", 107 | "2 1992 792.0 104.55 584.85 414.00 73.20 104.55\n", 108 | "3 1993 861.0 132.75 658.35 453.75 82.95 107.55\n", 109 | "4 1994 901.5 174.30 904.05 625.05 114.00 152.10" 110 | ] 111 | }, 112 | "execution_count": 11, 113 | "metadata": {}, 114 | "output_type": "execute_result" 115 | } 116 | ], 117 | "source": [ 118 | "data = pd.read_excel('cotton.xlsx')\n", 119 | "data.head()" 120 | ] 121 | }, 122 | { 123 | "cell_type": "code", 124 | "execution_count": 12, 125 | "metadata": {}, 126 | "outputs": [], 127 | "source": [ 128 | "X = data.iloc[:,2:]\n", 129 | "Y = data['单产']" 130 | ] 131 | }, 132 | { 133 | "cell_type": "code", 134 | "execution_count": 15, 135 | "metadata": {}, 136 | "outputs": [ 137 | { 138 | "data": { 139 | "text/plain": [ 140 | "Ridge()" 141 | ] 142 | }, 143 | "execution_count": 15, 144 | "metadata": {}, 145 | "output_type": "execute_result" 146 | } 147 | ], 148 | "source": [ 149 | "rg = Ridge()\n", 150 | "rg.fit(X,Y)" 151 | ] 152 | }, 153 | { 154 | "cell_type": "code", 155 | "execution_count": 17, 156 | "metadata": {}, 157 | "outputs": [ 158 | { 159 | "data": { 160 | "text/plain": [ 161 | "0.7407635553511097" 162 | ] 163 | }, 164 | "execution_count": 17, 165 | "metadata": {}, 166 | "output_type": "execute_result" 167 | } 168 | ], 169 | "source": [ 170 | "rg.score(X,Y)" 171 | ] 172 | }, 173 | { 174 | "cell_type": "code", 175 | "execution_count": 13, 176 | "metadata": {}, 177 | "outputs": [ 178 | { 179 | "data": { 180 | "text/plain": [ 181 | "Lasso()" 182 | ] 183 | }, 184 | "execution_count": 13, 185 | "metadata": {}, 186 | "output_type": "execute_result" 187 | } 188 | ], 189 | "source": [ 190 | "ls = Lasso()\n", 191 | "ls.fit(X, Y)" 192 | ] 193 | }, 194 | { 195 | "cell_type": "code", 196 | "execution_count": 18, 197 | "metadata": {}, 198 | "outputs": [ 199 | { 200 | "data": { 201 | "text/plain": [ 202 | "0.7407632244450273" 203 | ] 204 | }, 205 | "execution_count": 18, 206 | "metadata": {}, 207 | "output_type": "execute_result" 208 | } 209 | ], 210 | "source": [ 211 | "ls.score(X,Y)" 212 | ] 213 | }, 214 | { 215 | "cell_type": "markdown", 216 | "metadata": {}, 217 | "source": [ 218 | "### 交叉验证" 219 | ] 220 | }, 221 | { 222 | "cell_type": "code", 223 | "execution_count": 19, 224 | "metadata": {}, 225 | "outputs": [], 226 | "source": [ 227 | "from sklearn.linear_model import LassoCV, RidgeCV" 228 | ] 229 | }, 230 | { 231 | "cell_type": "code", 232 | "execution_count": 56, 233 | "metadata": {}, 234 | "outputs": [ 235 | { 236 | "data": { 237 | "text/plain": [ 238 | "0.7336219848113823" 239 | ] 240 | }, 241 | "execution_count": 56, 242 | "metadata": {}, 243 | "output_type": "execute_result" 244 | } 245 | ], 246 | "source": [ 247 | "lsCV = LassoCV().fit(X,Y)\n", 248 | "lsCV.score(X,Y)" 249 | ] 250 | }, 251 | { 252 | "cell_type": "code", 253 | "execution_count": 57, 254 | "metadata": {}, 255 | "outputs": [ 256 | { 257 | "data": { 258 | "text/plain": [ 259 | "array([ 0.38054479, -0. , -0.30117494, 0. , 0.59984499])" 260 | ] 261 | }, 262 | "execution_count": 57, 263 | "metadata": {}, 264 | "output_type": "execute_result" 265 | } 266 | ], 267 | "source": [ 268 | "lsCV.coef_" 269 | ] 270 | }, 271 | { 272 | "cell_type": "code", 273 | "execution_count": 33, 274 | "metadata": {}, 275 | "outputs": [ 276 | { 277 | "data": { 278 | "text/plain": [ 279 | "0.7407635299323183" 280 | ] 281 | }, 282 | "execution_count": 33, 283 | "metadata": {}, 284 | "output_type": "execute_result" 285 | } 286 | ], 287 | "source": [ 288 | "rgCV = RidgeCV(cv=5).fit(X,Y)\n", 289 | "rgCV.score(X,Y)" 290 | ] 291 | }, 292 | { 293 | "cell_type": "code", 294 | "execution_count": 37, 295 | "metadata": {}, 296 | "outputs": [ 297 | { 298 | "data": { 299 | "text/plain": [ 300 | "array([ 0.77515745, -0.0927722 , -0.25511048, -0.1549564 , 0.63803781])" 301 | ] 302 | }, 303 | "execution_count": 37, 304 | "metadata": {}, 305 | "output_type": "execute_result" 306 | } 307 | ], 308 | "source": [ 309 | "rgCV.coef_" 310 | ] 311 | }, 312 | { 313 | "cell_type": "code", 314 | "execution_count": null, 315 | "metadata": {}, 316 | "outputs": [], 317 | "source": [] 318 | } 319 | ], 320 | "metadata": { 321 | "kernelspec": { 322 | "display_name": "Python 3", 323 | "language": "python", 324 | "name": "python3" 325 | }, 326 | "language_info": { 327 | "codemirror_mode": { 328 | "name": "ipython", 329 | "version": 3 330 | }, 331 | "file_extension": ".py", 332 | "mimetype": "text/x-python", 333 | "name": "python", 334 | "nbconvert_exporter": "python", 335 | "pygments_lexer": "ipython3", 336 | "version": "3.7.6" 337 | } 338 | }, 339 | "nbformat": 4, 340 | "nbformat_minor": 4 341 | } 342 | -------------------------------------------------------------------------------- /岭回归和LASSO/cotton.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/岭回归和LASSO/cotton.xlsx -------------------------------------------------------------------------------- /岭回归和LASSO/岭回归和LASSO.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 10, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "from sklearn.linear_model import Lasso, Ridge\n", 10 | "import pandas as pd" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 11, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "text/html": [ 21 | "
\n", 22 | "\n", 35 | "\n", 36 | " \n", 37 | " \n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | "
年份单产种子费化肥费农药费机械费灌溉费
019901017.0106.05495.15305.1045.9056.10
119911036.5113.55561.45343.8068.5593.30
21992792.0104.55584.85414.0073.20104.55
31993861.0132.75658.35453.7582.95107.55
41994901.5174.30904.05625.05114.00152.10
\n", 101 | "
" 102 | ], 103 | "text/plain": [ 104 | " 年份 单产 种子费 化肥费 农药费 机械费 灌溉费\n", 105 | "0 1990 1017.0 106.05 495.15 305.10 45.90 56.10\n", 106 | "1 1991 1036.5 113.55 561.45 343.80 68.55 93.30\n", 107 | "2 1992 792.0 104.55 584.85 414.00 73.20 104.55\n", 108 | "3 1993 861.0 132.75 658.35 453.75 82.95 107.55\n", 109 | "4 1994 901.5 174.30 904.05 625.05 114.00 152.10" 110 | ] 111 | }, 112 | "execution_count": 11, 113 | "metadata": {}, 114 | "output_type": "execute_result" 115 | } 116 | ], 117 | "source": [ 118 | "data = pd.read_excel('cotton.xlsx')\n", 119 | "data.head()" 120 | ] 121 | }, 122 | { 123 | "cell_type": "code", 124 | "execution_count": 12, 125 | "metadata": {}, 126 | "outputs": [], 127 | "source": [ 128 | "X = data.iloc[:,2:]\n", 129 | "Y = data['单产']" 130 | ] 131 | }, 132 | { 133 | "cell_type": "code", 134 | "execution_count": 15, 135 | "metadata": {}, 136 | "outputs": [ 137 | { 138 | "data": { 139 | "text/plain": [ 140 | "Ridge()" 141 | ] 142 | }, 143 | "execution_count": 15, 144 | "metadata": {}, 145 | "output_type": "execute_result" 146 | } 147 | ], 148 | "source": [ 149 | "rg = Ridge()\n", 150 | "rg.fit(X,Y)" 151 | ] 152 | }, 153 | { 154 | "cell_type": "code", 155 | "execution_count": 17, 156 | "metadata": {}, 157 | "outputs": [ 158 | { 159 | "data": { 160 | "text/plain": [ 161 | "0.7407635553511097" 162 | ] 163 | }, 164 | "execution_count": 17, 165 | "metadata": {}, 166 | "output_type": "execute_result" 167 | } 168 | ], 169 | "source": [ 170 | "rg.score(X,Y)" 171 | ] 172 | }, 173 | { 174 | "cell_type": "code", 175 | "execution_count": 13, 176 | "metadata": {}, 177 | "outputs": [ 178 | { 179 | "data": { 180 | "text/plain": [ 181 | "Lasso()" 182 | ] 183 | }, 184 | "execution_count": 13, 185 | "metadata": {}, 186 | "output_type": "execute_result" 187 | } 188 | ], 189 | "source": [ 190 | "ls = Lasso()\n", 191 | "ls.fit(X, Y)" 192 | ] 193 | }, 194 | { 195 | "cell_type": "code", 196 | "execution_count": 18, 197 | "metadata": {}, 198 | "outputs": [ 199 | { 200 | "data": { 201 | "text/plain": [ 202 | "0.7407632244450273" 203 | ] 204 | }, 205 | "execution_count": 18, 206 | "metadata": {}, 207 | "output_type": "execute_result" 208 | } 209 | ], 210 | "source": [ 211 | "ls.score(X,Y)" 212 | ] 213 | }, 214 | { 215 | "cell_type": "markdown", 216 | "metadata": {}, 217 | "source": [ 218 | "### 交叉验证" 219 | ] 220 | }, 221 | { 222 | "cell_type": "code", 223 | "execution_count": 19, 224 | "metadata": {}, 225 | "outputs": [], 226 | "source": [ 227 | "from sklearn.linear_model import LassoCV, RidgeCV" 228 | ] 229 | }, 230 | { 231 | "cell_type": "code", 232 | "execution_count": 56, 233 | "metadata": {}, 234 | "outputs": [ 235 | { 236 | "data": { 237 | "text/plain": [ 238 | "0.7336219848113823" 239 | ] 240 | }, 241 | "execution_count": 56, 242 | "metadata": {}, 243 | "output_type": "execute_result" 244 | } 245 | ], 246 | "source": [ 247 | "lsCV = LassoCV().fit(X,Y)\n", 248 | "lsCV.score(X,Y)" 249 | ] 250 | }, 251 | { 252 | "cell_type": "code", 253 | "execution_count": 57, 254 | "metadata": {}, 255 | "outputs": [ 256 | { 257 | "data": { 258 | "text/plain": [ 259 | "array([ 0.38054479, -0. , -0.30117494, 0. , 0.59984499])" 260 | ] 261 | }, 262 | "execution_count": 57, 263 | "metadata": {}, 264 | "output_type": "execute_result" 265 | } 266 | ], 267 | "source": [ 268 | "lsCV.coef_" 269 | ] 270 | }, 271 | { 272 | "cell_type": "code", 273 | "execution_count": 33, 274 | "metadata": {}, 275 | "outputs": [ 276 | { 277 | "data": { 278 | "text/plain": [ 279 | "0.7407635299323183" 280 | ] 281 | }, 282 | "execution_count": 33, 283 | "metadata": {}, 284 | "output_type": "execute_result" 285 | } 286 | ], 287 | "source": [ 288 | "rgCV = RidgeCV(cv=5).fit(X,Y)\n", 289 | "rgCV.score(X,Y)" 290 | ] 291 | }, 292 | { 293 | "cell_type": "code", 294 | "execution_count": 37, 295 | "metadata": {}, 296 | "outputs": [ 297 | { 298 | "data": { 299 | "text/plain": [ 300 | "array([ 0.77515745, -0.0927722 , -0.25511048, -0.1549564 , 0.63803781])" 301 | ] 302 | }, 303 | "execution_count": 37, 304 | "metadata": {}, 305 | "output_type": "execute_result" 306 | } 307 | ], 308 | "source": [ 309 | "rgCV.coef_" 310 | ] 311 | }, 312 | { 313 | "cell_type": "code", 314 | "execution_count": null, 315 | "metadata": {}, 316 | "outputs": [], 317 | "source": [] 318 | } 319 | ], 320 | "metadata": { 321 | "kernelspec": { 322 | "display_name": "Python 3", 323 | "language": "python", 324 | "name": "python3" 325 | }, 326 | "language_info": { 327 | "codemirror_mode": { 328 | "name": "ipython", 329 | "version": 3 330 | }, 331 | "file_extension": ".py", 332 | "mimetype": "text/x-python", 333 | "name": "python", 334 | "nbconvert_exporter": "python", 335 | "pygments_lexer": "ipython3", 336 | "version": "3.7.6" 337 | } 338 | }, 339 | "nbformat": 4, 340 | "nbformat_minor": 4 341 | } 342 | -------------------------------------------------------------------------------- /插值算法/.ipynb_checkpoints/terrain-checkpoint.csv: -------------------------------------------------------------------------------- 1 | 0,1480,1500,1550,1510,1430,1300,1200,980 2 | 1,1500,1550,1600,1550,1600,1600,1600,1550 3 | 2,1500,1200,1100,1550,1600,1550,1380,1070 4 | 3,1500,1200,1100,1350,1450,1200,1150,1010 5 | 4,1390,1500,1500,1400,900,1100,1060,950 6 | 5,1320,1450,1420,1400,1300,700,900,850 7 | 6,1130,1250,1280,1230,1040,900,500,700 8 | -------------------------------------------------------------------------------- /插值算法/terrain.csv: -------------------------------------------------------------------------------- 1 | 0,1,2,3,4,5,6,7 2 | 1480,1500,1550,1510,1430,1300,1200,980 3 | 1500,1550,1600,1550,1600,1600,1600,1550 4 | 1500,1200,1100,1550,1600,1550,1380,1070 5 | 1500,1200,1100,1350,1450,1200,1150,1010 6 | 1390,1500,1500,1400,900,1100,1060,950 7 | 1320,1450,1420,1400,1300,700,900,850 8 | 1130,1250,1280,1230,1040,900,500,700 9 | -------------------------------------------------------------------------------- /数学规划模型/.ipynb_checkpoints/规划代码-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import pandas as pd\n", 11 | "from scipy.optimize import minimize" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": null, 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "def func10(x):\n", 21 | " return ((18511*x[0]-20487.42*x[1]-19445)**2/(10*19445))+(3173*x[0]+4410.74*x[1]-2500)**2/(10*2500)+(8168*x[0]+7985.27*x[1]-7524)**2/(10*7524)+(3843*x[0]+2226.26*x[1]-4018)**2/(10*4018)+(7415*x[0]+8854.47*x[1]-9302)**2/(10*9302)+(4775*x[0]+5449.94*x[1]-5391)**2/(10*5391)+(1736*x[0]+2623.66*x[1]-1301)**2/(10*1301)+(951*x[0]+1101.05*x[1]-635)**2/(10*635)+(1623*x[0]+1260.34*x[1]-1046)**2/(10*1046)+(751*x[0]+786.66*x[1]-616)**2/(10*616)" 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": null, 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": [ 30 | "def func11(x):\n", 31 | " return (18406*x[0]+17195.09*x[1]-16360)**2/(10*16360)+(3090*x[0]+4703.77*x[1]-1524)**2/(10*1524)+(6602*x[0]+7414.8*x[1]-6254)**2/(10*6254)+(2410*x[0]+3351.36*x[1]-2583)**2/(10*2583)+(7326*x[0]+8730.01*x[1]-7325)**2/(10*7325)+(4775*x[0]+7175.31*x[1]-6255)**2/(10*6255)+(1247*x[0]+2973.68*x[1]-967)**2/(10*967)+(826*x[0]+1343.22*x[1]-388)**2/(10*388)+(661*x[0]+750.56*x[1]-587)**2/(10*587)+(583*x[0]+1079.94*x[1]-403)**2/(10*403)" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": null, 37 | "metadata": {}, 38 | "outputs": [], 39 | "source": [ 40 | "def func12(x):\n", 41 | " return (24257*x[0]+19919.39*x[1]-17573)**2/(10*17573)+(3040*x[0]+2085.13*x[1]-1517)**2/(10*1517)+(8477*x[0]+7906.14*x[1]-6343)**2/(10*6343)+(2976*x[0]+2932.91*x[1]-2620)**2/(10*2620)+(7261*x[0]+11454.6*x[1]-8954)**2/(10*8954)+(4775*x[0]+8048.06*x[1]-6421)**2/(10*6421)+(2196*x[0]+2607.86*x[1]-1315)**2/(10*1315)+(1323*x[0]+1608.9*x[1]-494)**2/(10*494)+(1512*x[0]+564.88*x[1]-634)**2/(10*634)+(1109*x[0]+1074.51*x[1]-418)**2/(10*418)" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 48, 47 | "metadata": {}, 48 | "outputs": [], 49 | "source": [ 50 | "net_max = pd.read_excel('神经网络.xlsx', header=None)\n", 51 | "time_max = pd.read_excel('时间序列.xlsx', header=None)\n", 52 | "real_max = pd.read_excel('真实.xlsx', header=None)\n", 53 | "net_pre = pd.read_excel('神经网络预测.xlsx', header=None)\n", 54 | "time_pre = pd.read_excel('时间序列预测.xlsx', header=None)\n", 55 | "pre_real = pd.read_excel('预测真实.xlsx', header=None)" 56 | ] 57 | }, 58 | { 59 | "cell_type": "code", 60 | "execution_count": 49, 61 | "metadata": {}, 62 | "outputs": [], 63 | "source": [ 64 | "net = np.array(net_max)\n", 65 | "time = np.array(time_max)\n", 66 | "real = np.array(real_max)\n", 67 | "netp = np.array(net_pre)\n", 68 | "timep = np.array(time_pre)\n", 69 | "prl = np.array(pre_real)" 70 | ] 71 | }, 72 | { 73 | "cell_type": "code", 74 | "execution_count": 42, 75 | "metadata": {}, 76 | "outputs": [ 77 | { 78 | "name": "stdout", 79 | "output_type": "stream", 80 | "text": [ 81 | "0.0335742731672297 --- [0.20330215 0.71580218] --- 64\n" 82 | ] 83 | } 84 | ], 85 | "source": [ 86 | "min_ = 10\n", 87 | "coef = -1\n", 88 | "week = -1\n", 89 | "for j in range(91):\n", 90 | " def func(x):\n", 91 | " sum_ = 0\n", 92 | " for i in range(10):\n", 93 | " sum_ += np.abs(x[0]*net[j,i]+x[1]*time[j,i]-real[j,i])/(10*real[j,i])\n", 94 | " return sum_\n", 95 | " x0 = [0, 0]\n", 96 | " res = minimize(func, x0, method='SLSQP')\n", 97 | " temp = res.fun\n", 98 | " if temp <= min_:\n", 99 | " min_ = temp\n", 100 | " coef = res.x\n", 101 | " week = j\n", 102 | "print(min_,'---',coef,'---',week)" 103 | ] 104 | }, 105 | { 106 | "cell_type": "code", 107 | "execution_count": 45, 108 | "metadata": {}, 109 | "outputs": [], 110 | "source": [ 111 | "a = 0.20330215\n", 112 | "b = 0.71580218" 113 | ] 114 | }, 115 | { 116 | "cell_type": "code", 117 | "execution_count": 65, 118 | "metadata": {}, 119 | "outputs": [], 120 | "source": [ 121 | "week_list = []\n", 122 | "sum_ = 0\n", 123 | "for j in range(12):\n", 124 | " for i in range(10):\n", 125 | " sum_ += np.abs(a*netp[j,i]+b*timep[j,i]-prl[j,i])/(10*prl[j,i])\n", 126 | " week_list.append(sum_)" 127 | ] 128 | }, 129 | { 130 | "cell_type": "markdown", 131 | "metadata": {}, 132 | "source": [ 133 | "### 组合预测结果" 134 | ] 135 | }, 136 | { 137 | "cell_type": "code", 138 | "execution_count": 64, 139 | "metadata": {}, 140 | "outputs": [], 141 | "source": [ 142 | "week_pre = np.zeros((12,10))" 143 | ] 144 | }, 145 | { 146 | "cell_type": "code", 147 | "execution_count": 59, 148 | "metadata": {}, 149 | "outputs": [], 150 | "source": [ 151 | "for j in range(12):\n", 152 | " for i in range(10):\n", 153 | " week_pre[j,i] = a*netp[j,i]+b*timep[j,i]" 154 | ] 155 | }, 156 | { 157 | "cell_type": "code", 158 | "execution_count": 63, 159 | "metadata": {}, 160 | "outputs": [], 161 | "source": [ 162 | "pd.DataFrame(week_pre).to_csv('tiny_week_pre.csv')" 163 | ] 164 | } 165 | ], 166 | "metadata": { 167 | "kernelspec": { 168 | "display_name": "Python 3", 169 | "language": "python", 170 | "name": "python3" 171 | }, 172 | "language_info": { 173 | "codemirror_mode": { 174 | "name": "ipython", 175 | "version": 3 176 | }, 177 | "file_extension": ".py", 178 | "mimetype": "text/x-python", 179 | "name": "python", 180 | "nbconvert_exporter": "python", 181 | "pygments_lexer": "ipython3", 182 | "version": "3.7.6" 183 | } 184 | }, 185 | "nbformat": 4, 186 | "nbformat_minor": 4 187 | } 188 | -------------------------------------------------------------------------------- /时间序列分析/.ipynb_checkpoints/women_dress-checkpoint.csv: -------------------------------------------------------------------------------- 1 | 0,1 2 | 01/01/1989,16578.93 3 | 02/01/1989,18236.13 4 | 03/01/1989,43393.55 5 | 04/01/1989,30908.49 6 | 05/01/1989,28701.58 7 | 06/01/1989,29647.57 8 | 07/01/1989,31141.51 9 | 08/01/1989,31177.31 10 | 09/01/1989,30672.37 11 | 10/01/1989,37633.38 12 | 11/01/1989,33890.92 13 | 12/01/1989,51378.0 14 | 01/01/1990,18103.06 15 | 02/01/1990,20979.5 16 | 03/01/1990,34503.12 17 | 04/01/1990,26783.96 18 | 05/01/1990,31790.15 19 | 06/01/1990,32432.74 20 | 07/01/1990,37180.05 21 | 08/01/1990,29658.85 22 | 09/01/1990,33238.46 23 | 10/01/1990,35679.33 24 | 11/01/1990,37238.87 25 | 12/01/1990,46766.94 26 | 01/01/1991,21752.78 27 | 02/01/1991,20789.67 28 | 03/01/1991,37427.02 29 | 04/01/1991,37578.38 30 | 05/01/1991,34424.09 31 | 06/01/1991,47208.79 32 | 07/01/1991,34389.18 33 | 08/01/1991,34637.01 34 | 09/01/1991,35092.11 35 | 10/01/1991,34735.17 36 | 11/01/1991,33201.77 37 | 12/01/1991,51760.84 38 | 01/01/1992,20078.4 39 | 02/01/1992,34596.86 40 | 03/01/1992,35220.07 41 | 04/01/1992,34564.35 42 | 05/01/1992,36778.06 43 | 06/01/1992,38882.75 44 | 07/01/1992,39468.25 45 | 08/01/1992,38713.5 46 | 09/01/1992,43817.01 47 | 10/01/1992,46250.72 48 | 11/01/1992,40400.87 49 | 12/01/1992,60642.61 50 | 01/01/1993,23663.65 51 | 02/01/1993,24400.76 52 | 03/01/1993,37879.2 53 | 04/01/1993,41884.14 54 | 05/01/1993,53541.03 55 | 06/01/1993,39528.52 56 | 07/01/1993,43131.16 57 | 08/01/1993,38643.97 58 | 09/01/1993,44413.45 59 | 10/01/1993,46639.55 60 | 11/01/1993,49281.79 61 | 12/01/1993,65196.81 62 | 01/01/1994,22513.18 63 | 02/01/1994,22573.29 64 | 03/01/1994,37414.13 65 | 04/01/1994,41151.05 66 | 05/01/1994,42418.67 67 | 06/01/1994,35911.73 68 | 07/01/1994,34901.72 69 | 08/01/1994,40581.52 70 | 09/01/1994,61179.2 71 | 10/01/1994,44547.37 72 | 11/01/1994,50375.31 73 | 12/01/1994,63823.61 74 | 01/01/1995,38327.12 75 | 02/01/1995,26802.52 76 | 03/01/1995,43726.64 77 | 04/01/1995,44153.56 78 | 05/01/1995,50111.22 79 | 06/01/1995,23246.3 80 | 07/01/1995,44048.71 81 | 08/01/1995,38977.73 82 | 09/01/1995,45705.63 83 | 10/01/1995,44370.37 84 | 11/01/1995,47942.89 85 | 12/01/1995,73918.34 86 | 01/01/1996,28182.68 87 | 02/01/1996,28526.25 88 | 03/01/1996,44341.36 89 | 04/01/1996,52901.81 90 | 05/01/1996,42483.37 91 | 06/01/1996,44115.29 92 | 07/01/1996,40648.21 93 | 08/01/1996,41637.65 94 | 09/01/1996,51194.98 95 | 10/01/1996,50884.34 96 | 11/01/1996,47875.82 97 | 12/01/1996,69112.81 98 | 01/01/1997,25647.49 99 | 02/01/1997,24421.91 100 | 03/01/1997,40030.11 101 | 04/01/1997,41055.37 102 | 05/01/1997,46385.56 103 | 06/01/1997,45873.16 104 | 07/01/1997,45480.15 105 | 08/01/1997,48561.86 106 | 09/01/1997,31578.77 107 | 10/01/1997,57673.57 108 | 11/01/1997,52061.74 109 | 12/01/1997,75818.17 110 | 01/01/1998,31267.58 111 | 02/01/1998,31514.68 112 | 03/01/1998,49715.25 113 | 04/01/1998,52026.07 114 | 05/01/1998,41038.75 115 | 06/01/1998,48329.36 116 | 07/01/1998,44961.98 117 | 08/01/1998,58660.76 118 | 09/01/1998,57791.14 119 | 10/01/1998,56329.4 120 | 11/01/1998,54617.35 121 | 12/01/1998,80245.97 122 | -------------------------------------------------------------------------------- /时间序列分析/sale_data.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/时间序列分析/sale_data.xlsx -------------------------------------------------------------------------------- /时间序列分析/stock.sav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/时间序列分析/stock.sav -------------------------------------------------------------------------------- /时间序列分析/women_dress.csv: -------------------------------------------------------------------------------- 1 | 0,1 2 | 01/01/1989,16578.93 3 | 02/01/1989,18236.13 4 | 03/01/1989,43393.55 5 | 04/01/1989,30908.49 6 | 05/01/1989,28701.58 7 | 06/01/1989,29647.57 8 | 07/01/1989,31141.51 9 | 08/01/1989,31177.31 10 | 09/01/1989,30672.37 11 | 10/01/1989,37633.38 12 | 11/01/1989,33890.92 13 | 12/01/1989,51378.0 14 | 01/01/1990,18103.06 15 | 02/01/1990,20979.5 16 | 03/01/1990,34503.12 17 | 04/01/1990,26783.96 18 | 05/01/1990,31790.15 19 | 06/01/1990,32432.74 20 | 07/01/1990,37180.05 21 | 08/01/1990,29658.85 22 | 09/01/1990,33238.46 23 | 10/01/1990,35679.33 24 | 11/01/1990,37238.87 25 | 12/01/1990,46766.94 26 | 01/01/1991,21752.78 27 | 02/01/1991,20789.67 28 | 03/01/1991,37427.02 29 | 04/01/1991,37578.38 30 | 05/01/1991,34424.09 31 | 06/01/1991,47208.79 32 | 07/01/1991,34389.18 33 | 08/01/1991,34637.01 34 | 09/01/1991,35092.11 35 | 10/01/1991,34735.17 36 | 11/01/1991,33201.77 37 | 12/01/1991,51760.84 38 | 01/01/1992,20078.4 39 | 02/01/1992,34596.86 40 | 03/01/1992,35220.07 41 | 04/01/1992,34564.35 42 | 05/01/1992,36778.06 43 | 06/01/1992,38882.75 44 | 07/01/1992,39468.25 45 | 08/01/1992,38713.5 46 | 09/01/1992,43817.01 47 | 10/01/1992,46250.72 48 | 11/01/1992,40400.87 49 | 12/01/1992,60642.61 50 | 01/01/1993,23663.65 51 | 02/01/1993,24400.76 52 | 03/01/1993,37879.2 53 | 04/01/1993,41884.14 54 | 05/01/1993,53541.03 55 | 06/01/1993,39528.52 56 | 07/01/1993,43131.16 57 | 08/01/1993,38643.97 58 | 09/01/1993,44413.45 59 | 10/01/1993,46639.55 60 | 11/01/1993,49281.79 61 | 12/01/1993,65196.81 62 | 01/01/1994,22513.18 63 | 02/01/1994,22573.29 64 | 03/01/1994,37414.13 65 | 04/01/1994,41151.05 66 | 05/01/1994,42418.67 67 | 06/01/1994,35911.73 68 | 07/01/1994,34901.72 69 | 08/01/1994,40581.52 70 | 09/01/1994,61179.2 71 | 10/01/1994,44547.37 72 | 11/01/1994,50375.31 73 | 12/01/1994,63823.61 74 | 01/01/1995,38327.12 75 | 02/01/1995,26802.52 76 | 03/01/1995,43726.64 77 | 04/01/1995,44153.56 78 | 05/01/1995,50111.22 79 | 06/01/1995,23246.3 80 | 07/01/1995,44048.71 81 | 08/01/1995,38977.73 82 | 09/01/1995,45705.63 83 | 10/01/1995,44370.37 84 | 11/01/1995,47942.89 85 | 12/01/1995,73918.34 86 | 01/01/1996,28182.68 87 | 02/01/1996,28526.25 88 | 03/01/1996,44341.36 89 | 04/01/1996,52901.81 90 | 05/01/1996,42483.37 91 | 06/01/1996,44115.29 92 | 07/01/1996,40648.21 93 | 08/01/1996,41637.65 94 | 09/01/1996,51194.98 95 | 10/01/1996,50884.34 96 | 11/01/1996,47875.82 97 | 12/01/1996,69112.81 98 | 01/01/1997,25647.49 99 | 02/01/1997,24421.91 100 | 03/01/1997,40030.11 101 | 04/01/1997,41055.37 102 | 05/01/1997,46385.56 103 | 06/01/1997,45873.16 104 | 07/01/1997,45480.15 105 | 08/01/1997,48561.86 106 | 09/01/1997,31578.77 107 | 10/01/1997,57673.57 108 | 11/01/1997,52061.74 109 | 12/01/1997,75818.17 110 | 01/01/1998,31267.58 111 | 02/01/1998,31514.68 112 | 03/01/1998,49715.25 113 | 04/01/1998,52026.07 114 | 05/01/1998,41038.75 115 | 06/01/1998,48329.36 116 | 07/01/1998,44961.98 117 | 08/01/1998,58660.76 118 | 09/01/1998,57791.14 119 | 10/01/1998,56329.4 120 | 11/01/1998,54617.35 121 | 12/01/1998,80245.97 122 | -------------------------------------------------------------------------------- /时间序列分析/论文.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/时间序列分析/论文.docx -------------------------------------------------------------------------------- /灰色关联分析/.ipynb_checkpoints/灰色关联分析代码-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 38, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import pandas as pd\n", 11 | "\n", 12 | "np.set_printoptions(suppress=True,precision=3)" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 39, 18 | "metadata": {}, 19 | "outputs": [ 20 | { 21 | "data": { 22 | "text/html": [ 23 | "
\n", 24 | "\n", 37 | "\n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | "
GDP第一产业第二产业第三产业
01988386839763
12061408846808
22335422960953
3275048212581010
4335651115771268
5380656118931352
\n", 92 | "
" 93 | ], 94 | "text/plain": [ 95 | " GDP 第一产业 第二产业 第三产业\n", 96 | "0 1988 386 839 763\n", 97 | "1 2061 408 846 808\n", 98 | "2 2335 422 960 953\n", 99 | "3 2750 482 1258 1010\n", 100 | "4 3356 511 1577 1268\n", 101 | "5 3806 561 1893 1352" 102 | ] 103 | }, 104 | "execution_count": 39, 105 | "metadata": {}, 106 | "output_type": "execute_result" 107 | } 108 | ], 109 | "source": [ 110 | "data = pd.read_csv('gdp.csv',header=None)\n", 111 | "data = data.rename({0:'GDP',1:'第一产业',2:'第二产业',3:'第三产业'},axis=1)\n", 112 | "data" 113 | ] 114 | }, 115 | { 116 | "cell_type": "code", 117 | "execution_count": 40, 118 | "metadata": {}, 119 | "outputs": [], 120 | "source": [ 121 | "x_mat = np.array(data)" 122 | ] 123 | }, 124 | { 125 | "cell_type": "code", 126 | "execution_count": 71, 127 | "metadata": {}, 128 | "outputs": [], 129 | "source": [ 130 | "## 定义函数求解关联度\n", 131 | "def gray_analysis(x,rho=0.5):\n", 132 | " x_mean = x.mean(axis=0)\n", 133 | " x = x/x_mean\n", 134 | " X = x[:,1:] #提取所有子序列\n", 135 | " Y = x[:,0].reshape(X.shape[0],1) #提取母序列\n", 136 | " abs_x0_xi = np.abs(X-Y)\n", 137 | " a = np.min(abs_x0_xi)\n", 138 | " b = np.max(abs_x0_xi)\n", 139 | " gamma_mat = (a+rho*b)/(abs_x0_xi+rho*b)\n", 140 | " corre_degree = np.mean(gamma_mat,axis=0)\n", 141 | " # print(gamma_mat)\n", 142 | " print(\"子序列中各个指标的灰色关联度分别为:\",corre_degree)\n", 143 | " return corre_degree" 144 | ] 145 | }, 146 | { 147 | "cell_type": "code", 148 | "execution_count": 72, 149 | "metadata": {}, 150 | "outputs": [ 151 | { 152 | "name": "stdout", 153 | "output_type": "stream", 154 | "text": [ 155 | "子序列中各个指标的灰色关联度分别为: [0.508 0.624 0.757]\n" 156 | ] 157 | }, 158 | { 159 | "data": { 160 | "text/plain": [ 161 | "array([0.508, 0.624, 0.757])" 162 | ] 163 | }, 164 | "execution_count": 72, 165 | "metadata": {}, 166 | "output_type": "execute_result" 167 | } 168 | ], 169 | "source": [ 170 | "gray_analysis(x_mat)" 171 | ] 172 | }, 173 | { 174 | "cell_type": "markdown", 175 | "metadata": {}, 176 | "source": [ 177 | "### 用于确定权重" 178 | ] 179 | }, 180 | { 181 | "cell_type": "code", 182 | "execution_count": 47, 183 | "metadata": {}, 184 | "outputs": [], 185 | "source": [ 186 | "class Topsis:\n", 187 | " def __init__(self,X,**typ):\n", 188 | " # 所有待转换的类型\n", 189 | " x_mat = X.copy()\n", 190 | " ctype = ['cmin','cmedian','crange']\n", 191 | " if typ:\n", 192 | " # 提取待转换类型及对应的列为一个新字典\n", 193 | " type_dic = dict([(t,typ[t]) for t in ctype if t in typ.keys()])\n", 194 | " position = sum(type_dic.values(),[])\n", 195 | "\n", 196 | " for col_wait_for_convert in position:\n", 197 | " convert_type = [k for k, v in typ.items() if col_wait_for_convert in v][0]\n", 198 | " current_index = typ[convert_type].index(col_wait_for_convert)\n", 199 | " if convert_type == 'cmedian':\n", 200 | " x_mat.iloc[:,col_wait_for_convert] = self.positivization(x_mat[col_wait_for_convert], convert_type,typ['best_median'][current_index])\n", 201 | " \n", 202 | " elif convert_type == 'crange':\n", 203 | " x_mat.iloc[:,col_wait_for_convert] = self.positivization(x_mat[col_wait_for_convert], convert_type,typ['best_range'][current_index])\n", 204 | " \n", 205 | " else:\n", 206 | " x_mat.iloc[:,col_wait_for_convert] = self.positivization(x_mat[col_wait_for_convert],convert_type)\n", 207 | " else:\n", 208 | " print('无需正向化')\n", 209 | " \n", 210 | " self.x_mat = x_mat\n", 211 | " \n", 212 | " def positivization(self, col ,t, best=None):\n", 213 | " if t == 'cmin':\n", 214 | " posit = col.max() - col\n", 215 | " return posit\n", 216 | " elif t == 'cmedian':\n", 217 | " m = max(abs(col - best))\n", 218 | " posit = 1 - abs(col - best) / m\n", 219 | " return posit\n", 220 | " else:\n", 221 | " posit = col\n", 222 | " t == 'crange'\n", 223 | " a,b = best\n", 224 | " m = max(np.append(a-min(col),max(col)-b))\n", 225 | " x_row = col.shape[0]\n", 226 | " for i in range(x_row):\n", 227 | " if col[i] < a:\n", 228 | " posit[i] = 1 - (a-col[i]) / m\n", 229 | " elif col[i] > b:\n", 230 | " posit[i] = 1 - (col[i]-b) / m\n", 231 | " else:\n", 232 | " posit[i] = 1\n", 233 | " return posit" 234 | ] 235 | }, 236 | { 237 | "cell_type": "code", 238 | "execution_count": 60, 239 | "metadata": {}, 240 | "outputs": [ 241 | { 242 | "data": { 243 | "text/html": [ 244 | "
\n", 245 | "\n", 258 | "\n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | "
0123
142.046.4023.017.91
52.396.7738.024.62
38.617.0546.026.43
178.298.4139.012.02
132.015.5547.026.31
\n", 306 | "
" 307 | ], 308 | "text/plain": [ 309 | " 0 1 2 3\n", 310 | "14 2.04 6.40 23.0 17.91\n", 311 | "5 2.39 6.77 38.0 24.62\n", 312 | "3 8.61 7.05 46.0 26.43\n", 313 | "17 8.29 8.41 39.0 12.02\n", 314 | "13 2.01 5.55 47.0 26.31" 315 | ] 316 | }, 317 | "execution_count": 60, 318 | "metadata": {}, 319 | "output_type": "execute_result" 320 | } 321 | ], 322 | "source": [ 323 | "river_data = pd.read_csv('river.csv',header=None)\n", 324 | "river_data.sample(5)" 325 | ] 326 | }, 327 | { 328 | "cell_type": "code", 329 | "execution_count": 61, 330 | "metadata": {}, 331 | "outputs": [], 332 | "source": [ 333 | "tp = Topsis(X=river_data,cmin=[2],cmedian=[1],best_median=[7],crange=[3],best_range=[[10,20]])" 334 | ] 335 | }, 336 | { 337 | "cell_type": "code", 338 | "execution_count": 103, 339 | "metadata": {}, 340 | "outputs": [], 341 | "source": [ 342 | "def score(processed_x, raw_data):\n", 343 | " after_processed = processed_x\n", 344 | " temp_mat = after_processed.copy()\n", 345 | " temp_mat = temp_mat / temp_mat.mean(axis=0)\n", 346 | " main_col = temp_mat.max(axis=1)\n", 347 | " temp_mat.insert(0,column='母序列',value=main_col)\n", 348 | " corr = gray_analysis(np.array(temp_mat))\n", 349 | " col_weight = corr / corr.sum()\n", 350 | " object_score = (raw_data * col_weight).sum(axis=1)\n", 351 | " standar_score = object_score / sum(object_score)\n", 352 | " return standar_score" 353 | ] 354 | }, 355 | { 356 | "cell_type": "code", 357 | "execution_count": 104, 358 | "metadata": {}, 359 | "outputs": [ 360 | { 361 | "name": "stdout", 362 | "output_type": "stream", 363 | "text": [ 364 | "子序列中各个指标的灰色关联度分别为: [0.646 0.607 0.525 0.647]\n" 365 | ] 366 | }, 367 | { 368 | "data": { 369 | "text/plain": [ 370 | "0 0.057808\n", 371 | "1 0.028172\n", 372 | "2 0.055168\n", 373 | "3 0.071119\n", 374 | "4 0.069670\n", 375 | "5 0.057809\n", 376 | "6 0.045839\n", 377 | "7 0.062283\n", 378 | "8 0.031623\n", 379 | "9 0.030902\n", 380 | "10 0.025951\n", 381 | "11 0.045317\n", 382 | "12 0.043471\n", 383 | "13 0.064533\n", 384 | "14 0.040179\n", 385 | "15 0.064298\n", 386 | "16 0.056917\n", 387 | "17 0.053891\n", 388 | "18 0.051634\n", 389 | "19 0.043416\n", 390 | "dtype: float64" 391 | ] 392 | }, 393 | "execution_count": 104, 394 | "metadata": {}, 395 | "output_type": "execute_result" 396 | } 397 | ], 398 | "source": [ 399 | "score(tp.x_mat,river_data)" 400 | ] 401 | }, 402 | { 403 | "cell_type": "code", 404 | "execution_count": null, 405 | "metadata": {}, 406 | "outputs": [], 407 | "source": [] 408 | } 409 | ], 410 | "metadata": { 411 | "kernelspec": { 412 | "display_name": "Python 3", 413 | "language": "python", 414 | "name": "python3" 415 | }, 416 | "language_info": { 417 | "codemirror_mode": { 418 | "name": "ipython", 419 | "version": 3 420 | }, 421 | "file_extension": ".py", 422 | "mimetype": "text/x-python", 423 | "name": "python", 424 | "nbconvert_exporter": "python", 425 | "pygments_lexer": "ipython3", 426 | "version": "3.7.6" 427 | }, 428 | "varInspector": { 429 | "cols": { 430 | "lenName": 16, 431 | "lenType": 16, 432 | "lenVar": 40 433 | }, 434 | "kernels_config": { 435 | "python": { 436 | "delete_cmd_postfix": "", 437 | "delete_cmd_prefix": "del ", 438 | "library": "var_list.py", 439 | "varRefreshCmd": "print(var_dic_list())" 440 | }, 441 | "r": { 442 | "delete_cmd_postfix": ") ", 443 | "delete_cmd_prefix": "rm(", 444 | "library": "var_list.r", 445 | "varRefreshCmd": "cat(var_dic_list()) " 446 | } 447 | }, 448 | "types_to_exclude": [ 449 | "module", 450 | "function", 451 | "builtin_function_or_method", 452 | "instance", 453 | "_Feature" 454 | ], 455 | "window_display": false 456 | } 457 | }, 458 | "nbformat": 4, 459 | "nbformat_minor": 4 460 | } 461 | -------------------------------------------------------------------------------- /灰色关联分析/gdp.csv: -------------------------------------------------------------------------------- 1 | 1988,386,839,763 2 | 2061,408,846,808 3 | 2335,422,960,953 4 | 2750,482,1258,1010 5 | 3356,511,1577,1268 6 | 3806,561,1893,1352 7 | -------------------------------------------------------------------------------- /灰色关联分析/river.csv: -------------------------------------------------------------------------------- 1 | 4.69 ,6.59 ,51.00 ,11.94 2 | 2.03 ,7.86 ,19.00 ,6.46 3 | 9.11 ,6.31 ,46.00 ,8.91 4 | 8.61 ,7.05 ,46.00 ,26.43 5 | 7.13 ,6.50 ,50.00 ,23.57 6 | 2.39 ,6.77 ,38.00 ,24.62 7 | 7.69 ,6.79 ,38.00 ,6.01 8 | 9.30 ,6.81 ,27.00 ,31.57 9 | 5.45 ,7.62 ,5.00 ,18.46 10 | 6.19 ,7.27 ,17.00 ,7.51 11 | 7.93 ,7.53 ,9.00 ,6.52 12 | 4.40 ,7.28 ,17.00 ,25.30 13 | 7.46 ,8.24 ,23.00 ,14.42 14 | 2.01 ,5.55 ,47.00 ,26.31 15 | 2.04 ,6.40 ,23.00 ,17.91 16 | 7.73 ,6.14 ,52.00 ,15.72 17 | 6.35 ,7.58 ,25.00 ,29.46 18 | 8.29 ,8.41 ,39.00 ,12.02 19 | 3.54 ,7.27 ,54.00 ,3.16 20 | 7.44 ,6.26 ,8.00 ,28.41 21 | -------------------------------------------------------------------------------- /灰色关联分析/灰色关联分析代码.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 38, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import pandas as pd\n", 11 | "\n", 12 | "np.set_printoptions(suppress=True,precision=3)" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 39, 18 | "metadata": {}, 19 | "outputs": [ 20 | { 21 | "data": { 22 | "text/html": [ 23 | "
\n", 24 | "\n", 37 | "\n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | "
GDP第一产业第二产业第三产业
01988386839763
12061408846808
22335422960953
3275048212581010
4335651115771268
5380656118931352
\n", 92 | "
" 93 | ], 94 | "text/plain": [ 95 | " GDP 第一产业 第二产业 第三产业\n", 96 | "0 1988 386 839 763\n", 97 | "1 2061 408 846 808\n", 98 | "2 2335 422 960 953\n", 99 | "3 2750 482 1258 1010\n", 100 | "4 3356 511 1577 1268\n", 101 | "5 3806 561 1893 1352" 102 | ] 103 | }, 104 | "execution_count": 39, 105 | "metadata": {}, 106 | "output_type": "execute_result" 107 | } 108 | ], 109 | "source": [ 110 | "data = pd.read_csv('gdp.csv',header=None)\n", 111 | "data = data.rename({0:'GDP',1:'第一产业',2:'第二产业',3:'第三产业'},axis=1)\n", 112 | "data" 113 | ] 114 | }, 115 | { 116 | "cell_type": "code", 117 | "execution_count": 40, 118 | "metadata": {}, 119 | "outputs": [], 120 | "source": [ 121 | "x_mat = np.array(data)" 122 | ] 123 | }, 124 | { 125 | "cell_type": "code", 126 | "execution_count": 71, 127 | "metadata": {}, 128 | "outputs": [], 129 | "source": [ 130 | "## 定义函数求解关联度\n", 131 | "def gray_analysis(x,rho=0.5):\n", 132 | " x_mean = x.mean(axis=0)\n", 133 | " x = x/x_mean\n", 134 | " X = x[:,1:] #提取所有子序列\n", 135 | " Y = x[:,0].reshape(X.shape[0],1) #提取母序列\n", 136 | " abs_x0_xi = np.abs(X-Y)\n", 137 | " a = np.min(abs_x0_xi)\n", 138 | " b = np.max(abs_x0_xi)\n", 139 | " gamma_mat = (a+rho*b)/(abs_x0_xi+rho*b)\n", 140 | " corre_degree = np.mean(gamma_mat,axis=0)\n", 141 | " # print(gamma_mat)\n", 142 | " print(\"子序列中各个指标的灰色关联度分别为:\",corre_degree)\n", 143 | " return corre_degree" 144 | ] 145 | }, 146 | { 147 | "cell_type": "code", 148 | "execution_count": 72, 149 | "metadata": {}, 150 | "outputs": [ 151 | { 152 | "name": "stdout", 153 | "output_type": "stream", 154 | "text": [ 155 | "子序列中各个指标的灰色关联度分别为: [0.508 0.624 0.757]\n" 156 | ] 157 | }, 158 | { 159 | "data": { 160 | "text/plain": [ 161 | "array([0.508, 0.624, 0.757])" 162 | ] 163 | }, 164 | "execution_count": 72, 165 | "metadata": {}, 166 | "output_type": "execute_result" 167 | } 168 | ], 169 | "source": [ 170 | "gray_analysis(x_mat)" 171 | ] 172 | }, 173 | { 174 | "cell_type": "markdown", 175 | "metadata": {}, 176 | "source": [ 177 | "### 用于确定权重" 178 | ] 179 | }, 180 | { 181 | "cell_type": "code", 182 | "execution_count": 47, 183 | "metadata": {}, 184 | "outputs": [], 185 | "source": [ 186 | "class Topsis:\n", 187 | " def __init__(self,X,**typ):\n", 188 | " # 所有待转换的类型\n", 189 | " x_mat = X.copy()\n", 190 | " ctype = ['cmin','cmedian','crange']\n", 191 | " if typ:\n", 192 | " # 提取待转换类型及对应的列为一个新字典\n", 193 | " type_dic = dict([(t,typ[t]) for t in ctype if t in typ.keys()])\n", 194 | " position = sum(type_dic.values(),[])\n", 195 | "\n", 196 | " for col_wait_for_convert in position:\n", 197 | " convert_type = [k for k, v in typ.items() if col_wait_for_convert in v][0]\n", 198 | " current_index = typ[convert_type].index(col_wait_for_convert)\n", 199 | " if convert_type == 'cmedian':\n", 200 | " x_mat.iloc[:,col_wait_for_convert] = self.positivization(x_mat[col_wait_for_convert], convert_type,typ['best_median'][current_index])\n", 201 | " \n", 202 | " elif convert_type == 'crange':\n", 203 | " x_mat.iloc[:,col_wait_for_convert] = self.positivization(x_mat[col_wait_for_convert], convert_type,typ['best_range'][current_index])\n", 204 | " \n", 205 | " else:\n", 206 | " x_mat.iloc[:,col_wait_for_convert] = self.positivization(x_mat[col_wait_for_convert],convert_type)\n", 207 | " else:\n", 208 | " print('无需正向化')\n", 209 | " \n", 210 | " self.x_mat = x_mat\n", 211 | " \n", 212 | " def positivization(self, col ,t, best=None):\n", 213 | " if t == 'cmin':\n", 214 | " posit = col.max() - col\n", 215 | " return posit\n", 216 | " elif t == 'cmedian':\n", 217 | " m = max(abs(col - best))\n", 218 | " posit = 1 - abs(col - best) / m\n", 219 | " return posit\n", 220 | " else:\n", 221 | " posit = col\n", 222 | " t == 'crange'\n", 223 | " a,b = best\n", 224 | " m = max(np.append(a-min(col),max(col)-b))\n", 225 | " x_row = col.shape[0]\n", 226 | " for i in range(x_row):\n", 227 | " if col[i] < a:\n", 228 | " posit[i] = 1 - (a-col[i]) / m\n", 229 | " elif col[i] > b:\n", 230 | " posit[i] = 1 - (col[i]-b) / m\n", 231 | " else:\n", 232 | " posit[i] = 1\n", 233 | " return posit" 234 | ] 235 | }, 236 | { 237 | "cell_type": "code", 238 | "execution_count": 60, 239 | "metadata": {}, 240 | "outputs": [ 241 | { 242 | "data": { 243 | "text/html": [ 244 | "
\n", 245 | "\n", 258 | "\n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | "
0123
142.046.4023.017.91
52.396.7738.024.62
38.617.0546.026.43
178.298.4139.012.02
132.015.5547.026.31
\n", 306 | "
" 307 | ], 308 | "text/plain": [ 309 | " 0 1 2 3\n", 310 | "14 2.04 6.40 23.0 17.91\n", 311 | "5 2.39 6.77 38.0 24.62\n", 312 | "3 8.61 7.05 46.0 26.43\n", 313 | "17 8.29 8.41 39.0 12.02\n", 314 | "13 2.01 5.55 47.0 26.31" 315 | ] 316 | }, 317 | "execution_count": 60, 318 | "metadata": {}, 319 | "output_type": "execute_result" 320 | } 321 | ], 322 | "source": [ 323 | "river_data = pd.read_csv('river.csv',header=None)\n", 324 | "river_data.sample(5)" 325 | ] 326 | }, 327 | { 328 | "cell_type": "code", 329 | "execution_count": 61, 330 | "metadata": {}, 331 | "outputs": [], 332 | "source": [ 333 | "tp = Topsis(X=river_data,cmin=[2],cmedian=[1],best_median=[7],crange=[3],best_range=[[10,20]])" 334 | ] 335 | }, 336 | { 337 | "cell_type": "code", 338 | "execution_count": 103, 339 | "metadata": {}, 340 | "outputs": [], 341 | "source": [ 342 | "def score(processed_x, raw_data):\n", 343 | " after_processed = processed_x\n", 344 | " temp_mat = after_processed.copy()\n", 345 | " temp_mat = temp_mat / temp_mat.mean(axis=0)\n", 346 | " main_col = temp_mat.max(axis=1)\n", 347 | " temp_mat.insert(0,column='母序列',value=main_col)\n", 348 | " corr = gray_analysis(np.array(temp_mat))\n", 349 | " col_weight = corr / corr.sum()\n", 350 | " object_score = (raw_data * col_weight).sum(axis=1)\n", 351 | " standar_score = object_score / sum(object_score)\n", 352 | " return standar_score" 353 | ] 354 | }, 355 | { 356 | "cell_type": "code", 357 | "execution_count": 104, 358 | "metadata": {}, 359 | "outputs": [ 360 | { 361 | "name": "stdout", 362 | "output_type": "stream", 363 | "text": [ 364 | "子序列中各个指标的灰色关联度分别为: [0.646 0.607 0.525 0.647]\n" 365 | ] 366 | }, 367 | { 368 | "data": { 369 | "text/plain": [ 370 | "0 0.057808\n", 371 | "1 0.028172\n", 372 | "2 0.055168\n", 373 | "3 0.071119\n", 374 | "4 0.069670\n", 375 | "5 0.057809\n", 376 | "6 0.045839\n", 377 | "7 0.062283\n", 378 | "8 0.031623\n", 379 | "9 0.030902\n", 380 | "10 0.025951\n", 381 | "11 0.045317\n", 382 | "12 0.043471\n", 383 | "13 0.064533\n", 384 | "14 0.040179\n", 385 | "15 0.064298\n", 386 | "16 0.056917\n", 387 | "17 0.053891\n", 388 | "18 0.051634\n", 389 | "19 0.043416\n", 390 | "dtype: float64" 391 | ] 392 | }, 393 | "execution_count": 104, 394 | "metadata": {}, 395 | "output_type": "execute_result" 396 | } 397 | ], 398 | "source": [ 399 | "score(tp.x_mat,river_data)" 400 | ] 401 | }, 402 | { 403 | "cell_type": "code", 404 | "execution_count": null, 405 | "metadata": {}, 406 | "outputs": [], 407 | "source": [] 408 | } 409 | ], 410 | "metadata": { 411 | "kernelspec": { 412 | "display_name": "Python 3", 413 | "language": "python", 414 | "name": "python3" 415 | }, 416 | "language_info": { 417 | "codemirror_mode": { 418 | "name": "ipython", 419 | "version": 3 420 | }, 421 | "file_extension": ".py", 422 | "mimetype": "text/x-python", 423 | "name": "python", 424 | "nbconvert_exporter": "python", 425 | "pygments_lexer": "ipython3", 426 | "version": "3.7.6" 427 | }, 428 | "varInspector": { 429 | "cols": { 430 | "lenName": 16, 431 | "lenType": 16, 432 | "lenVar": 40 433 | }, 434 | "kernels_config": { 435 | "python": { 436 | "delete_cmd_postfix": "", 437 | "delete_cmd_prefix": "del ", 438 | "library": "var_list.py", 439 | "varRefreshCmd": "print(var_dic_list())" 440 | }, 441 | "r": { 442 | "delete_cmd_postfix": ") ", 443 | "delete_cmd_prefix": "rm(", 444 | "library": "var_list.r", 445 | "varRefreshCmd": "cat(var_dic_list()) " 446 | } 447 | }, 448 | "types_to_exclude": [ 449 | "module", 450 | "function", 451 | "builtin_function_or_method", 452 | "instance", 453 | "_Feature" 454 | ], 455 | "window_display": false 456 | } 457 | }, 458 | "nbformat": 4, 459 | "nbformat_minor": 4 460 | } 461 | -------------------------------------------------------------------------------- /灰色预测/cotton.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/灰色预测/cotton.xlsx -------------------------------------------------------------------------------- /灰色预测/data.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/灰色预测/data.xlsx -------------------------------------------------------------------------------- /相关性分析/eighth_girl.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/相关性分析/eighth_girl.xlsx -------------------------------------------------------------------------------- /相关性分析/eigth_boy.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/相关性分析/eigth_boy.xls -------------------------------------------------------------------------------- /相关性分析/p_val_pearson.csv: -------------------------------------------------------------------------------- 1 | ,身高,体重,肺活量,50米跑,立定跳远,坐位体前屈 2 | 身高,0.0,0.10614197026622907,9.066891105358054e-08,2.581548416966038e-06,0.28585626875658643,0.02080470262004141 3 | 体重,0.10614197026622907,0.0,0.02039562278315146,0.0959782968435863,0.4977724851851414,0.6962903396004592 4 | 肺活量,9.066891105358054e-08,0.02039562278315146,0.0,6.782431192851182e-13,0.546921454252721,0.06871150830838281 5 | 50米跑,2.581548416966038e-06,0.0959782968435863,6.782431192851182e-13,0.0,0.15422216011075027,0.9636933353447623 6 | 立定跳远,0.28585626875658643,0.4977724851851414,0.546921454252721,0.15422216011075027,0.0,0.6728061356298345 7 | 坐位体前屈,0.02080470262004141,0.6962903396004592,0.06871150830838281,0.9636933353447623,0.6728061356298345,0.0 8 | -------------------------------------------------------------------------------- /相关性分析/p_val_spearman.csv: -------------------------------------------------------------------------------- 1 | ,身高,体重,肺活量,50米跑,立定跳远,坐位体前屈 2 | 身高,0.0,0.3464259620223935,0.0028097596600144296,0.561907596671565,0.07236379510240203,0.0036236540682287022 3 | 体重,0.3464259620223935,0.0,0.10347803588186315,0.5989499479471382,0.001164544237225069,0.10329602308476299 4 | 肺活量,0.0028097596600144296,0.10347803588186315,0.0,0.461502530583933,0.21594237429816526,0.3550804629443375 5 | 50米跑,0.561907596671565,0.5989499479471382,0.461502530583933,0.0,0.4163507652643822,0.2019753341412802 6 | 立定跳远,0.07236379510240203,0.0011645442372250666,0.21594237429816526,0.4163507652643822,0.0,0.8823141159110288 7 | 坐位体前屈,0.0036236540682287022,0.10329602308476299,0.3550804629443375,0.2019753341412802,0.8823141159110288,0.0 8 | -------------------------------------------------------------------------------- /相关性分析/相关性分析论文.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/相关性分析/相关性分析论文.docx -------------------------------------------------------------------------------- /聚类/.ipynb_checkpoints/forest-checkpoint.csv: -------------------------------------------------------------------------------- 1 | 国别,森林覆盖率(%),林木蓄积量(亿立方米),草原面积(万公顷) 2 | 中国,12.5,93.5,31908 3 | 美国,30.4,202.0,23754 4 | 日本,67.2,24.8,58 5 | 德国,28.4,14.0,599 6 | 英国,8.6,1.5,1147 7 | 法国,26.7,16.0,1288 8 | 意大利,21.1,3.6,514 9 | 加拿大,32.7,192.8,2385 10 | 澳大利亚,13.9,10.5,45190 11 | 前苏联,41.1,841.5,37370 12 | 捷克,35.8,8.9,168 13 | 波兰,27.8,11.4,405 14 | 匈牙利,17.4,2.5,129 15 | 南斯拉夫,36.3,11.4,640 16 | 罗马尼亚,26.7,11.3,447 17 | 保加利亚,34.7,2.5,200 18 | 印度,20.5,29.0,1200 19 | 印尼,84.0,33.7,1200 20 | 尼日利亚,16.1,0.8,2090 21 | 墨西哥,24.6,32.6,7450 22 | 巴西,67.6,238.0,15900 23 | -------------------------------------------------------------------------------- /聚类/.ipynb_checkpoints/tmp-checkpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/聚类/.ipynb_checkpoints/tmp-checkpoint.png -------------------------------------------------------------------------------- /聚类/cost_data.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/聚类/cost_data.xlsx -------------------------------------------------------------------------------- /聚类/forest.csv: -------------------------------------------------------------------------------- 1 | 国别,森林覆盖率(%),林木蓄积量(亿立方米),草原面积(万公顷) 2 | 中国,12.5,93.5,31908 3 | 美国,30.4,202.0,23754 4 | 日本,67.2,24.8,58 5 | 德国,28.4,14.0,599 6 | 英国,8.6,1.5,1147 7 | 法国,26.7,16.0,1288 8 | 意大利,21.1,3.6,514 9 | 加拿大,32.7,192.8,2385 10 | 澳大利亚,13.9,10.5,45190 11 | 前苏联,41.1,841.5,37370 12 | 捷克,35.8,8.9,168 13 | 波兰,27.8,11.4,405 14 | 匈牙利,17.4,2.5,129 15 | 南斯拉夫,36.3,11.4,640 16 | 罗马尼亚,26.7,11.3,447 17 | 保加利亚,34.7,2.5,200 18 | 印度,20.5,29.0,1200 19 | 印尼,84.0,33.7,1200 20 | 尼日利亚,16.1,0.8,2090 21 | 墨西哥,24.6,32.6,7450 22 | 巴西,67.6,238.0,15900 23 | -------------------------------------------------------------------------------- /聚类/mydata.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/聚类/mydata.mat -------------------------------------------------------------------------------- /聚类/tmp: -------------------------------------------------------------------------------- 1 | digraph { 2 | node [shape=box] 3 | edge [labeldistance=10.5] 4 | 0 [label="Has feathers?"] 5 | 1 [label="Can fly?"] 6 | 2 [label="Has fins?"] 7 | 3 [label=Hawk] 8 | 4 [label=Penguin] 9 | 5 [label=Dolphin] 10 | 6 [label=Bear] 11 | 0 -> 1 [label=True] 12 | 0 -> 2 [label=False] 13 | 1 -> 3 [label=True] 14 | 1 -> 4 [label=False] 15 | 2 -> 5 [label=True] 16 | 2 -> 6 [label=False] 17 | } 18 | -------------------------------------------------------------------------------- /聚类/tmp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/聚类/tmp.png -------------------------------------------------------------------------------- /聚类/聚类论文.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lanrzip/Mathematical-Modeling/995670d6e5226f98eea94a435fa97afb1827c572/聚类/聚类论文.docx -------------------------------------------------------------------------------- /蒙特卡洛/.ipynb_checkpoints/导弹追踪-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import matplotlib.pyplot as plt\n", 10 | "import PyQt5\n", 11 | "import numpy as np\n", 12 | "%matplotlib qt5" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 9, 18 | "metadata": {}, 19 | "outputs": [ 20 | { 21 | "name": "stdout", 22 | "output_type": "stream", 23 | "text": [ 24 | "导弹射中\n", 25 | "导弹飞行时间为: 166.81680000009246 秒\n", 26 | "击中时船的坐标[26.55318280532808,6.553182805328081]\n" 27 | ] 28 | } 29 | ], 30 | "source": [ 31 | "v = 200 # 定义速度v\n", 32 | "dt = 0.000001 # 定义间隔时间\n", 33 | "x = [0,20] # 导弹、船的初始横坐标\n", 34 | "y = [0,0] # 导弹、船的初始纵坐标\n", 35 | "t = 0 # 初始化导弹飞行时间\n", 36 | "d = 0 # 初始化导弹飞行距离\n", 37 | "m = (2**0.5) / 2 #二分之根号二\n", 38 | "dd = ((x[1]-x[0])**2+(y[1]-y[0])**2) ** 0.5 # 导弹与船间的距离\n", 39 | "plt.xlim((0, 30)) # 固定横坐标轴\n", 40 | "plt.ylim((0, 10)) # 固定纵坐标轴\n", 41 | "plt.scatter(x[0], y[0], s=20)\n", 42 | "plt.scatter(x[1], y[1], s=20)\n", 43 | "k = 0\n", 44 | "while dd >= 0.001: # 假定当导弹与船的距离小于0.001则代表击中\n", 45 | " t += dt\n", 46 | " d += 3*v*dt\n", 47 | " x[1] = 20 + t*v*m # 更新船的坐标\n", 48 | " y[1] = t*v*m\n", 49 | " dd = ((x[1]-x[0])**2+(y[1]-y[0])**2) ** 0.5 # 更新两者间的距离\n", 50 | " tan_alpha = (y[1]-y[0]) / (x[1]-x[0]) # tanα\n", 51 | " cos_alpha = (1 / (1 + tan_alpha**2)) ** 0.5 # cosα\n", 52 | " sin_alpha = (1-cos_alpha**2) ** 0.5 # sinα\n", 53 | " # 更新导弹坐标\n", 54 | " x[0] = x[0] + 3*v*dt*cos_alpha\n", 55 | " y[0] = y[0] + 3*v*dt*sin_alpha\n", 56 | " k += 1\n", 57 | " if k % 1000 == 0: # 每执行1000次循环画一次图\n", 58 | " plt.scatter(x[0], y[0], s=5)\n", 59 | " plt.scatter(x[1], y[1], s=5)\n", 60 | " plt.pause(0.000001) # 暂停间隔\n", 61 | " if d > 50:\n", 62 | " print('没有击中')\n", 63 | " break\n", 64 | " if d <= 50 and dd < 0.001:\n", 65 | " print('导弹射中')\n", 66 | " print('导弹飞行时间为:',t*3600,'秒')\n", 67 | " print('击中时船的坐标[{0},{1}]'.format(x[1],y[1]))" 68 | ] 69 | }, 70 | { 71 | "cell_type": "code", 72 | "execution_count": null, 73 | "metadata": {}, 74 | "outputs": [], 75 | "source": [] 76 | } 77 | ], 78 | "metadata": { 79 | "kernelspec": { 80 | "display_name": "Python 3", 81 | "language": "python", 82 | "name": "python3" 83 | }, 84 | "language_info": { 85 | "codemirror_mode": { 86 | "name": "ipython", 87 | "version": 3 88 | }, 89 | "file_extension": ".py", 90 | "mimetype": "text/x-python", 91 | "name": "python", 92 | "nbconvert_exporter": "python", 93 | "pygments_lexer": "ipython3", 94 | "version": "3.7.6" 95 | } 96 | }, 97 | "nbformat": 4, 98 | "nbformat_minor": 4 99 | } 100 | -------------------------------------------------------------------------------- /蒙特卡洛/.ipynb_checkpoints/排队服务-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 13, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "from scipy.stats import expon, norm" 11 | ] 12 | }, 13 | { 14 | "cell_type": "markdown", 15 | "metadata": {}, 16 | "source": [ 17 | "假设某银⾏⼯作时间只有⼀个服务窗⼝,⼯作⼈员只能逐个的接待顾客。当来的顾客较多时,⼀部分顾客就需要排队等待。\n", 18 | "假设:\n", 19 | "- 1) 顾客到来的间隔时间服从参数为$0.1$的指数分布 \n", 20 | "- 2) 每个顾客的服务时间服从均值为10,⽅差为4的正态分布(单位为分钟,若服务时间⼩于1分钟,则按1分钟计算)\n", 21 | "- 3) 排队按先到先服务的规则,且不限制队伍的⻓度,每天⼯作时⻓为8⼩时。\n", 22 | "\n", 23 | "试回答下⾯的问题: \n", 24 | "- 1) 模拟⼀个⼯作⽇,在这个⼯作⽇共接待了多少客户,客户平均等待的时间为多少? \n", 25 | "- 2) 模拟100个⼯作⽇,计算出平均每⽇接待客户的个数以及每⽇客户的平均等待时⻓。" 26 | ] 27 | }, 28 | { 29 | "cell_type": "markdown", 30 | "metadata": {}, 31 | "source": [ 32 | "引入符号:\n", 33 | "- $c_i$:第$i$个顾客到达的时间\n", 34 | "- $b_i$:第$i$个顾客开始服务的时间\n", 35 | "- $e_i$:第$i$个顾客结束服务的时间\n", 36 | "\n", 37 | "从而,第$i$个顾客等待的时间为$b_i-c_i$\n", 38 | "\n", 39 | "题目中的假设可以得到:\n", 40 | "- 第$i-1$个顾客和第$i$个顾客到达的时间间隔$x_i$~$E\\left( 0.1 \\right)$\n", 41 | "- 第$i$个顾客服务持续的时间$y_i$~$N(10,4)$(若$y_i<1$,则令$y_i=1$)\n", 42 | "\n", 43 | "进一步:\n", 44 | "- $c_i=c_{i-1}+x_i$($c_0=0$)\n", 45 | "- $e_i=b_i+y_i$($e_0=0$)\n", 46 | "- $b_i=max(c_i,e_{i-1})$($b_1=c_1$)" 47 | ] 48 | }, 49 | { 50 | "cell_type": "code", 51 | "execution_count": 19, 52 | "metadata": {}, 53 | "outputs": [ 54 | { 55 | "name": "stdout", 56 | "output_type": "stream", 57 | "text": [ 58 | "共服务了42人\n", 59 | "平均等待时间为: 0.4520486056120968\n" 60 | ] 61 | } 62 | ], 63 | "source": [ 64 | "# 初始化向量与初值\n", 65 | "i = 1\n", 66 | "w = 0\n", 67 | "e = np.zeros(100)\n", 68 | "c = np.zeros(100)\n", 69 | "b = np.zeros(100)\n", 70 | "x = np.zeros(100)\n", 71 | "y= np.zeros(100)\n", 72 | "wait = np.zeros(100)\n", 73 | "# 假想第0个人的各参数均为0\n", 74 | "e[0] = 0\n", 75 | "c[0] =0\n", 76 | "b[0] = 0\n", 77 | "x[0] = 0\n", 78 | "y[0] = 0\n", 79 | "wait[0] = 0\n", 80 | "x[1] = expon.rvs(10)\n", 81 | "c[1] = c[0] + x[1]\n", 82 | "b[1] = c[1]\n", 83 | "while b[i] <= 480: # 限定条件,工作8小时\n", 84 | " y[i] = norm.rvs(loc=10, scale=2, size=1) # 服务持续时间\n", 85 | " if y[i] < 1:\n", 86 | " y[i] = 1\n", 87 | " e[i] = b[i] + y[i] # 第i个人的结束时间\n", 88 | " wait[i] = b[i] - c[i] # 第i个人的等待时间\n", 89 | " w += wait[i]\n", 90 | " i += 1\n", 91 | " x[i] = expon.rvs(10) # 下一个人与上一个人的到达时间间隔\n", 92 | " c[i] = c[i-1] + x[i] # 下一个人的到达时间\n", 93 | " b[i] = max(c[i], e[i-1]) # 下一个人的开始时间\n", 94 | "n = i-1\n", 95 | "print('共服务了{}人'.format(n))\n", 96 | "print('平均等待时间为:',w/n)" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": null, 102 | "metadata": {}, 103 | "outputs": [], 104 | "source": [] 105 | } 106 | ], 107 | "metadata": { 108 | "kernelspec": { 109 | "display_name": "Python 3", 110 | "language": "python", 111 | "name": "python3" 112 | }, 113 | "language_info": { 114 | "codemirror_mode": { 115 | "name": "ipython", 116 | "version": 3 117 | }, 118 | "file_extension": ".py", 119 | "mimetype": "text/x-python", 120 | "name": "python", 121 | "nbconvert_exporter": "python", 122 | "pygments_lexer": "ipython3", 123 | "version": "3.7.6" 124 | } 125 | }, 126 | "nbformat": 4, 127 | "nbformat_minor": 4 128 | } 129 | -------------------------------------------------------------------------------- /蒙特卡洛/导弹追踪.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import matplotlib.pyplot as plt\n", 10 | "import PyQt5\n", 11 | "import numpy as np\n", 12 | "%matplotlib qt5" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 9, 18 | "metadata": {}, 19 | "outputs": [ 20 | { 21 | "name": "stdout", 22 | "output_type": "stream", 23 | "text": [ 24 | "导弹射中\n", 25 | "导弹飞行时间为: 166.81680000009246 秒\n", 26 | "击中时船的坐标[26.55318280532808,6.553182805328081]\n" 27 | ] 28 | } 29 | ], 30 | "source": [ 31 | "v = 200 # 定义速度v\n", 32 | "dt = 0.000001 # 定义间隔时间\n", 33 | "x = [0,20] # 导弹、船的初始横坐标\n", 34 | "y = [0,0] # 导弹、船的初始纵坐标\n", 35 | "t = 0 # 初始化导弹飞行时间\n", 36 | "d = 0 # 初始化导弹飞行距离\n", 37 | "m = (2**0.5) / 2 #二分之根号二\n", 38 | "dd = ((x[1]-x[0])**2+(y[1]-y[0])**2) ** 0.5 # 导弹与船间的距离\n", 39 | "plt.xlim((0, 30)) # 固定横坐标轴\n", 40 | "plt.ylim((0, 10)) # 固定纵坐标轴\n", 41 | "plt.scatter(x[0], y[0], s=20)\n", 42 | "plt.scatter(x[1], y[1], s=20)\n", 43 | "k = 0\n", 44 | "while dd >= 0.001: # 假定当导弹与船的距离小于0.001则代表击中\n", 45 | " t += dt\n", 46 | " d += 3*v*dt\n", 47 | " x[1] = 20 + t*v*m # 更新船的坐标\n", 48 | " y[1] = t*v*m\n", 49 | " dd = ((x[1]-x[0])**2+(y[1]-y[0])**2) ** 0.5 # 更新两者间的距离\n", 50 | " tan_alpha = (y[1]-y[0]) / (x[1]-x[0]) # tanα\n", 51 | " cos_alpha = (1 / (1 + tan_alpha**2)) ** 0.5 # cosα\n", 52 | " sin_alpha = (1-cos_alpha**2) ** 0.5 # sinα\n", 53 | " # 更新导弹坐标\n", 54 | " x[0] = x[0] + 3*v*dt*cos_alpha\n", 55 | " y[0] = y[0] + 3*v*dt*sin_alpha\n", 56 | " k += 1\n", 57 | " if k % 1000 == 0: # 每执行1000次循环画一次图\n", 58 | " plt.scatter(x[0], y[0], s=5)\n", 59 | " plt.scatter(x[1], y[1], s=5)\n", 60 | " plt.pause(0.000001) # 暂停间隔\n", 61 | " if d > 50:\n", 62 | " print('没有击中')\n", 63 | " break\n", 64 | " if d <= 50 and dd < 0.001:\n", 65 | " print('导弹射中')\n", 66 | " print('导弹飞行时间为:',t*3600,'秒')\n", 67 | " print('击中时船的坐标[{0},{1}]'.format(x[1],y[1]))" 68 | ] 69 | }, 70 | { 71 | "cell_type": "code", 72 | "execution_count": null, 73 | "metadata": {}, 74 | "outputs": [], 75 | "source": [] 76 | } 77 | ], 78 | "metadata": { 79 | "kernelspec": { 80 | "display_name": "Python 3", 81 | "language": "python", 82 | "name": "python3" 83 | }, 84 | "language_info": { 85 | "codemirror_mode": { 86 | "name": "ipython", 87 | "version": 3 88 | }, 89 | "file_extension": ".py", 90 | "mimetype": "text/x-python", 91 | "name": "python", 92 | "nbconvert_exporter": "python", 93 | "pygments_lexer": "ipython3", 94 | "version": "3.7.7" 95 | } 96 | }, 97 | "nbformat": 4, 98 | "nbformat_minor": 4 99 | } 100 | -------------------------------------------------------------------------------- /蒙特卡洛/排队服务.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 13, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "from scipy.stats import expon, norm" 11 | ] 12 | }, 13 | { 14 | "cell_type": "markdown", 15 | "metadata": {}, 16 | "source": [ 17 | "假设某银⾏⼯作时间只有⼀个服务窗⼝,⼯作⼈员只能逐个的接待顾客。当来的顾客较多时,⼀部分顾客就需要排队等待。\n", 18 | "假设:\n", 19 | "- 1) 顾客到来的间隔时间服从参数为$0.1$的指数分布 \n", 20 | "- 2) 每个顾客的服务时间服从均值为10,⽅差为4的正态分布(单位为分钟,若服务时间⼩于1分钟,则按1分钟计算)\n", 21 | "- 3) 排队按先到先服务的规则,且不限制队伍的⻓度,每天⼯作时⻓为8⼩时。\n", 22 | "\n", 23 | "试回答下⾯的问题: \n", 24 | "- 1) 模拟⼀个⼯作⽇,在这个⼯作⽇共接待了多少客户,客户平均等待的时间为多少? \n", 25 | "- 2) 模拟100个⼯作⽇,计算出平均每⽇接待客户的个数以及每⽇客户的平均等待时⻓。" 26 | ] 27 | }, 28 | { 29 | "cell_type": "markdown", 30 | "metadata": {}, 31 | "source": [ 32 | "引入符号:\n", 33 | "- $c_i$:第$i$个顾客到达的时间\n", 34 | "- $b_i$:第$i$个顾客开始服务的时间\n", 35 | "- $e_i$:第$i$个顾客结束服务的时间\n", 36 | "\n", 37 | "从而,第$i$个顾客等待的时间为$b_i-c_i$\n", 38 | "\n", 39 | "题目中的假设可以得到:\n", 40 | "- 第$i-1$个顾客和第$i$个顾客到达的时间间隔$x_i$~$E\\left( 0.1 \\right)$\n", 41 | "- 第$i$个顾客服务持续的时间$y_i$~$N(10,4)$(若$y_i<1$,则令$y_i=1$)\n", 42 | "\n", 43 | "进一步:\n", 44 | "- $c_i=c_{i-1}+x_i$($c_0=0$)\n", 45 | "- $e_i=b_i+y_i$($e_0=0$)\n", 46 | "- $b_i=max(c_i,e_{i-1})$($b_1=c_1$)" 47 | ] 48 | }, 49 | { 50 | "cell_type": "code", 51 | "execution_count": 19, 52 | "metadata": {}, 53 | "outputs": [ 54 | { 55 | "name": "stdout", 56 | "output_type": "stream", 57 | "text": [ 58 | "共服务了42人\n", 59 | "平均等待时间为: 0.4520486056120968\n" 60 | ] 61 | } 62 | ], 63 | "source": [ 64 | "# 初始化向量与初值\n", 65 | "i = 1\n", 66 | "w = 0\n", 67 | "e = np.zeros(100)\n", 68 | "c = np.zeros(100)\n", 69 | "b = np.zeros(100)\n", 70 | "x = np.zeros(100)\n", 71 | "y= np.zeros(100)\n", 72 | "wait = np.zeros(100)\n", 73 | "# 假想第0个人的各参数均为0\n", 74 | "e[0] = 0\n", 75 | "c[0] =0\n", 76 | "b[0] = 0\n", 77 | "x[0] = 0\n", 78 | "y[0] = 0\n", 79 | "wait[0] = 0\n", 80 | "x[1] = expon.rvs(10)\n", 81 | "c[1] = c[0] + x[1]\n", 82 | "b[1] = c[1]\n", 83 | "while b[i] <= 480: # 限定条件,工作8小时\n", 84 | " y[i] = norm.rvs(loc=10, scale=2, size=1) # 服务持续时间\n", 85 | " if y[i] < 1:\n", 86 | " y[i] = 1\n", 87 | " e[i] = b[i] + y[i] # 第i个人的结束时间\n", 88 | " wait[i] = b[i] - c[i] # 第i个人的等待时间\n", 89 | " w += wait[i]\n", 90 | " i += 1\n", 91 | " x[i] = expon.rvs(10) # 下一个人与上一个人的到达时间间隔\n", 92 | " c[i] = c[i-1] + x[i] # 下一个人的到达时间\n", 93 | " b[i] = max(c[i], e[i-1]) # 下一个人的开始时间\n", 94 | "n = i-1\n", 95 | "print('共服务了{}人'.format(n))\n", 96 | "print('平均等待时间为:',w/n)" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": null, 102 | "metadata": {}, 103 | "outputs": [], 104 | "source": [] 105 | } 106 | ], 107 | "metadata": { 108 | "kernelspec": { 109 | "display_name": "Python 3", 110 | "language": "python", 111 | "name": "python3" 112 | }, 113 | "language_info": { 114 | "codemirror_mode": { 115 | "name": "ipython", 116 | "version": 3 117 | }, 118 | "file_extension": ".py", 119 | "mimetype": "text/x-python", 120 | "name": "python", 121 | "nbconvert_exporter": "python", 122 | "pygments_lexer": "ipython3", 123 | "version": "3.7.6" 124 | } 125 | }, 126 | "nbformat": 4, 127 | "nbformat_minor": 4 128 | } 129 | --------------------------------------------------------------------------------