第三方做网站,wordpress后台演示系统,网站免费推广的方法,有没有免费推广平台1、概率论基础知识介绍
人工智能项目本质上是一个统计学项目#xff0c;是通过对 样本 的分析#xff0c;来评估/估计 总体 的情况#xff0c;与数学知识相关联 高等数学 —— 模型优化 概率论与数理统计 —— 建模思想 线性代数 —— 高性能计算
在机器学…1、概率论基础知识介绍
人工智能项目本质上是一个统计学项目是通过对 样本 的分析来评估/估计 总体 的情况与数学知识相关联 高等数学 —— 模型优化 概率论与数理统计 —— 建模思想 线性代数 —— 高性能计算
在机器学习中许多算法都是基于概率模型进行构建的这些模型使用概率来描述数据生成过程从而能够对数据进行预测和分类例如
朴素贝叶斯分类器基于贝叶斯定理使用概率来预测数据点的类别逻辑回归虽然通常被视为线性分类器但它本质上是一个概率模型输出的是数据点属于某个类别的概率隐马尔可夫模型HMMs使用概率来描述状态转换和观测序列
所以我们需要先了解概率论相关基础知识为下面理解贝叶斯算法原理打下基础
1.1 概率与频率
在实际操作中直接计算或得知某个事件的精确概率可能是困难的或不可能的而频率作为一个可观测、可计算的量为我们提供了一种近似估计概率的方法
1.1.1 定义 概率probability又称或然率、置信度 是数学中描述某个事件发生的可能性的量度是一个理论上的度量它通常是一个介于0和1之间的实数其中0表示事件几乎不可能发生1表示事件几乎肯定会发生 频率frequency 是实际观测或实验中某一事件发生的次数与总试验次数之比它是一个经验度量反映了在一系列试验中事件实际发生的次数
1.1.2 用频率估概率 大数定律大数定律是概率论中的一个基本定理它指出当试验次数足够多时事件发生的频率将趋近于其真实概率这意味着随着试验次数的增加频率作为概率的估计会越来越准确 实际应用在实际应用中尤其是数据科学和机器学习领域我们经常使用频率来估计概率例如在训练模型时我们可能使用大量数据来估计某个特征值出现的概率 数据量与估计准确性数据量越大频率估计的准确性通常越高这是因为大数定律保证了频率随试验次数增加而趋于稳定
1.1.3 工程实践中的处理 数据驱动的决策在工程实践中尤其是在数据量很大的情况下我们经常直接使用频率作为概率的替代这种方法在处理大量数据时尤其有效因为大数定律确保了估计的稳定性和可靠性 模型训练在机器学习模型训练中我们通常使用大量数据来估计模型参数这些参数的概率分布往往通过频率来估计 统计推断统计推断中频率也被用来估计总体参数例如样本均值的分布可以用来估计总体均值
1.1.4 注意事项 有限样本偏差在样本量较小的情况下频率可能不是概率的良好估计因为小样本更易受到随机波动的影响 数据质量数据的质量和代表性也会影响频率估计的准确性数据集中的偏差或不准确可能导致估计结果不可靠
1.2 概率的基本特性 非负性 概率的非负性是指任何事件发生的概率都不会是负数即 规范性 概率的规范性或归一性是指在一个完整样本空间内所有可能事件的概率之和等于1。这适用于所有可能的事件集合包括所有可能的单一事件和它们的组合。对于一个包含所有可能结果的样本空间存在 其中表示样本空间中的第个事件是事件的总数 单调性如果事件即当事件 A 发生时事件 B 也同样会发生那么 可加性对于两个互斥事件 A 和 B 即它们不能同时发生存在 连续性对于一系列事件如果这些事件是互斥的并且覆盖了整个样本空间那么对于任意事件包含在这些事件中的概率可以通过极限来定义
1.3 概率的计算方法
1.3.1 离散型变量
(1)特点 有限个状态状态之间无大小、程度等概念状态之间是严格对立的
(2)示例
鸢尾花有山鸢尾、杂色鸢尾、长鞘鸢尾等不同类型的品种交通信号灯有红、绿、黄不同的颜色人类有男、女不同的性别骰子有1、2、3、4、5、6不同的点数
(3)编码 连续型变量是指有限个状态而状态大多数不是数值类型的数据不易进行处理所以需要对其进行编码编码就是为了将非数值型数据转换为机器学习算法可以处理的数值型数据方便进行处理
离散型变量的常用编码方法分为Zero index编码和One hot编码这两种 ①Zero Index编码 也称为索引编码或标签编码是一种将类别变量转换为从0开始的连续整数的方法每个类别被赋予一个唯一的整数标签。 特点 简单实现简单易于理解和操作。 连续性编码是连续的从0开始但这种连续性并不代表类别之间的任何顺序或等级关系。 大小无内涵编码的大小没有数学意义例如编码为1和编码为4的类别是平等的它们之间没有内在的比较意义。
应用场景 适用于那些类别之间没有顺序或等级关系的情况。 常用于机器学习模型中如决策树、随机森林等。 ②One Hot编码 也称为一位有效编码是一种将类别变量转换为二进制向量的方法每个类别都分别由一个长度等于类别数的向量表示并且在此向量中只有一个位置为1其余位置均为0。 特点 向量表示每个类别由一个唯一的二进制向量表示向量中的1表示该类别的存在。 平等性所有类别在向量空间中是平等的没有大小或顺序之分。 无序性One Hot编码不包含任何类别之间的顺序或等级信息。
应用场景 适用于需要明确区分类别且类别之间没有顺序或等级关系的情况。 常用于自然语言处理、推荐系统、神经网络等场景。 ③示例 假设有一个数据集包含三个类别苹果、香蕉、樱桃则使用这两种编码方式可以表示如下 Zero Index编码 苹果0 香蕉1 樱桃2
One Hot编码 苹果[1, 0, 0] 香蕉[0, 1, 0] 樱桃[0, 0, 1]
(4)计算方法 先转换为频率然后数个数
示例求iris数据集中三种鸢尾花出现的概率
# 引入load_iris获取鸢尾花数据集
from sklearn.datasets import load_iris
X, y load_iris(return_X_yTrue)# 查看所有y值可以发现分别用0、1、2这三个编码代表了三种鸢尾花类型
print(y)# 求概率(可以发现在这个数据集中三种鸢尾花出现的概率都是1/3非常均衡属于一个理想的数据集)
P0 (y 0).mean()
P1 (y 1).mean()
P2 (y 2).mean()print(f标签编码为0的鸢尾花出现的概率为{P0})
print(f标签编码为1的鸢尾花出现的概率为{P1})
print(f标签编码为2的鸢尾花出现的概率为{P2})
1.3.2 连续型变量
(1)特点 无限个数值数值之间有大小、程度等差异数值之间的内涵是一致的
(2)例如
一个人的身高是一个连续变量可以是 1.75 米、1.76 米、1.77 米等一个人的体重也是一个连续变量可以有无数个可能的值气温是一个连续变量可以是 23.5 度、23.6 度、23.7 度等商品的价格是一个连续变量可以有小数点后的值一个人每天花费在上班通勤上的时间是一个连续变量可以是 30.5 分钟、31 分钟、31.5 分钟等
(3)编码 连续型变量通常不需要像离散型变量那样的编码因为它们已经是数值型可以直接用于大多数机器学习算法。然而在某些情况下对连续型变量进行特定的处理或转换可能是有益的这些处理包括 归一化Normalization将数据缩放到一个特定的范围通常是 [0, 1]或者转换为具有零均值和单位方差的形式这有助于加快学习算法的收敛速度并提高模型的性能 标准化Standardization将数据转换为均值为 0标准差为 1 的形式这种方法对于假设数据分布为正态分布的算法如线性回归、逻辑回归等尤其重要 离散化Discretization将连续变量分割成若干个区间或桶将其转换为离散型变量这在某些分类任务中可能有用尤其是当连续变量的每个区间对预测结果有明显区别时 特征工程通过数学变换如对数变换、平方根变换等来改善模型的性能或者创建新的特征这些新特征可能更好地捕捉数据中的模式 异常值处理识别并处理异常值因为极端的数值可能会对模型的性能产生负面影响 降维使用主成分分析PCA或其他方法来减少数据的维度同时尽可能保留原始数据的信息
(4)计算方法 通过对概率密度函数PDF,Probability Density Function的积分来求解
概率密度函数是概率的导数概率是概率密度函数的积分
①计算步骤理论数学 先找到概率密度函数在概率论和统计学中有多种类型的概率密度函数用于描述不同类型连续型随机变量的概率分布高斯分布函数就是其中的一种 再对概率密度函数求积分
高斯分布函数也称为正态分布函数是特定形式的一种概率密度函数它描述了正态分布的变量的概率密度其公式如下其中μ是均值可以用mean方法计算得出σ是标准差可以用std方法计算得出 用matplotlib绘制高斯函数的图像
# 引入numpy为高斯分布函数提供π、e的值
import numpy as np
# 引入matplotlib的pyplot函数为绘图做准备
from matplotlib import pyplot as plt
# 如果是用pycharm等后端工具绘图需要指定图形用户界面工具包
# import matplotlib
# matplotlib.use(TkAgg) # 设置绘图后端为 TkAgg# 从-5到5等差数列生成100个x均分点
x np.linspace(start-5, stop5, num100)
# 创建高斯分布函数设定返回结果为高斯分布函数的方程式
def normal(x, mu0, sigma1):# np.pi即为圆周率πnp.exp即为数学常数ereturn 1 / (((2 * np.pi) ** 0.5) * sigma) * np.exp(-((x - mu) ** 2) / (2 * (sigma ** 2)))
# 用plot方法折线图label是图线的标签
plt.plot(x, normal(x, mu0, sigma1), label$\mu0,\sigma 1$)
plt.plot(x, normal(x, mu1, sigma1), label$\mu1,\sigma 1$)
plt.plot(x, normal(x, mu0, sigma2), label$\mu0,\sigma 2$)
# 用grid方法显示图像网格
plt.grid()
# 用legend方法显示图线的标签
plt.legend()
# 用show方法显示图表
plt.show()
绘制出来的图像如下图所示(在任何一点的概率都是0但中间的概率明显应该比两边的概率大所以理论数学的计算是不可行的)
②计算步骤工程数学 直接把连续型变量的分布看作是高斯分布 直接拿概率密度函数的值代替概率 示例根据一天中每个小时的温度来计算22摄氏度出现的概率
# 引入numpy创建高斯分布函数并返回函数的值
import numpy as np
def gauss(x, mu, sigma):return 1/(np.sqrt(2*np.pi)*sigma) * np.exp(-(x - mu)**2 / (2*sigma**2))# 采样一天中24小时的温度数据
temperature np.array([10, 9, 8, 7, 6, 5, 6, 7, 9, 12, 15, 18, 20, 22, 23, 22, 21, 19, 17, 15, 13, 11, 10, 9])
# 求均值
mu temperature.mean()
# 求标准差
sigma temperature.std()
# 求温度为22的概率
P_22 gauss(x22, mumu, sigmasigma)
print(f温度为22的概率为{P_22})
2、条件概率与贝叶斯算法基本介绍 2.1 定义
条件概率以贝叶斯定理为理论基础指的是某事件已发生的前提下另一事件发生的概率
例如 假设我在做一道单选题有A、B、C、D四个选项但我不知道这道题的答案只能猜一个选项
一般情况下我能猜对答案的概率是1/4
此时如果我已经排除了A、D两个选项那么会存在以下情况 A、D两项确实是错误答案应该被排除则在我已经排除A、D两项的前提下我从B、C里面再去猜答案猜对的概率是1/2 A、D两项其实有正确答案不该被排除则在我已经排除A、D两项的前提下我从B、C里面再去猜答案猜对的概率是0
2.2 公式推导
根据贝叶斯定理B事件发生的前提下A事件发生的概率为 同理可得A事件发生的前提下B事件发生的概率为 根据等式的乘法性质可得 因此 进一步可推导出 其中
P(A∣B) 是后验概率Posterior Probability指的是在事件 B 发生的前提下事件 A 发生的概率。P(B∣A) 是似然概率Likelihood指的是在事件 A 发生的前提下事件 B 发生的概率。P(A) 是先验概率Prior Probability指的是在没有考虑任何额外证据或信息之前某个事件发生的概率P(B) 是边缘概率Marginal Probability指的是在考虑所有可能情况下某个事件发生的总概率
在上述公式中将A、B分别替换为机器学习模型中的标签y、特征X可得在特征X出现的前提下标签y出现的概率为 由于条件概率模型通常是处理分类问题的在分类问题中同一组特征X一般只会对应同一个标签y如y0、y1、y2...所以上面公式可进一步推导出 ... 在处理分类问题时条件概率模型不是非要算出一个具体的概率值而是通过概率密度函数来比较大小将概率最大的视为特征样本的标签
既然是比大小那么上面的公式应当还能化简即由于上面的式子都有除以P(X)所以与其比较除以P(X)之后的大小不如直接比较不除以P(X)时的大小
例如因为963所以当9、6、3分别除以2之后这个大小关系依然一致9/2 6/2 3/2
因此上面的公式可进一步化简得 ... 由于X代表的是一组特征包含X1,X2,X3,X4,...,Xn所以可进一步推导得出 ... 因为X1、X2、X3、X4、...、Xn是独立特征所以可以最终推导得出 ... 2.3 贝叶斯算法
贝叶斯算法是基于贝叶斯定理的一类算法它提供了一种计算条件概率的方法即在已知其他事件发生的情况下某事件发生的概率
朴素贝叶斯Naive Bayes和高斯贝叶斯Gaussian Naive Bayes都属于贝叶斯算法但它们在处理数据和假设数据分布方面有所不同
(1)朴素贝叶斯Naive Bayes
是一种基于贝叶斯定理的简单概率分类器它假设所有特征之间相互独立适用于文本分类、垃圾邮件检测等任务可以用于多种类型的数据分布如多项式分布、伯努利分布等
(2)高斯贝叶斯Gaussian Naive Bayes
是朴素贝叶斯的一个特例它假设数据特征遵循高斯正态分布通常用于连续数据的特征因为高斯分布是连续的在特征值近似正态分布时效果最好
3、高斯贝叶斯算法实践
以鸢尾花的分类任务为例下面介绍通过高斯贝叶斯算法来进行预测
# 引入load_iris获取鸢尾花数据集
from sklearn.datasets import load_iris
X,y load_iris(return_X_yTrue)# 引入train_test_split将数据集切分为训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state0)# 在python中sklearn.naive_bayes是 sklearn 库中的一个模块它实现了多种朴素贝叶斯分类器
# 在sklearn.naive_bayes中GaussianNB就是用于实现高斯贝叶斯算法的分类器所以我们需要先对其进行引入
from sklearn.naive_bayes import GaussianNB# GaussianNB是一个类所以应该用面向对象的思想对其进行使用即实例化对象
gnb GaussianNB()# 训练模型时需要将训练集X_train和y_train作为参数传入fit方法中
gnb.fit(XX_train, yy_train)
# 预测模型时需要将测试集X_test作为参数传入predict方法中
y_pred gnb.predict(XX_test)#将y_test与y_pred进行对比看有多少个数是相等的就可以得到预测的准确率
acc (y_pred y_test).mean()
print(f预测的准确率为:{acc})
4、自定义高斯贝叶斯分类器
在本文第三章节的高斯贝叶斯算法实践中用的都是sklearn库中的标准模块和函数为了理解其中的实现原理贝叶斯公式和高斯函数都有运用本章节将模仿sklearn自定义一个高斯贝叶斯分类器
# 引入numpy为高斯分布函数提供π、e的值,以及提供一些其他的科学计算方法
import numpy as np# 定义一个MyGaussianNB类实现高斯贝叶斯算法的fit和predict方法
class MyGaussianNB(object):自定义高斯贝叶斯分类算法def __init__(self):初始化方法passdef _gauss(self, x, mu, sigma):定义一个内部方法返回高斯分布函数值return 1 / (((2 * np.pi) ** 0.5) * sigma) * np.exp(-((x - mu) ** 2) / (2 * (sigma ** 2)))def fit(self, X_train, y_train):训练过程(高斯贝叶斯算法不是懒惰学习的方式有训练过程)训练逻辑Step1将训练集中所有的y标签去重得到总共有多少个y标签比如鸢尾花标准数据集中有3个y标签Step2将训练集中的X样本按照这3个标签做切分划分出每一类标签对应的所有X样本Step3对于每一类标签的所有X样本求出每一列特征的均值和标准差标签值为0对应的所有X样本第1列特征的均值和标准差、第2列特征的均值和标准差、第3列特征的均值和标准差、第4列特征的均值和标准差标签值为1对应的所有X样本第1列特征的均值和标准差、第2列特征的均值和标准差、第3列特征的均值和标准差、第4列特征的均值和标准差标签值为2对应的所有X样本第1列特征的均值和标准差、第2列特征的均值和标准差、第3列特征的均值和标准差、第4列特征的均值和标准差最终得到的结果示例# [[{mean: 5.02051282051282, std: 0.3596148132908301}, {mean: 3.4025641025641025, std: 0.37654786836856813}, {mean: 1.4615384615384615, std: 0.14253273958653637}, {mean: 0.24102564102564095, std: 0.10553392629362397}], # [{mean: 5.886486486486486, std: 0.513684182165048}, {mean: 2.7621621621621624, std: 0.32244953625825373}, {mean: 4.216216216216216, std: 0.4795907678447316}, {mean: 1.324324324324324, std: 0.2018902637511686}], # [{mean: 6.638636363636365, std: 0.6238501820042829}, {mean: 2.9886363636363638, std: 0.328367801745452}, {mean: 5.5659090909090905, std: 0.5426966262094999}, {mean: 2.0318181818181817, std: 0.2538545819171491}]] self.X_train X_trainself.y_train y_train#找出训练集 y_train 中有多少个不重复的类别标签并将其存储在 self.classes 中self.classes np.unique(y_train) # 定义一个空列表,存放每个标签对应的四列X特征数据中每一列X特征数据的均值和标准差self.parameters []# 对 self.classes 中的类别进行遍历并将索引和对应的元素值分别赋给变量 i 和 y_nowfor i, y_now in enumerate(self.classes):# X_train[y_train y_now]是将训练集中的 y 标签分别于当前循环中的标签做对比找到有哪些组X是对应此标签的X_classes X_train[y_train y_now]# 往self.parameters中添加一个空列表用于存放当前标签对应的所有训练集X样本中每一列特征的均值和标准差数据self.parameters.append([])# X_classes.T是将X_classes进行转置方便求其每一列的均值和标准差# 假设X_classes[[5.2 3.5 1.5 0.2]# [5.7 3.8 1.7 0.3]# [4.7 3.2 1.3 0.2]# [5. 3.5 1.6 0.6]# [5.4 3.7 1.5 0.2]# [4.8 3.1 1.6 0.2]# [5.3 3.7 1.5 0.2]# [4.3 3. 1.1 0.1]# [5.4 3.4 1.7 0.2]# [5.7 4.4 1.5 0.4]# [4.6 3.1 1.5 0.2]# [4.6 3.4 1.4 0.3]# [4.8 3. 1.4 0.1]# [5.1 3.8 1.6 0.2]# [4.8 3.4 1.6 0.2]# [4.5 2.3 1.3 0.3]# [4.9 3. 1.4 0.2]# [4.4 3.2 1.3 0.2]]# 则X_classes.T[[5.2 5.7 4.7 5. 5.4 4.8 5.3 4.3 5.4 5.7 4.6 4.6 4.8 5.1 4.8 4.5 4.9 4.4]# [3.5 3.8 3.2 3.5 3.7 3.1 3.7 3. 3.4 4.4 3.1 3.4 3. 3.8 3.4 2.3 3. 3.2]# [1.5 1.7 1.3 1.6 1.5 1.6 1.5 1.1 1.7 1.5 1.5 1.4 1.4 1.6 1.6 1.3 1.4 1.3]# [0.2 0.3 0.2 0.6 0.2 0.2 0.2 0.1 0.2 0.4 0.2 0.3 0.1 0.2 0.2 0.3 0.2 0.2]]# 转置之后遍历获取的就是每一个特征列的数据需要分别求其均值和标准差并添加到self.parameters中for col in X_classes.T:parameters {mean: col.mean(), std: col.std()}self.parameters[i].append(parameters)def predict(self, X_test):推理过程(此处是重点)# 大致流程# Step1将测试数据集中的每一个特征值都与分别于训练数据集中每一列特征值的均值和标准差一一对应求得当前测试数据对于每一类标签的概率密度函数值# Step2取概率密度函数最大的值对应的标签值作为当前测试数据预测出来的标签# 具体实现# 1、定义一个列表用于接收每个测试集预测出来的标签值results []# 2、循环遍历测试集中的每一个样本分别求其对应的标签值并存放值results中for x_test in X_test:# 定义一个空列表用于存放每个P(y_train_i|x_test_j)的概率结果posteriors []# 对 self.classes 中的类别进行遍历并将索引和对应的元素值分别赋给变量 i 和 y_nowfor i, y_now in enumerate(self.classes):# 计算先验概率P(y_train_i)prior (self.y_train y_now).mean()# 重置似然概率likelihood 1# self.parameters[[{mean: 5.02051282051282, std: 0.3596148132908301}, {mean: 3.4025641025641025, std: 0.37654786836856813}, {mean: 1.4615384615384615, std: 0.14253273958653637}, {mean: 0.24102564102564095, std: 0.10553392629362397}], # [{mean: 5.886486486486486, std: 0.513684182165048}, {mean: 2.7621621621621624, std: 0.32244953625825373}, {mean: 4.216216216216216, std: 0.4795907678447316}, {mean: 1.324324324324324, std: 0.2018902637511686}], # [{mean: 6.638636363636365, std: 0.6238501820042829}, {mean: 2.9886363636363638, std: 0.328367801745452}, {mean: 5.5659090909090905, std: 0.5426966262094999}, {mean: 2.0318181818181817, std: 0.2538545819171491}]]# 以i0为例# i0 self.parameters[i][{mean: 5.02051282051282, std: 0.3596148132908301}, {mean: 3.4025641025641025, std: 0.37654786836856813}, {mean: 1.4615384615384615, std: 0.14253273958653637}, {mean: 0.24102564102564095, std: 0.10553392629362397}]# j0,param{mean: 5.02051282051282, std: 0.3596148132908301},x_test[j]测试集中第1列特征x的数据# j1,param{mean: 3.4025641025641025, std: 0.37654786836856813},x_test[j]测试集中第2列特征x的数据# j2,param{mean: 1.4615384615384615, std: 0.14253273958653637},x_test[j]测试集中第3列特征x的数据# j3,param{mean: 0.24102564102564095, std: 0.10553392629362397},x_test[j]测试集中第4列特征x的数据for j, param in enumerate(self.parameters[i]):# 计算似然概率P(x_test_1|y_train_i) · P(x_test_2|y_train_i) · P(x_test_3|y_train_i) · P(x_test_4|y_train_i)likelihood * self._gauss(x_test[j], param[mean], param[std])# 计算后验概率P(x_test_1|y_train_i) · P(x_test_2|y_train_i) · P(x_test_3|y_train_i) · P(x_test_4|y_train_i) · P(y_train_i)posterior likelihood * prior# 将计算得到的概率都添加到posteriors列表中posteriors.append(posterior)# np.argmax是 NumPy 库中的一个函数用于返回数组中最大值的索引# 由于每个概率的索引正好对应一个y标签所以可通过最大概率值的索引从self.classes中获取到索引对应的标签值作为预测值y_pred并添加到results结果集中results.append(self.classes[np.argmax(posteriors)])# 返回每个样本对应的标签值方便后续与实际值之间做分析return results
使用自定义的高斯贝叶斯分类器处理【鸢尾花iris识别】任务
# 引入load_iris获取鸢尾花数据集
from sklearn.datasets import load_iris
X,y load_iris(return_X_yTrue)# 引入train_test_split将数据集切分为训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state0)# 调用自定义的高斯贝叶斯分类器分别传入训练集和测试集
mygnb MyGaussianNB()
mygnb.fit(X_trainX_train, y_trainy_train)
y_pred mygnb.predict(X_testX_test)# 比较测试集的标签值和预测出来的标签值计算预测的准确率
acc (y_pred y_test).mean()
print(f预测的准确率为:{acc}) 文章转载自: http://www.morning.bnjnp.cn.gov.cn.bnjnp.cn http://www.morning.jrqw.cn.gov.cn.jrqw.cn http://www.morning.nshhf.cn.gov.cn.nshhf.cn http://www.morning.pjwml.cn.gov.cn.pjwml.cn http://www.morning.hqsnt.cn.gov.cn.hqsnt.cn http://www.morning.gkmwx.cn.gov.cn.gkmwx.cn http://www.morning.bkwd.cn.gov.cn.bkwd.cn http://www.morning.rykx.cn.gov.cn.rykx.cn http://www.morning.qpntn.cn.gov.cn.qpntn.cn http://www.morning.ydwsg.cn.gov.cn.ydwsg.cn http://www.morning.qrmry.cn.gov.cn.qrmry.cn http://www.morning.huayaosteel.cn.gov.cn.huayaosteel.cn http://www.morning.gbqgr.cn.gov.cn.gbqgr.cn http://www.morning.jgmdr.cn.gov.cn.jgmdr.cn http://www.morning.bfwk.cn.gov.cn.bfwk.cn http://www.morning.qtltg.cn.gov.cn.qtltg.cn http://www.morning.ghcfx.cn.gov.cn.ghcfx.cn http://www.morning.rqgjr.cn.gov.cn.rqgjr.cn http://www.morning.sqdjn.cn.gov.cn.sqdjn.cn http://www.morning.fwkq.cn.gov.cn.fwkq.cn http://www.morning.zgztn.cn.gov.cn.zgztn.cn http://www.morning.wnkqt.cn.gov.cn.wnkqt.cn http://www.morning.mzcrs.cn.gov.cn.mzcrs.cn http://www.morning.bwgrd.cn.gov.cn.bwgrd.cn http://www.morning.rfmzc.cn.gov.cn.rfmzc.cn http://www.morning.mrncd.cn.gov.cn.mrncd.cn http://www.morning.slzkq.cn.gov.cn.slzkq.cn http://www.morning.ztnmc.cn.gov.cn.ztnmc.cn http://www.morning.hctgn.cn.gov.cn.hctgn.cn http://www.morning.mfrb.cn.gov.cn.mfrb.cn http://www.morning.ltcnd.cn.gov.cn.ltcnd.cn http://www.morning.ntwxt.cn.gov.cn.ntwxt.cn http://www.morning.jcrfm.cn.gov.cn.jcrfm.cn http://www.morning.krzrg.cn.gov.cn.krzrg.cn http://www.morning.nqpy.cn.gov.cn.nqpy.cn http://www.morning.glswq.cn.gov.cn.glswq.cn http://www.morning.yrwqz.cn.gov.cn.yrwqz.cn http://www.morning.kztpn.cn.gov.cn.kztpn.cn http://www.morning.xxwfq.cn.gov.cn.xxwfq.cn http://www.morning.tdgwg.cn.gov.cn.tdgwg.cn http://www.morning.fdlyh.cn.gov.cn.fdlyh.cn http://www.morning.wjhqd.cn.gov.cn.wjhqd.cn http://www.morning.bby45.cn.gov.cn.bby45.cn http://www.morning.mlwpr.cn.gov.cn.mlwpr.cn http://www.morning.qlsbz.cn.gov.cn.qlsbz.cn http://www.morning.yfqhc.cn.gov.cn.yfqhc.cn http://www.morning.sfzwm.cn.gov.cn.sfzwm.cn http://www.morning.cbvlus.cn.gov.cn.cbvlus.cn http://www.morning.lpmlx.cn.gov.cn.lpmlx.cn http://www.morning.nj-ruike.cn.gov.cn.nj-ruike.cn http://www.morning.pkpqh.cn.gov.cn.pkpqh.cn http://www.morning.btgxf.cn.gov.cn.btgxf.cn http://www.morning.gydth.cn.gov.cn.gydth.cn http://www.morning.lmxzw.cn.gov.cn.lmxzw.cn http://www.morning.qphcq.cn.gov.cn.qphcq.cn http://www.morning.rqfkh.cn.gov.cn.rqfkh.cn http://www.morning.oumong.com.gov.cn.oumong.com http://www.morning.rbmm.cn.gov.cn.rbmm.cn http://www.morning.irqlul.cn.gov.cn.irqlul.cn http://www.morning.dbrdg.cn.gov.cn.dbrdg.cn http://www.morning.szzxqc.com.gov.cn.szzxqc.com http://www.morning.mkyxp.cn.gov.cn.mkyxp.cn http://www.morning.mjqms.cn.gov.cn.mjqms.cn http://www.morning.nccqs.cn.gov.cn.nccqs.cn http://www.morning.kzdwt.cn.gov.cn.kzdwt.cn http://www.morning.tkchg.cn.gov.cn.tkchg.cn http://www.morning.fgrkc.cn.gov.cn.fgrkc.cn http://www.morning.gthc.cn.gov.cn.gthc.cn http://www.morning.kfmlf.cn.gov.cn.kfmlf.cn http://www.morning.blfll.cn.gov.cn.blfll.cn http://www.morning.kljhr.cn.gov.cn.kljhr.cn http://www.morning.lkhfm.cn.gov.cn.lkhfm.cn http://www.morning.wfzdh.cn.gov.cn.wfzdh.cn http://www.morning.hrpmt.cn.gov.cn.hrpmt.cn http://www.morning.gywxq.cn.gov.cn.gywxq.cn http://www.morning.cykqg.cn.gov.cn.cykqg.cn http://www.morning.gwkjg.cn.gov.cn.gwkjg.cn http://www.morning.xlbyx.cn.gov.cn.xlbyx.cn http://www.morning.sjzsjsm.com.gov.cn.sjzsjsm.com http://www.morning.fpxsd.cn.gov.cn.fpxsd.cn