只是应试的个人笔记,不全不详细
统计模式识别{聚类分析法(非监督)判别函数法(有监督){几何分类法(确定性事件){线性判别函数法非线性判别函数法统计决策方法(贝叶斯决策方法,随机事件)统计模式识别 \left\{ \begin{aligned} &聚类分析法(非监督)\\ &判别函数法(有监督) \left\{ \begin{aligned} &几何分类法(确定性事件) \left\{ \begin{aligned} &线性判别函数法\\ &非线性判别函数法 \end{aligned} \right.\\ &统计决策方法(贝叶斯决策方法,随机事件) \end{aligned} \right. \end{aligned} \right. 统计模式识别⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧​​聚类分析法(非监督)判别函数法(有监督)⎩⎪⎪⎨⎪⎪⎧​​几何分类法(确定性事件){​线性判别函数法非线性判别函数法​统计决策方法(贝叶斯决策方法,随机事件)​​


统计模式识别:按任务类型划分

聚类分析(Clustering Analysis)——简称:聚类
– 简单聚类方法:最大最小距离法
– 层次聚类方法:分裂式、凝聚式
– 动态聚类方法:C-均值,ISODATA
判别分析(Discriminatory Analysis)——简称:分类
– 几何分类法(判别函数分类法):线性、分段线性、二次、支持向量机
– 概率分类法(统计决策分类法):判别式 (Discriminative)、生成式 (Generative)
– 近邻分类法(几何分类法和概率分类法的一种融合方法)
几何分类法,是指在特征空间中,利用矢量空间的直观概念,使用代数方程方法,对模式进行分类。因此也被称为:代数界面方程法
概率分类法,是指把模式视为随机变量的抽样,利用统计决策理论 (贝叶斯决策理论)成熟的判决准则与方法,对模式样本进行分类。

X=(x1,x2,⋅⋅⋅,xn,1)TX=(x_1,x_2,···,x_n,1)^TX=(x1​,x2​,⋅⋅⋅,xn​,1)T , W=(w1,w2,⋅⋅⋅,wn,wn+1)TW=(w_1,w_2,···,w_n,w_{n+1})^TW=(w1​,w2​,⋅⋅⋅,wn​,wn+1​)T

线性判别函数{两类问题:d(X)=WTX=w1x1+w2x2+w3{>0,X∈w1<0,X∈w2=0,拒识或随机判决为w1或w2多类问题{wi∣wi‾,仅能区分是否属于wi,不能排除是否属于wj(j≠i),即X可能同时属于多个类。wi∣wj,对于任意i和j(i≠j),判别函数仅能区分wi和wj,dij(X)=−dji(X),dij(X){>0,X∈wi<0,X∈wjwi∣wj(∀j≠i),对于任意i,判别函数能区分wi和一切其他wj(∀j≠i),dij(X)=di(X)−dj(X)线性判别函数\left\{ \begin{aligned} &两类问题:d(X)=W^TX=w_1x_1+w_2x_2+w_3 \left\{ \begin{aligned} &>0,X\in w_1\\ &<0,X\in w_2\\ &=0,拒识或随机判决为w_1或w_2 \end{aligned} \right.\\ &多类问题 \left\{ \begin{aligned} &w_i|\overline{w_i},仅能区分是否属于w_i,不能排除是否属于w_j(j\ne i),即X可能同时属于多个类。\\ &w_i|w_j,对于任意i和j(i \ne j),判别函数仅能区分w_i和w_j,d_{ij}(X)=-d_{ji}(X), d_{ij}(X)\left\{ \begin{aligned} &>0,X\in w_i\\ &<0,X\in w_j \end{aligned} \right.\\ &w_i|w_j(\forall j\ne i),对于任意i,判别函数能区分w_i和一切其他w_j(\forall j\ne i),d_{ij}(X)=d_i(X)-d_j(X) \end{aligned} \right. \end{aligned} \right. 线性判别函数⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​​两类问题:d(X)=WTX=w1​x1​+w2​x2​+w3​⎩⎪⎨⎪⎧​​>0,X∈w1​<0,X∈w2​=0,拒识或随机判决为w1​或w2​​多类问题⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​​wi​∣wi​​,仅能区分是否属于wi​,不能排除是否属于wj​(j​=i),即X可能同时属于多个类。wi​∣wj​,对于任意i和j(i​=j),判别函数仅能区分wi​和wj​,dij​(X)=−dji​(X),dij​(X){​>0,X∈wi​<0,X∈wj​​wi​∣wj​(∀j​=i),对于任意i,判别函数能区分wi​和一切其他wj​(∀j​=i),dij​(X)=di​(X)−dj​(X)​​


Fisher线性判别(只能求线性可分)

Fisher准则的基本原理:找到一个最合适的投影 轴,使两类样本在该轴上投影之间的距离尽可能 远,而每一类样本的投影尽可能紧凑,从而使分类效果为最佳。

算法

​ 1)由 mi=1Ni∑X∈wiX,i=1,2m_i=\frac{1}{N_i}\sum\limits_{X\in w_i}X,i=1,2mi​=Ni​1​X∈wi​∑​X,i=1,2,计算 mim_imi​。

​ 2)由 Swi=∑X∈wi(X−mi)(X−mi)TS_{w_i}=\sum\limits_{X\in w_i}(X-m_i)(X-m_i)^TSwi​​=X∈wi​∑​(X−mi​)(X−mi​)T,计算各类的类内离散度矩阵 Swi,i=1,2S_{w_i},i=1,2Swi​​,i=1,2。

​ 3)计算类内总离散度矩阵 Sw=Sw1+Sw2S_w=S_{w_1}+S_{w_2}Sw​=Sw1​​+Sw2​​。

​ 4)计算 SwS_wSw​ 的逆矩阵 Sw−1{S_w}^{-1}Sw​−1。

​ 5)由 W∗=Sw−1(m1−m2)W^*={S_w}^{-1}(m_1-m_2)W∗=Sw​−1(m1​−m2​) 求得 W∗W^*W∗。


感知器算法(只能求线性可分)

对样本进行增广规范化,即 w1w_1w1​ 和 w2w_2w2​ 类样本增加一列1,w2w_2w2​ 类样本全部乘以(-1),则有:
d(X)=WTX>0d(X) = W^TX>0d(X)=WTX>0
感知器算法的基本思想:用训练模式验证当前权向量的合理性, 如果不合理,就根据误差进行反向纠正,直到全部训练样本都 被合理分类。本质上是梯度下降方法类。

解决两分类问题算法:

​ 1)给定初始值,置 kkk =1,初始权向量 WkW_kWk​,选常数 c>0c>0c>0,一般 0<c≤10<c\le10<c≤1。

​ 2)依次输入样本 XkX_kXk​,Xk∈{X1,X2,⋅⋅⋅,XN}X_k\in \{X_1,X_2,···,X_N\}Xk​∈{X1​,X2​,⋅⋅⋅,XN​} 。

​ 3)计算判别函数值:d(X)=WkTXkd(X)={W_k}^TX_kd(X)=Wk​TXk​。

​ 4)修改权向量:

​ 若d(X)=WkTXk>0d(X)={W_k}^TX_k>0d(X)=Wk​TXk​>0,则 Wk+1=WkW_{k+1}=W_kWk+1​=Wk​;

​ 若d(X)=WkTXk<0d(X)={W_k}^TX_k<0d(X)=Wk​TXk​<0,则 Wk+1=Wk+cXkW_{k+1}=W_k+cX_kWk+1​=Wk​+cXk​。

​ 5)令 k=k+1k=k+1k=k+1,返回2),直到对所有训练样本,不再需要修改权向量,结束。

解决多类问题算法:

​ 设 MMM 个判别函数为 di(X)=WiTX;i=1,2,⋅⋅⋅,Md_i(X)={W_i}^TX;i=1,2,···,Mdi​(X)=Wi​TX;i=1,2,⋅⋅⋅,M。判别规则为:

​ 若 di(X)>dj(X);j=1,2,⋅⋅⋅,M;j≠id_i(X)>d_j(X);j=1,2,···,M;j\ne idi​(X)>dj​(X);j=1,2,⋅⋅⋅,M;j​=i,则 X∈wiX\in w_iX∈wi​。

​ 1)赋初值:分别赋给 MMM 个权向量 Wi(i=1,2,⋅⋅⋅,M)W_i(i=1,2,···,M)Wi​(i=1,2,⋅⋅⋅,M) 任意的初值,选择正常数 ccc ,把训练样本变为增广型模式向量,置 k=1k=1k=1。

​ 2)输入训练样本 Xk,Xk∈{X1,X2,⋅⋅⋅,XN}X_k,X_k\in \{X_1,X_2,···,X_N\}Xk​,Xk​∈{X1​,X2​,⋅⋅⋅,XN​},假定 Xk∈wiX_k\in w_iXk​∈wi​。

​ 3)计算 MMM 个判别函数值:di(Xk)=WkT(k)Xk(i=1,2,⋅⋅⋅,M)d_i(X_k)={W_k}^T(k)X_k(i=1,2,···,M)di​(Xk​)=Wk​T(k)Xk​(i=1,2,⋅⋅⋅,M)。

​ 4)修正权向量:

​ 若 di(Xk)>dj(Xk),j=1,2,⋅⋅⋅,M;j≠i,Wi(k+1)=Wi(k)(i=1,2,⋅⋅⋅,M)d_i(X_k)>d_j(X_k),j=1,2,···,M;j\ne i,W_i(k+1)=W_i(k)(i=1,2,···,M)di​(Xk​)>dj​(Xk​),j=1,2,⋅⋅⋅,M;j​=i,Wi​(k+1)=Wi​(k)(i=1,2,⋅⋅⋅,M);

​ 若有 l,1≤l≤M,l≠il,1\le l\le M,l\ne il,1≤l≤M,l​=i 使得 dl(Xk)>di(Xk)d_l(X_k)>d_i(X_k)dl​(Xk​)>di​(Xk​),则
{Wi(k+1)=Wi(k)+cXkWl(k+1)=Wl(k)−cXkWj(k+1)=Wj(k),j=1,2,⋅⋅⋅,M;j≠i,j≠l\left\{ \begin{aligned} &W_i(k+1)=W_i(k)+cX_k\\ &W_l(k+1)=W_l(k)-cX_k\\ &W_j(k+1)=W_j(k),j=1,2,···,M;j\ne i,j\ne l \end{aligned} \right. ⎩⎪⎨⎪⎧​​Wi​(k+1)=Wi​(k)+cXk​Wl​(k+1)=Wl​(k)−cXk​Wj​(k+1)=Wj​(k),j=1,2,⋅⋅⋅,M;j​=i,j​=l​
​ 5)令 k=k+1k=k+1k=k+1,返回 2)。直到所有的权向量对所有训练样本都稳定不变时结束。


最小平方误差算法(LSME)/H·K算法

特点

∙\bullet∙ 在模式类线性可分时收敛。

∙\bullet∙ 在线性不可分时可明确指出来。

∙\bullet∙ 同时利用 NNN 个样本来进行 WWW 和 BBB 的迭代计算,使算法收敛快。

算法

​ 1)初值化:将 NNN 个分属于两类的样本规范化增广,得矩阵 XXX 。求 XXX 的伪逆矩阵 X#=(XTX)−1XTX^\#=(X^TX)^{-1}X^TX#=(XTX)−1XT。设置正的校正增量 ccc 和各分量大于零的 B(1)B(1)B(1),迭代次数 k=1k=1k=1,计算 W(1)=X#B(1)W(1)=X^\#B(1)W(1)=X#B(1)。

​ 2)计算 e(k)=XW(k)−B(k)e(k)=XW(k)-B(k)e(k)=XW(k)−B(k),并分以下几种情况:

​ ①若 e(k)=0e(k)=0e(k)=0,则模式类线性可分,解为 W(k)W(k)W(k),算法结束。

​ ②若 e(k)<0e(k)<0e(k)<0,则当 XW(k)>0XW(k)>0XW(k)>0 时,有解 W(k)W(k)W(k),否则无解,且模式类不是线性可分的,算法结束。

​ ③若 e(k)>0e(k)>0e(k)>0 或 e(k)e(k)e(k) 的分量值有正有负,则进入3)继续迭代。

​ 3)计算 W(k+1)W(k+1)W(k+1) 和 B(k+1)B(k+1)B(k+1) :

​ 方法1:
先计算W(k+1)=W(k)+cX#∣e(k)∣再计算B(k+1)=B(k)+c[e(k)+∣e(k)∣]\begin{aligned} &先计算W(k+1)=W(k)+cX^\#|e(k)|\\ &再计算B(k+1)=B(k)+c[e(k)+|e(k)|] \end{aligned} ​先计算W(k+1)=W(k)+cX#∣e(k)∣再计算B(k+1)=B(k)+c[e(k)+∣e(k)∣]​

​ 方法2:
先计算B(k+1)=B(k)+c[e(k)+∣e(k)∣]再计算W(k+1)=X#B(k+1)\begin{aligned} &先计算B(k+1)=B(k)+c[e(k)+|e(k)|]\\ &再计算W(k+1)=X^\#B(k+1) \end{aligned} ​先计算B(k+1)=B(k)+c[e(k)+∣e(k)∣]再计算W(k+1)=X#B(k+1)​
​ 4)迭代次数 kkk 加1,转2)。


势函数法

概念

点势函数(基函数):K(X,Xk)K(X,X_k)K(X,Xk​)。

积累势函数(势函数):K(X)K(X)K(X)。

判别函数由点势函数累加产生。

算法

​ 设初始积累势函数 K0(X)=0K_0(X)=0K0​(X)=0,下标为迭代次数。

​ 1)加入训练样本 X1X_1X1​,
K1(X)={K0(X)+K(X,X1),若X1∈w1K0(X)−K(X,X1),若X1∈w2K_1(X)=\left\{ \begin{aligned} &K_0(X)+K(X,X_1),若X_1\in w_1\\ &K_0(X)-K(X,X_1),若X_1\in w_2 \end{aligned} \right. K1​(X)={​K0​(X)+K(X,X1​),若X1​∈w1​K0​(X)−K(X,X1​),若X1​∈w2​​
​ K1(X)K_1(X)K1​(X) 描述了加入第一个样本后的边界划分。

​ 2)加入第二个训练样本 X2X_2X2​,分三种情况:

​ ①若 X2∈w1X_2\in w_1X2​∈w1​ 且 K1(X2)>0K_1(X_2)>0K1​(X2​)>0 或 X2∈w2X_2\in w_2X2​∈w2​ 且 K1(X2)<0K_1(X_2)<0K1​(X2​)<0,正确分类,K2(X)=K1(X)K_2(X)=K_1(X)K2​(X)=K1​(X)。

​ ②若 X2∈w1X_2\in w_1X2​∈w1​ 但 K1(X2)≤0K_1(X_2)\le0K1​(X2​)≤0,错误分类,修改势函数:
K2(X)=K1(X)+K(X,X2)=±K(X,X1)+K(X,X2)\begin{aligned} K_2(X)=K_1(X)+K(X,X_2)=\pm K(X,X_1)+K(X,X_2) \end{aligned} K2​(X)=K1​(X)+K(X,X2​)=±K(X,X1​)+K(X,X2​)​
​ ③若 X2∈w2X_2\in w_2X2​∈w2​ 且 K1(X2)≥0K_1(X_2)\ge0K1​(X2​)≥0,错误分类,修改势函数:
K2(X)=K1(X)−K(X,X2)=±K(X,X1)−K(X,X2)\begin{aligned} K_2(X)=K_1(X)-K(X,X_2)=\pm K(X,X_1)-K(X,X_2) \end{aligned} K2​(X)=K1​(X)−K(X,X2​)=±K(X,X1​)−K(X,X2​)​
​ ···

​ k)设 Kk(X)K_k(X)Kk​(X) 为训练样本 X1,X2,⋅⋅⋅,XkX_1,X_2,···,X_kX1​,X2​,⋅⋅⋅,Xk​ 后的积累势函数。对第 k+1k+1k+1 个样本,有:

​ ①若 Xk+1∈w1X_{k+1}\in w_1Xk+1​∈w1​ 且 Kk(Xk+1)>0K_k(X_{k+1})>0Kk​(Xk+1​)>0 或 Xk+1∈w2X_{k+1}\in w_2Xk+1​∈w2​ 且 Kk(Xk+1)<0K_k(X_{k+1})<0Kk​(Xk+1​)<0,正确分类,Kk+1(X)=Kk(X)K_{k+1}(X)=K_k(X)Kk+1​(X)=Kk​(X)。

​ ②若 Xk+1∈w1X_{k+1}\in w_1Xk+1​∈w1​ 但 Kk(Xk+1)≤0K_k(X_{k+1})\le0Kk​(Xk+1​)≤0,错误分类,修改势函数:
Kk+1(X)=Kk(X)+K(X,Xk+1)\begin{aligned} K_{k+1}(X)=K_k(X)+K(X,X_{k+1}) \end{aligned} Kk+1​(X)=Kk​(X)+K(X,Xk+1​)​
​ ③若 Xk+1∈w2X_{k+1}\in w_2Xk+1​∈w2​ 但 Kk(Xk+1)≥0K_k(X_{k+1})\ge0Kk​(Xk+1​)≥0,错误分类,修改势函数:
Kk+1(X)=Kk(X)−K(X,Xk+1)\begin{aligned} K_{k+1}(X)=K_k(X)-K(X,X_{k+1}) \end{aligned} Kk+1​(X)=Kk​(X)−K(X,Xk+1​)​
​ 当所有样本扫描处理完后,若在本轮中积累势函数发生过修改,即有分类出错的情况发生过,则 kkk 值增1,继续进行下一轮循环处理。直到本轮中积累势函数没有发生过修改,算法结束。分类判别函数 d(X)d(X)d(X) 即积累势函数 Kn(X)K_n(X)Kn​(X)。

​ 积累位势的修改可写为:
Kk+1(X)=Kk(X)+rk+1K(X,Xk+1)\begin{aligned} K_{k+1}(X)=K_k(X)+r_{k+1}K(X,X_{k+1}) \end{aligned} Kk+1​(X)=Kk​(X)+rk+1​K(X,Xk+1​)​
​ 其中,rk+1r_{k+1}rk+1​ 为校正项系数,定义为
rk+1{0,Xk+1∈w1且Kk(Xk+1)>00,Xk+1∈w2且Kk(Xk+1)<01,Xk+1∈w1且Kk(Xk+1)≥0−1,Xk+1∈w2且Kk(Xk+1)≤0r_{k+1}\left\{ \begin{aligned} &0,X_{k+1}\in w_1 且K_k(X_{k+1})>0\\ &0,X_{k+1}\in w_2 且K_k(X_{k+1})<0\\ &1,X_{k+1}\in w_1 且K_k(X_{k+1})\ge0\\ &-1,X_{k+1}\in w_2 且K_k(X_{k+1})\le0 \end{aligned} \right. rk+1​⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​​0,Xk+1​∈w1​且Kk​(Xk+1​)>00,Xk+1​∈w2​且Kk​(Xk+1​)<01,Xk+1​∈w1​且Kk​(Xk+1​)≥0−1,Xk+1​∈w2​且Kk​(Xk+1​)≤0​

参考文章:
https://blog.csdn.net/qq_41409438/article/details/100977632

参考书籍:
《模式识别》吴陈,机械工业出版社

模式识别——第3章 判别函数法相关推荐

  1. 模式识别感知器算法matlab,模式识别第三章-感知器算法.doc

    模式识别第三章-感知器算法 模式识别第三章 感知器算法 一.用感知器算法求下列模式分类的解向量w: 将属于的训练样本乘以(-1),并写成增广向量的形式: ,,, ,,, 第一轮迭代:取, 因不大于0, ...

  2. 算法设计与分析第5章 回溯法(二)【回溯法应用】

    第5章 回溯法 5.2 应用范例 1.0-1背包问题 有n件物品和一个容量为c的背包.第i件物品的重量是w[i],价值是p[i].求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和 ...

  3. 算法设计与分析第5章 回溯法(一)【回溯法】

    第5章 回溯法 5.1 回溯法 1.回溯法的提出  有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法. 2. 问题的解空间 (1)问题的解向量:回溯法希望 ...

  4. 赫尔维茨矩阵与matlab,第3章时域分析法剖析.ppt

    第3章时域分析法剖析 典型输入信号 脉冲 阶跃 斜坡 加速度 正弦 时域 频域 QUIET TIME-- 问题&思考 对比振荡系统和单调上升系统而言,上述动态性能指标有何不同? 特别注意 QU ...

  5. [XJTUSE 算法设计与分析] 第五章 回溯法

    第五章 回溯法 填空题会有代码填空,大题会手动回溯 学习要点 理解回溯法的深度优先搜索策略. 掌握用回溯法解题的算法框架 (1)递归回溯 (2)迭代回溯 (3)子集树算法框架 (4)排列树算法框架 5 ...

  6. 自动控制原理第5章——频率法(思维导图)

    第5章--频率法 内容参考: 西北工业大学卢京潮老师所讲的<自动控制原理> 王建辉.顾树生老师所主编的自动控制原理(第2版) 如有错误或者不足之处,欢迎大家留言指正!

  7. 算法分析与设计(第四章 贪心法(局部最优))

    1.基本思想:贪心法通过分步决策的方法求解问题.贪心法每一步用作决策依据的选择准则称为最优量度标准(局部最优解).在根据最优量度标准选择分量的过程中,还需要使用一个可行解判定函数(约束条件). 2.贪 ...

  8. 信息与通信的数学基础——第十三章 行波法

    文章目录 无界弦自由振动 达朗贝尔公式 题目:达朗贝尔公式解一维无界弦自由振动问题[1] 强迫振动 达朗贝尔公式 题目:达朗贝尔公式解强迫振动问题 无界弦自由振动 达朗贝尔公式 应用范围: 无界弦的自 ...

  9. 算法设计与分析——第五章回溯法 批处理作业调度 + 最大团问题+图的m着色问题

    文章目录 6.批处理作业调度(排列树) 7.最大团问题 8.图的m着色问题 6.批处理作业调度(排列树) 每一个作业Ji都有两项任务分别在2台机器上完成.每个作业必须先有机器1处理,然后再由机器2处理 ...

  10. 数学物理方程 第三章 行波法

    3.1 一维波动 3.1.1 无界弦的自由振动 ---------------------- 定解问题:范定方程+条件 先利用公式求解范定方程,得到u的通解 再带入条件,得到u的定解 -------- ...

最新文章

  1. 机器学习竞赛必备基础知识_Word2Vec
  2. 泼冷水:反思机器学习5年大跃进(附论文)
  3. 【错误记录】Android 可执行权限报错 ( Cannot run program “/data/user/0/cn.e/ffmpeg“: error=13,Permission denied )
  4. Java基础提升篇:equals()与hashCode()方法详解
  5. 【uoj#139】[UER #4]被删除的黑白树 贪心
  6. Linux中gsub函数,Linux中awk下 gsub函数用法
  7. HDU 4054 Number String
  8. 4 weekend110的hive入门
  9. EasyUI实现购物车、菜单和窗口栏等最常用的用户界面功能.
  10. (转)Rust:Ownership,Reference和Lifetime详解
  11. 2022年金融与互联网资质牌照研究报告
  12. python应声虫程序_【Python】游戏-成语接龙
  13. oracle系统的物料编码,物料编码汇总专题[大家一起努力将其补充完善!以方便大家查阅!] - □-Oracle ER......
  14. 夯实Java基础系列8:深入理解Java内部类及其实现原理
  15. mysql dump hbase_mysqldump 导出数据库 结构
  16. 类似零基础学python的小说_就像看小说一样,让你一个小时学会Python零基础「强烈推荐」...
  17. 掌握这几款高保真设计软件,百万年薪不再是梦想
  18. Qt编写安防视频监控系统56-数据库分页
  19. Cause: java.sql.SQLExceptioValue ‘0000-00-00 00:00:00‘ can not be represented as java.sql.Timestamp
  20. 什么是API,开发人员该如何使用它们?

热门文章

  1. java getsystemtime,草泥马之家-使用javaAgent解除Burp的时间限制
  2. 域名服务商自曝行业内幕:用户面临层层陷阱
  3. python 初学之环境配置及IED搭建
  4. 程序员转行做数据分析师_程序员可以转行数据分析师吗?
  5. Tomcat8+Redis集群解决会话共享
  6. docker镜像(第二天)
  7. Android 实现图文混排
  8. 安卓/苹果/支付宝sdk拉起支付宝h5/app支付
  9. echarts-地图使用/配合散点图展示空气质量
  10. 八戒,别以为你站在路灯下就是夜明猪了!