meteva

提供气象产品检验相关python程序


表格型检验产品

<p>[TOC]</p> <pre><code class="language-python">%matplotlib inline %load_ext autoreload %autoreload 2 import meteva.method as mem import numpy as np</code></pre> <pre><code>The autoreload extension is already loaded. To reload it, use: %reload_ext autoreload</code></pre> <p><strong><em>通过随机函数生成测试数据,用于后续检验函数调用示例</em></strong></p> <pre><code class="language-python">ob = (np.random.rand(20) * 10).astype(np.int8) fo = (np.random.rand(2,20) * 10).astype(np.int8) grade_list = [3,5]</code></pre> <pre><code class="language-python">ob</code></pre> <pre><code>array([4, 7, 4, 1, 5, 0, 1, 4, 1, 8, 5, 0, 6, 2, 0, 0, 9, 3, 0, 8], dtype=int8)</code></pre> <pre><code class="language-python">fo</code></pre> <pre><code>array([[8, 2, 9, 4, 8, 4, 4, 1, 6, 9, 3, 5, 7, 4, 4, 5, 8, 0, 4, 8], [1, 4, 9, 0, 3, 2, 1, 3, 8, 8, 3, 3, 8, 4, 3, 1, 0, 3, 2, 7]], dtype=int8)</code></pre> <h1>列联表</h1> <p><strong><font face="黑体" color=blue size = 5>contingency_table_multicategory(ob, fo,grade_list=None, member_list=None, save_path=None)</font></strong><br /> 统计观测和预报分别为各种类别时对应的样本数 </p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>ob</font></strong></td> <td style="text-align: left;">实况数据, 任意维numpy数组</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>fo</font></strong></td> <td style="text-align: left;">fo比Ob.shape多一维或者保持一致,fo.shape低维与ob.shape保持一致</td> </tr> <tr> <td style="text-align: left;"><strong>grade_list</strong></td> <td style="text-align: left;">如果该参数为None,观测或预报值出现过的值都作为分类标记,如果该参数不为None,它必须是一个从小到大排列的实数,以其中列出的数值划分出的多个区间作为分类标签。对于预报和观测值不为整数的情况,grade_list 不能设置为None</td> </tr> <tr> <td style="text-align: left;"><strong>member_list</strong></td> <td style="text-align: left;">个预报成员的名称列表</td> </tr> <tr> <td style="text-align: left;"><strong>save_path</strong></td> <td style="text-align: left;">如果该参数不为None,则混淆矩阵将会以excel文件形式保存到指定文件</td> </tr> <tr> <td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td> <td style="text-align: left;">如果Fo和Ob的shape一致(即只有一种预报),返回内容为混淆矩阵的二维数组,shape为(类别数 + 1)×(类别数 + 1),如果Fo比Ob高出一维,则返回3维数组,shape为预报种类数据 ×(类别数 + 1)×(类别数 + 1)</td> </tr> </tbody> </table> <p><strong>调用示例:</strong> </p> <pre><code class="language-python">#单个预报成员的检验,不设置等级参数的情况下,默认每一种数值都代表一种类别 result= mem.contingency_table_multicategory(ob,fo[0,:], save_path = r"H:\test_data\output\method\multi_catagory\ct1.xlsx")</code></pre> <pre><code>列联表已以excel表格形式保存至H:\test_data\output\method\multi_catagory\ct1.xlsx</code></pre> <pre><code class="language-python">result.shape #当只有一个预报成员时返回结果的shape</code></pre> <pre><code>(11, 11)</code></pre> <p>运行结果excel表格的截图将是如下样式</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/e8919e13ac8c39776cd06dd900288b23?showdoc=.jpg" alt="" /></p> <pre><code class="language-python">#预报比观测高出一维时,返回3维数组 result= mem.contingency_table_multicategory(ob,fo,member_list = ["GRAPES","ECMWF"], save_path = r"H:\test_data\output\method\multi_catagory\ct2.xlsx")</code></pre> <pre><code>列联表已以excel表格形式保存至H:\test_data\output\method\multi_catagory\ct2.xlsx</code></pre> <pre><code class="language-python">result.shape</code></pre> <pre><code>(2, 11, 11)</code></pre> <p>运行结果excel表格的截图将是如下样式,其中包含两个sheet部分GRAPES和ECMWF:</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/bfec71a524b0a42dbae0df549ae29169?showdoc=.jpg" alt="" /></p> <pre><code class="language-python">result = mem.contingency_table_multicategory(ob,fo,grade_list=grade_list,member_list = ["GRAPES","ECMWF"], save_path = r"H:\test_data\output\method\multi_catagory\ct3.xlsx")</code></pre> <pre><code>列联表已以excel表格形式保存至H:\test_data\output\method\multi_catagory\ct3.xlsx</code></pre> <pre><code class="language-python">result.shape</code></pre> <pre><code>(2, 4, 4)</code></pre> <p>在上述示例中,grade_list =[3,5],它将实数分割为3个区间,运行结果excel表格的截图将是如下样式:</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/95ca734863aa0fbfaa458c9c0c2f0c72?showdoc=.jpg" alt="" /></p> <h1>频率表</h1> <p><strong><font face="黑体" color=blue size = 5>frequency_table(ob,fo,grade_list=None,member_list = None, save_path=None)</font></strong><br /> 统计观测和预报分别为各种类别的样本数 </p> <table> <thead> <tr> <th style="text-align: left;">参数</th> <th style="text-align: left;">说明</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>ob</font></strong></td> <td style="text-align: left;">实况数据, 任意维numpy数组</td> </tr> <tr> <td style="text-align: left;"><strong><font face="黑体" color=blue size = 5>fo</font></strong></td> <td style="text-align: left;">比Ob.shape多一维或者保持一致,Fo.shape低维与ob.shape保持一致</td> </tr> <tr> <td style="text-align: left;"><strong>grade_list</strong></td> <td style="text-align: left;">阈值列表</td> </tr> <tr> <td style="text-align: left;"><strong>member_list</strong></td> <td style="text-align: left;">个预报成员的名称列表</td> </tr> <tr> <td style="text-align: left;"><strong>save_path</strong></td> <td style="text-align: left;">如果该参数不为None,则混淆矩阵将会以excel文件形式保存到指定文件</td> </tr> <tr> <td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td> <td style="text-align: left;">返回numpy数组,shape为(预报种类 + 1)×(类别数 + 1)</td> </tr> </tbody> </table> <p><strong>调用示例:</strong> </p> <pre><code class="language-python">result = mem.frequency_table(ob,fo,grade_list=grade_list,member_list = ["GRAPES","ECMWF"], save_path = r"H:\test_data\output\method\multi_catagory\ct4.xlsx")</code></pre> <pre><code>列联表已以excel表格形式保存至H:\test_data\output\method\multi_catagory\ct4.xlsx</code></pre> <pre><code class="language-python">result.shape</code></pre> <pre><code>(3, 3)</code></pre> <p>运行结果excel表格的截图将是如下样式</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/7d7b3ae8e570dd00bf41f053b80dcf99?showdoc=.jpg" alt="" /></p> <pre><code class="language-python"></code></pre>

页面列表

ITEM_HTML