658 lines
20 KiB
Plaintext
658 lines
20 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 题目\n",
|
||
"1.现有两台服务器(S1, S2) ,都会单向向用户 U 传送数据。服务器 S1 和 S2 之间也会有数据通讯,但无法确定它们之间的数据流向。数据包的传送只取两种可能值:T=1 ( 成功 ) 或 F=2 ( 失败 )。假设贝叶斯网络由S1、S2和U这三个节点构成,现采集了100条该网络的数据传送样本,如文件 server_data.txt 所给出。该文件中,每行代表一个三节点网络的样本, 试利用贝叶斯算法学习得到该网络的结构和参数。( 30分 )"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 参考资料\n",
|
||
"参考学习网址 https://blog.csdn.net/leida_wt/article/details/88743323\n",
|
||
"\n",
|
||
"自动设计网络结构的核心问题有两个,一个是评价网络好坏的指标,另一个是查找的方法。穷举是不可取的,因为组合数太大,只能是利用各种启发式方法或是限定搜索条件以减少搜索空间,因此产生两大类方法,Score-based Structure Learning与constraint-based structure learning 以及他们的结合hybrid structure learning。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.433710Z",
|
||
"start_time": "2019-12-29T02:45:08.854096Z"
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"from pgmpy.models import BayesianModel\n",
|
||
"from pgmpy.estimators import MaximumLikelihoodEstimator, BayesianEstimator\n",
|
||
"from pgmpy.estimators import BdeuScore, K2Score, BicScore\n",
|
||
"import matplotlib.pyplot as plt"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.452516Z",
|
||
"start_time": "2019-12-29T02:45:11.433710Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>S1</th>\n",
|
||
" <th>S2</th>\n",
|
||
" <th>U</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>95</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>96</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>97</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>98</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>99</th>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>100 rows × 3 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" S1 S2 U\n",
|
||
"0 1 2 1\n",
|
||
"1 2 2 2\n",
|
||
"2 2 1 1\n",
|
||
"3 2 1 1\n",
|
||
"4 2 1 1\n",
|
||
".. .. .. ..\n",
|
||
"95 2 1 1\n",
|
||
"96 2 1 1\n",
|
||
"97 2 1 1\n",
|
||
"98 2 1 1\n",
|
||
"99 2 1 1\n",
|
||
"\n",
|
||
"[100 rows x 3 columns]"
|
||
]
|
||
},
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"data_list = []\n",
|
||
"with open('server_data.txt') as f:\n",
|
||
" lines = f.readlines()\n",
|
||
" for line in lines:\n",
|
||
" data_list.append(line.strip().split())\n",
|
||
"data_list = np.array(data_list, dtype=np.int32)\n",
|
||
"data = pd.DataFrame(data_list, columns=['S1', 'S2', 'U'])\n",
|
||
"data"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.459497Z",
|
||
"start_time": "2019-12-29T02:45:11.454480Z"
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"def showBN(model, save=False):\n",
|
||
" '''传入BayesianModel对象,调用graphviz绘制结构图,jupyter中可直接显示'''\n",
|
||
" from graphviz import Digraph\n",
|
||
" node_attr = dict(\n",
|
||
" style='filled',\n",
|
||
" shape='box',\n",
|
||
" align='left',\n",
|
||
" fontsize='12',\n",
|
||
" ranksep='0.1',\n",
|
||
" height='0.2'\n",
|
||
" )\n",
|
||
" dot = Digraph(node_attr=node_attr, graph_attr=dict(size=\"12,12\"))\n",
|
||
" seen = set()\n",
|
||
" edges = model.edges()\n",
|
||
" for a, b in edges:\n",
|
||
" dot.edge(a, b)\n",
|
||
" if save:\n",
|
||
" dot.view(cleanup=True)\n",
|
||
" return dot"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 根据题目要求分别定义出两种可能的网络"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.608070Z",
|
||
"start_time": "2019-12-29T02:45:11.461462Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/svg+xml": [
|
||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n",
|
||
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
|
||
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
|
||
"<!-- Generated by graphviz version 2.38.0 (20140413.2041)\r\n",
|
||
" -->\r\n",
|
||
"<!-- Title: %3 Pages: 1 -->\r\n",
|
||
"<svg width=\"90pt\" height=\"143pt\"\r\n",
|
||
" viewBox=\"0.00 0.00 90.00 143.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
|
||
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 139)\">\r\n",
|
||
"<title>%3</title>\r\n",
|
||
"<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-139 86,-139 86,4 -4,4\"/>\r\n",
|
||
"<!-- S1 -->\r\n",
|
||
"<g id=\"node1\" class=\"node\"><title>S1</title>\r\n",
|
||
"<polygon fill=\"lightgrey\" stroke=\"black\" points=\"54,-135 0,-135 0,-114 54,-114 54,-135\"/>\r\n",
|
||
"<text text-anchor=\"middle\" x=\"27\" y=\"-121.4\" font-family=\"Times New Roman,serif\" font-size=\"12.00\">S1</text>\r\n",
|
||
"</g>\r\n",
|
||
"<!-- U -->\r\n",
|
||
"<g id=\"node2\" class=\"node\"><title>U</title>\r\n",
|
||
"<polygon fill=\"lightgrey\" stroke=\"black\" points=\"54,-21 0,-21 0,-0 54,-0 54,-21\"/>\r\n",
|
||
"<text text-anchor=\"middle\" x=\"27\" y=\"-7.4\" font-family=\"Times New Roman,serif\" font-size=\"12.00\">U</text>\r\n",
|
||
"</g>\r\n",
|
||
"<!-- S1->U -->\r\n",
|
||
"<g id=\"edge1\" class=\"edge\"><title>S1->U</title>\r\n",
|
||
"<path fill=\"none\" stroke=\"black\" d=\"M24.7894,-113.802C22.8203,-104.634 20.0874,-90.4646 19,-78 18.1888,-68.702 18.1888,-66.298 19,-57 19.7476,-48.4306 21.2729,-39.0555 22.7931,-31.0538\"/>\r\n",
|
||
"<polygon fill=\"black\" stroke=\"black\" points=\"26.2344,-31.6942 24.7894,-21.1984 19.3737,-30.3045 26.2344,-31.6942\"/>\r\n",
|
||
"</g>\r\n",
|
||
"<!-- S2 -->\r\n",
|
||
"<g id=\"node3\" class=\"node\"><title>S2</title>\r\n",
|
||
"<polygon fill=\"lightgrey\" stroke=\"black\" points=\"82,-78 28,-78 28,-57 82,-57 82,-78\"/>\r\n",
|
||
"<text text-anchor=\"middle\" x=\"55\" y=\"-64.4\" font-family=\"Times New Roman,serif\" font-size=\"12.00\">S2</text>\r\n",
|
||
"</g>\r\n",
|
||
"<!-- S1->S2 -->\r\n",
|
||
"<g id=\"edge2\" class=\"edge\"><title>S1->S2</title>\r\n",
|
||
"<path fill=\"none\" stroke=\"black\" d=\"M31.8772,-113.92C35.6053,-106.597 40.8621,-96.2709 45.4216,-87.3147\"/>\r\n",
|
||
"<polygon fill=\"black\" stroke=\"black\" points=\"48.5723,-88.8404 49.9901,-78.3408 42.3342,-85.6646 48.5723,-88.8404\"/>\r\n",
|
||
"</g>\r\n",
|
||
"<!-- S2->U -->\r\n",
|
||
"<g id=\"edge3\" class=\"edge\"><title>S2->U</title>\r\n",
|
||
"<path fill=\"none\" stroke=\"black\" d=\"M50.1228,-56.9197C46.3947,-49.5967 41.1379,-39.2709 36.5784,-30.3147\"/>\r\n",
|
||
"<polygon fill=\"black\" stroke=\"black\" points=\"39.6658,-28.6646 32.0099,-21.3408 33.4277,-31.8404 39.6658,-28.6646\"/>\r\n",
|
||
"</g>\r\n",
|
||
"</g>\r\n",
|
||
"</svg>\r\n"
|
||
],
|
||
"text/plain": [
|
||
"<graphviz.dot.Digraph at 0x17515213780>"
|
||
]
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"model_1 = BayesianModel([('S1', 'U'), ('S2', 'U'), ('S1', 'S2')])\n",
|
||
"model_1.fit(data)\n",
|
||
"showBN(model_1)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.709798Z",
|
||
"start_time": "2019-12-29T02:45:11.609066Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/svg+xml": [
|
||
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n",
|
||
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
|
||
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
|
||
"<!-- Generated by graphviz version 2.38.0 (20140413.2041)\r\n",
|
||
" -->\r\n",
|
||
"<!-- Title: %3 Pages: 1 -->\r\n",
|
||
"<svg width=\"89pt\" height=\"143pt\"\r\n",
|
||
" viewBox=\"0.00 0.00 89.00 143.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
|
||
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 139)\">\r\n",
|
||
"<title>%3</title>\r\n",
|
||
"<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-139 85,-139 85,4 -4,4\"/>\r\n",
|
||
"<!-- S1 -->\r\n",
|
||
"<g id=\"node1\" class=\"node\"><title>S1</title>\r\n",
|
||
"<polygon fill=\"lightgrey\" stroke=\"black\" points=\"54,-78 0,-78 0,-57 54,-57 54,-78\"/>\r\n",
|
||
"<text text-anchor=\"middle\" x=\"27\" y=\"-64.4\" font-family=\"Times New Roman,serif\" font-size=\"12.00\">S1</text>\r\n",
|
||
"</g>\r\n",
|
||
"<!-- U -->\r\n",
|
||
"<g id=\"node2\" class=\"node\"><title>U</title>\r\n",
|
||
"<polygon fill=\"lightgrey\" stroke=\"black\" points=\"81,-21 27,-21 27,-0 81,-0 81,-21\"/>\r\n",
|
||
"<text text-anchor=\"middle\" x=\"54\" y=\"-7.4\" font-family=\"Times New Roman,serif\" font-size=\"12.00\">U</text>\r\n",
|
||
"</g>\r\n",
|
||
"<!-- S1->U -->\r\n",
|
||
"<g id=\"edge1\" class=\"edge\"><title>S1->U</title>\r\n",
|
||
"<path fill=\"none\" stroke=\"black\" d=\"M31.703,-56.9197C35.2597,-49.6746 40.2593,-39.4903 44.6231,-30.601\"/>\r\n",
|
||
"<polygon fill=\"black\" stroke=\"black\" points=\"47.9041,-31.8599 49.169,-21.3408 41.6204,-28.7751 47.9041,-31.8599\"/>\r\n",
|
||
"</g>\r\n",
|
||
"<!-- S2 -->\r\n",
|
||
"<g id=\"node3\" class=\"node\"><title>S2</title>\r\n",
|
||
"<polygon fill=\"lightgrey\" stroke=\"black\" points=\"81,-135 27,-135 27,-114 81,-114 81,-135\"/>\r\n",
|
||
"<text text-anchor=\"middle\" x=\"54\" y=\"-121.4\" font-family=\"Times New Roman,serif\" font-size=\"12.00\">S2</text>\r\n",
|
||
"</g>\r\n",
|
||
"<!-- S2->S1 -->\r\n",
|
||
"<g id=\"edge3\" class=\"edge\"><title>S2->S1</title>\r\n",
|
||
"<path fill=\"none\" stroke=\"black\" d=\"M49.297,-113.92C45.7403,-106.675 40.7407,-96.4903 36.3769,-87.601\"/>\r\n",
|
||
"<polygon fill=\"black\" stroke=\"black\" points=\"39.3796,-85.7751 31.831,-78.3408 33.0959,-88.8599 39.3796,-85.7751\"/>\r\n",
|
||
"</g>\r\n",
|
||
"<!-- S2->U -->\r\n",
|
||
"<g id=\"edge2\" class=\"edge\"><title>S2->U</title>\r\n",
|
||
"<path fill=\"none\" stroke=\"black\" d=\"M56.4864,-113.819C58.7013,-104.663 61.7754,-90.5018 63,-78 63.9099,-68.7111 63.9099,-66.2889 63,-57 62.1581,-48.405 60.442,-39.0257 58.7319,-31.0279\"/>\r\n",
|
||
"<polygon fill=\"black\" stroke=\"black\" points=\"62.1223,-30.1528 56.4864,-21.1813 55.2975,-31.7092 62.1223,-30.1528\"/>\r\n",
|
||
"</g>\r\n",
|
||
"</g>\r\n",
|
||
"</svg>\r\n"
|
||
],
|
||
"text/plain": [
|
||
"<graphviz.dot.Digraph at 0x175152c2128>"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"model_2 = BayesianModel([('S1', 'U'), ('S2', 'U'), ('S2', 'S1')])\n",
|
||
"model_2.fit(data)\n",
|
||
"showBN(model_2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 评分函数,使用k2,bdeu,bic进行评分"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.715781Z",
|
||
"start_time": "2019-12-29T02:45:11.710794Z"
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"bdeu = BdeuScore(data, equivalent_sample_size=5)\n",
|
||
"k2 = K2Score(data)\n",
|
||
"bic = BicScore(data)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.775621Z",
|
||
"start_time": "2019-12-29T02:45:11.716779Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"-127.81019191674014\n",
|
||
"-130.82411202574002\n",
|
||
"-129.03972756462477\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(bdeu.score(model_1))\n",
|
||
"print(k2.score(model_1))\n",
|
||
"print(bic.score(model_1))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.811526Z",
|
||
"start_time": "2019-12-29T02:45:11.777617Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"-127.81019191674014\n",
|
||
"-130.99837093511061\n",
|
||
"-129.0397275646248\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(bdeu.score(model_2))\n",
|
||
"print(k2.score(model_2))\n",
|
||
"print(bic.score(model_2))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.818531Z",
|
||
"start_time": "2019-12-29T02:45:11.812523Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"False"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"bdeu.score(model_1)>bdeu.score(model_2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.826510Z",
|
||
"start_time": "2019-12-29T02:45:11.819504Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"True"
|
||
]
|
||
},
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"k2.score(model_1)>k2.score(model_2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.837484Z",
|
||
"start_time": "2019-12-29T02:45:11.827483Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"True"
|
||
]
|
||
},
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"bic.score(model_1)>bic.score(model_2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 查看模型的概率转移表"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.845461Z",
|
||
"start_time": "2019-12-29T02:45:11.838453Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"+-------+------+\n",
|
||
"| S1(1) | 0.28 |\n",
|
||
"+-------+------+\n",
|
||
"| S1(2) | 0.72 |\n",
|
||
"+-------+------+\n",
|
||
"+-------+---------------------+-------+\n",
|
||
"| S1 | S1(1) | S1(2) |\n",
|
||
"+-------+---------------------+-------+\n",
|
||
"| S2(1) | 0.17857142857142858 | 0.75 |\n",
|
||
"+-------+---------------------+-------+\n",
|
||
"| S2(2) | 0.8214285714285714 | 0.25 |\n",
|
||
"+-------+---------------------+-------+\n",
|
||
"+------+-------+-------+-------+-------+\n",
|
||
"| S1 | S1(1) | S1(1) | S1(2) | S1(2) |\n",
|
||
"+------+-------+-------+-------+-------+\n",
|
||
"| S2 | S2(1) | S2(2) | S2(1) | S2(2) |\n",
|
||
"+------+-------+-------+-------+-------+\n",
|
||
"| U(1) | 0.0 | 1.0 | 1.0 | 0.0 |\n",
|
||
"+------+-------+-------+-------+-------+\n",
|
||
"| U(2) | 1.0 | 0.0 | 0.0 | 1.0 |\n",
|
||
"+------+-------+-------+-------+-------+\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(model_1.get_cpds('S1'))\n",
|
||
"print(model_1.get_cpds('S2'))\n",
|
||
"print(model_1.get_cpds('U'))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2019-12-29T02:45:11.854410Z",
|
||
"start_time": "2019-12-29T02:45:11.846432Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"+-------+--------------------+---------------------+\n",
|
||
"| S2 | S2(1) | S2(2) |\n",
|
||
"+-------+--------------------+---------------------+\n",
|
||
"| S1(1) | 0.0847457627118644 | 0.5609756097560976 |\n",
|
||
"+-------+--------------------+---------------------+\n",
|
||
"| S1(2) | 0.9152542372881356 | 0.43902439024390244 |\n",
|
||
"+-------+--------------------+---------------------+\n",
|
||
"+-------+------+\n",
|
||
"| S2(1) | 0.59 |\n",
|
||
"+-------+------+\n",
|
||
"| S2(2) | 0.41 |\n",
|
||
"+-------+------+\n",
|
||
"+------+-------+-------+-------+-------+\n",
|
||
"| S1 | S1(1) | S1(1) | S1(2) | S1(2) |\n",
|
||
"+------+-------+-------+-------+-------+\n",
|
||
"| S2 | S2(1) | S2(2) | S2(1) | S2(2) |\n",
|
||
"+------+-------+-------+-------+-------+\n",
|
||
"| U(1) | 0.0 | 1.0 | 1.0 | 0.0 |\n",
|
||
"+------+-------+-------+-------+-------+\n",
|
||
"| U(2) | 1.0 | 0.0 | 0.0 | 1.0 |\n",
|
||
"+------+-------+-------+-------+-------+\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(model_2.get_cpds('S1'))\n",
|
||
"print(model_2.get_cpds('S2'))\n",
|
||
"print(model_2.get_cpds('U'))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 结论\n",
|
||
"分数差距不是很大,说明对这组数据来说,题目假定的两种网络的区分度不够高,说明这两种网络的结构可能性都很大。"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "tensorflow",
|
||
"language": "python",
|
||
"name": "tensorflow"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.6.8"
|
||
},
|
||
"latex_envs": {
|
||
"LaTeX_envs_menu_present": true,
|
||
"autoclose": false,
|
||
"autocomplete": true,
|
||
"bibliofile": "biblio.bib",
|
||
"cite_by": "apalike",
|
||
"current_citInitial": 1,
|
||
"eqLabelWithNumbers": true,
|
||
"eqNumInitial": 1,
|
||
"hotkeys": {
|
||
"equation": "Ctrl-E",
|
||
"itemize": "Ctrl-I"
|
||
},
|
||
"labels_anchors": false,
|
||
"latex_user_defs": false,
|
||
"report_style_numbering": false,
|
||
"user_envs_cfg": false
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|