机器学习 监督式学习算法基础

2.1监督式学习的基本概念

2.1.1 基本概念解释

特征组:将每个对象的 n n n个特征构成的向量 x = ( x 1 , x 2 , . . . , x n ) ∈ R n x=(x_1,x_2,...,x_n)\in\mathbb{R^n} x=(x1,x2,...,xn)Rn称为该对象的特征组,设 X ⊆ R n X\subseteq\mathbb{R^n} XRn是特征组的所有可能取值构成的集合,称 X X X为样本空间

标签:在回归问题中,训练数据含有一个数值标签 y ∈ R y\in\mathbb{R} yR;在 k k k元分类问题中,训练数据含有一个向量标签 y ∈ [ 0 , 1 ] k y\in[0,1]^k y[0,1]k。设 Y Y Y为全体可能的取值,称 Y Y Y为标签空间

特征分布
标签分布
举例说明:特征 X X X(就是变量)是在 [ − 1 , 1 ] [-1,1] [1,1]服从均匀分布,标签 y y y服从分布 N ( x , 0.1 ) N(x,0.1) N(x,0.1)的正态分布。
记均匀分布为 D D D,称 D D D为特征分布,用 x ∼ D x\sim D xD表示 x x x为依特征分布 D D D的一个随机采样

x x x对应的标签 y y y服从 D x D_x Dx,称 D x D_x Dx为特征组 x x x的标签分布,用 y ∼ D x y\sim D_x yDx表示 y y y为依 D x D_x Dx的标签分布
eg. x = 1 x=1 x=1 y y y的标签分布为 N ( 1 , 0.1 ) N(1,0.1) N(1,0.1)

2.1.2损失函数举例

损失函数:设 Y Y Y为标签分布。损失函数时一个从 Y × Y Y\times Y Y×Y映射到正实数的函数 l : Y × Y → R + l:Y\times Y\to \mathbb{R^+} l:Y×YR+,并且要求其具有如下性质:对任意 y ∈ Y y\in Y yY,有
l ( y , y ) = 0 l(y,y)=0 l(y,y)=0
eg. 0-1损失函数
l ( y , z ) = { 0 如 果 z = y 1 如 果 z ≠ y l(y,z) = \begin{cases} 0 & 如果z=y \\ 1 & 如果z\ne y \\ \end{cases} l(y,z)={01z=yz=y
eg. 平方损失函数
l ( y , z ) = ( y − z ) 2 l(y,z)=(y-z)^2 l(y,z)=(yz)2
损失函数就是用来计算模型误差,以此来输出优化模型

2.2经验损失最小化架构

训练数据与经验损失:给定损失函数 l l l以及一组数据
S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
其中, x ( 1 ) , x ( 2 ) , . . . , x ( m ) ∼ D x^{(1)},x^{(2)},...,x^{(m)}\sim D x(1),x(2),...,x(m)D X X X m m m个依特征分布 D D D的独立采样,并且对任意 1 ≤ i ≤ m 1\leq i\leq m 1im y ( i ) ∼ D x ( i ) y^{(i)}\sim D_x^{(i)} y(i)Dx(i)。将 S S S称为训练数据。将 h h h S S S中所有数据的平均损失为 h h h的经验损失,用如下记号表示
L S ( h ) = 1 m ∑ i = 1 m l ( h ( x ( i ) ) , y ( i ) ) L_S(h)=\frac{1}{m} \sum_{i=1}^ml(h(x^{(i)}), y^{(i)}) LS(h)=m1i=1ml(h(x(i)),y(i))
当训练数据的规模足够大时,Hoeffding不等式保证了经验损失能够良好地近似期望损失。
Hoeffding不等式个人理解就是在样本足够大时误差可以足够小

2.2.1无约束经验损失最小化算法架构

无约束经验损失最小化算法架构
给定样本空间 X X X、标签空间 Y Y Y、模型空间 ϕ \phi ϕ和损失函数 l : Y × Y → R + l:Y\times Y\to \mathbb{R^+} l:Y×YR+
输入: m m m条训练数据 S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
输出模型: h S = a r g m i n h ∈ ϕ L S ( h ) h_S=\underset{h\in \phi}{argmin}L_S(h) hS=hϕargminLS(h)

无约束经验损失最小化算法的特点在于它精确的拟合了训练数据。实际上可以应用拉格朗日插值法构造一个多项式 h S ( x ) h_S(x) hS(x),使经验损失 L S ( h ) = 0 L_S(h)=0 LS(h)=0。但是这就引出了机器学习中常发生的问题——过度拟合。

下面举例直观感受过度拟合

在这里插入图片描述

在这里插入图片描述

手机
$12

容易看出过下面的模型出现了过度拟合。
由此引出概念——模型假设通过对训练数据的观察以及对背景的理解,可以对模型做出合理假设,从而降低过拟合。

2.2.2带模型假设的经验损失最小化算法架构

模型假设:模型空间 ϕ \phi ϕ的任意一个子集 H H H都称为一个模型假设。
一个带有模型假设的经验损失最小化算法的任务是计算在假定的模型假设中的经验损失最小的那个模型

带模型假设的经验损失最小化算法架构
给定样本空间 X X X、标签空间 Y Y Y、模型空间 ϕ \phi ϕ和损失函数 l : Y × Y → R + l:Y\times Y\to \mathbb{R^+} l:Y×YR+
取定模型假设 H H H
输入: m m m条训练数据 S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
输出模型: h S = a r g m i n h ∈ ϕ L S ( h ) h_S={argmin}_{h\in \phi}L_S(h) hS=argminhϕLS(h)

2.3监督式学习与经验损失最小化实例

2.3.1鸢尾花实例

鸢尾花数据集,数据集包含150个样本,分属于3个鸢尾花种:山鸢尾、变色鸢尾以及弗吉尼亚鸢尾。
5个鸢尾花数据集的样本

花萼长花萼宽花瓣长花瓣宽属种
5.13.51.40.2山鸢尾
7.03.24.71.4变色鸢尾
4.83.01.40.3山鸢尾
6.42.85.62.1弗吉尼亚鸢尾
6.23.04.91.8弗吉尼亚鸢尾

区分山鸢尾和非山鸢尾
横坐标花萼长,纵坐标花萼宽
蓝色 山鸢尾+1,黄色非山鸢尾-1
在这里插入图片描述

2.3.2感知器算法

假定一条直线有如下方程: < w , x > + b = 0 <w,x>+b=0 <w,x>+b=0
对平面上的一个点 x ∗ = ( x 1 ∗ , x 2 ∗ ) x^*=(x_1^*,x_2^*) x=(x1,x2)
如果它位于直线上方,则 < w , x ∗ > + b > 0 <w,x^*>+b>0 <w,x>+b>0
如果它位于直线下方,则 < w , x ∗ > + b < 0 <w,x^*>+b<0 <w,x>+b<0
如果它恰巧位于直线上,则 < w , x ∗ > + b = 0 <w,x^*>+b=0 <w,x>+b=0
< w , x ∗ > + b = 0 <w,x^*>+b=0 <w,x>+b=0的直线能够分离训练数据中的正负采样,
则它一定满足如下条件:

y ( i ) = S i g n ( < w , x ( i ) > + b ) , i = 1 , 2 , . . . , m y^{(i)}=Sign(<w,x^{(i)}>+b),i=1,2,...,m y(i)=Sign(<w,x(i)>+b),i=1,2,...,m
这里的 y ( i ) y^{(i)} y(i)就是样本的标签

其中 S i g n Sign Sign是如下符号函数:
S i g n ( z ) = { − 1 如 果 z < 0 0 如 果 z = y + 1 如 果 z > 0 Sign(z) = \begin{cases} -1 & 如果z<0 \\ 0 & 如果z= y \\ +1 & 如果z>0 \end{cases} Sign(z)=10+1z<0z=yz>0

作出假设:取定 w = ( w 1 , w 2 ) ∈ R 2 w=(w_1,w_2)\in \mathbb{R^2} w=(w1,w2)R2以及 b ∈ R b\in \mathbb{R} bR
h w , b = S i g n ( < w , x > + b ) h_{w,b}=Sign(<w,x>+b) hw,b=Sign(<w,x>+b)
并定义模型假设 H = { h w , x : w ∈ R 2 , b ∈ R 2 } H=\{h_{w,x}:w\in \mathbb{R^2},b\in \mathbb{R^2}\} H={hw,x:wR2,bR2}
采用0-1损失函数,有如下形式:
l ( h w , x ( x ( i ) ) , y ( i ) ) = 1 − y ( i ) S i g n ( < w , x ( i ) > + b ) 2 l(h_{w,x}(x^{(i)}),y^{(i)})=\frac{1-y^{(i)}Sign(<w,x^{(i)}>+b)}{2} l(hw,x(x(i)),y(i))=21y(i)Sign(<w,x(i)>+b)
可见经验损失最小化算法的目标应当为:

经验损失最小化算法的目标就是使经验损失函数最小,误差最小

m i n w , b 1 m ∑ i = 1 m 1 − y ( i ) S i g n ( < w , x ( i ) > + b ) 2 \underset{w,b}{min}\frac{1}{m}\sum_{i=1}^m\frac{1-y^{(i)}Sign(<w,x^{(i)}>+b)}{2} w,bminm1i=1m21y(i)Sign(<w,x(i)>+b)
上式经过简单整理,就等价于如下优化问题:

m a x w , b 1 m ∑ i = 1 m y ( i ) S i g n ( < w , x ( i ) > + b ) \underset{w,b}{max}\frac{1}{m}\sum_{i=1}^my^{(i)}Sign(<w,x^{(i)}>+b) w,bmaxm1i=1my(i)Sign(<w,x(i)>+b)

y ( i ) y^{(i)} y(i)是符号函数 S i g n Sign Sign的取值 +1,-1,确切来说是样本的标签,样本本身自带的数据
分离后正采样点应位于直线上方,负采样点位于直线下方

如果存在位于直线下方的正采样点感知器算法将感知空间中的点并朝着这个点旋转,直至该点位于直线上方,在解析几何中,为了使直线 y = < w , x > + 1 y=<w,x>+1 y=<w,x>+1朝着点 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))转动,可以采用如下方法:
w ← w + y ( i ) x ( i ) b ← b + y ( i ) w\gets w+y^{(i)}x^{(i)}\\ b\gets b+y^{(i)} ww+y(i)x(i)bb+y(i)

感知器算法
w w w=(0,0),b=0,done=False
while not done:
   done = True
   for i=1,2,…,m
    if y ( i ) S i g n ( < w , x ( i ) > + b ) ≤ 0 y^{(i)}Sign(<w,x^{(i)}>+b)\leq0 y(i)Sign(<w,x(i)>+b)0:
      w ← w + y ( i ) x ( i ) w\gets w+y^{(i)}x^{(i)} ww+y(i)x(i)
      b ← b + y ( i ) b\gets b+y^{(i)} bb+y(i)
      done = False
return w , b w,b w,b

2.3.3感知器算法实现山鸢尾花分类

在这里插入图片描述
下图为预测
在这里插入图片描述

2.4正则化算法

奥卡姆剃刀法则:如无必要,勿增实体
n n n d d d次多项式可以用 ( n + d n ) \begin{pmatrix}n+d \\ n\\ \end{pmatrix} (n+dn)个实参数 { w a 1 , a 2 , . . . , a n : a 1 , a 2 , . . . , a n ∈ z ≥ 0 , a 1 + a 2 + . . . + a n ≤ d } \{w_{a_1,a_2,...,a_n}:a_1,a_2,...,a_n\in \mathbb{z}_{\ge 0},a_1+a_2+...+a_n \leq d \} {wa1,a2,...,an:a1,a2,...,anz0,a1+a2+...+and}表示。证明方法类似与高中排列组合中学过的隔板法
L 1 L_1 L1范数 ∣ w ∣ \begin{vmatrix}w\end{vmatrix} w定义为:
∣ w ∣ = ∣ w 1 ∣ + ∣ w 2 ∣ + . . . + ∣ w n ∣ \begin{vmatrix}w \end{vmatrix}=\begin{vmatrix}w_1 \end{vmatrix}+\begin{vmatrix}w_2 \end{vmatrix}+...+\begin{vmatrix}w_n \end{vmatrix} w=w1+w2+...+wn

L 2 L_2 L2范数 ∥ w ∥ \begin{Vmatrix}w\end{Vmatrix} w定义为:
∥ w ∥ = w 1 2 + w 2 2 + . . . + w n 2 \begin{Vmatrix}w\end{Vmatrix}=\sqrt{w_1^2+w_2^2+...+w_n^2} w=w12+w22+...+wn2
机器学习中普遍认为范数 w w w越小,模型就越简单

2.4.1 L 1 L_1 L1正则化

L 1 L_1 L1正则化经验损失最小化算法
参数化模型假设 H = { H w : w ∈ R n } H=\{H_w:w\in \mathbb{R^n}\} H={Hw:wRn}
输入: m m m条训练数据 S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
计算优化问题模型 w ∗ w^* w:
m i n w ∈ R n L S ( h w ) + λ ∣ w ∣ \underset{w\in \mathbb{R^n}}{min}L_S(h_w)+\lambda \begin{vmatrix}w\end{vmatrix} wRnminLS(hw)+λw
输出:模型 h w ∗ h_w^* hw

2.4.2 L 2 L_2 L2正则化

由于 L 1 L_1 L1范数求解的目标函数不可微,因此使用 L 2 L_2 L2正则化(L1正则化的求解可以使用搜索算法中的随机梯度下降算法求解)

L 2 L_2 L2正则化经验损失最小化算法
参数化模型假设 H = { H w : w ∈ R n } H=\{H_w:w\in \mathbb{R^n}\} H={Hw:wRn}
输入: m m m条训练数据 S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
计算优化问题模型 w ∗ w^* w:
m i n w ∈ R n L S ( h w ) + λ ∥ w ∥ 2 \underset{w\in \mathbb{R^n}}{min}L_S(h_w)+\lambda\begin{Vmatrix}w\end{Vmatrix}^2 wRnminLS(hw)+λw2
输出:模型 h w ∗ h_w^* hw

2.4.1 L 1 , L 2 L_1,L_2 L1,L2正则化解释

正则化算法就是在原来的线性模型中,加入一个惩罚项,引导算法在 L S L_S LS接近的情况下选出范数较小的那个(大道至简)
L 1 L_1 L1引导算法参数逐个将为0
m i n L S ( h w ) 约 束 : ∣ w ∣ ≤ R minL_S(h_w)\\ 约束:\begin{vmatrix}w\end{vmatrix}\leq R minLS(hw)wR
模型的约束区间为多面体

L 2 L_2 L2 正则化均匀的降低多项式的系数,输出越来越平滑的模型
m i n L S ( h w ) 约 束 : ∥ w ∥ 2 ≤ R 2 minL_S(h_w)\\ 约束:\begin{Vmatrix}w\end{Vmatrix}^2\leq R^2 minLS(hw)w2R2
约束区间为圆、球…

代码

'''鸢尾花'''
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from perceptron import Perceptron
import matplotlib.pyplot as plt

iris = datasets.load_iris()
X= iris["data"][:,(0,1)]
y = 2 * (iris["target"]==0).astype(np.int) - 1  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=3)

plt.figure(1)
plt.axis([4,8,1,5])
plt.plot(X_train[:, 0][y_train==1], X_train[:, 1][y_train==1], "bs", ms=3)
plt.plot(X_train[:, 0][y_train==-1], X_train[:, 1][y_train==-1], "yo", ms=3)

model = Perceptron()
model.fit(X_train, y_train)

plt.figure(2)
plt.axis([4,8,1,5])
plt.plot(X_train[:, 0][y_train==1], X_train[:, 1][y_train==1]+0.1, "bs", ms=3)
plt.plot(X_train[:, 0][y_train==-1], X_train[:, 1][y_train==-1]-0.1, "yo", ms=3)
x0 = np.linspace(4, 8, 200)
w = model.w
b = model.b
line = -w[0]/w[1] * x0 - b/w[1]
plt.plot(x0, line)

plt.figure(3)
plt.axis([4,8,1,5])
plt.plot(X_test[:, 0][y_test==1], X_test[:, 1][y_test==1], "bs", ms=3)
plt.plot(X_test[:, 0][y_test==-1], X_test[:, 1][y_test==-1], "yo", ms=3)
x0 = np.linspace(4, 8, 200)
line = -w[0]/w[1] * x0 - b/w[1]
plt.plot(x0, line)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
⼈⼯智能、机器学习与深度学习的区别与联系 你是否也有这样的疑惑,⼈⼯智能、机器学习、深度学习以及监督学习等名词之间到底有什么样的联系与区别,以及它们的应⽤场景呢。 下⾯就通过概念、区别和联系以及应⽤场景三个⽅⾯来具体的分析下他们。 ⼀、概念 1、⼈⼯智能 ⼈⼯智能(Artificial intelligence)简称AI。⼈⼯智能是计算机科学的⼀个分⽀,它企图了解智能的本质,并⽣产出⼀种新的能以⼈类智 能相似的⽅做出反应的智能机器,是研究、开发⽤于模拟、延伸和扩展⼈的智能的理论、⽅法、技术及应⽤系统的⼀门新的技术科学。 ⼈⼯智能⽬前分为弱⼈⼯智能和强⼈⼯智能和超⼈⼯智能。 1)弱⼈⼯智能:弱⼈⼯智能(ArtificialNarrow Intelligence /ANI),只专注于完成某个特定的任务,例如语⾳识别、图象识别和翻译 等,是擅长于单个⽅⾯的⼈⼯智能。它们只是⽤于解决特定的具体类的任务问题⽽存在,⼤都是统计数据,以此从中归纳出模型。由于弱⼈ ⼯智能智能处理较为单⼀的问题,且发展程度并没有达到模拟⼈脑思维的程度,所以弱⼈⼯智能仍然属于"⼯具"的范畴,与传统的"产 品"在本质上并⽆区别。 2) 强⼈⼯智能:强⼈⼯智能(Artificial Generallnteligence /AGI),属于⼈类级别的⼈⼯智能,在各⽅⾯都能和⼈类⽐肩,它能够进⾏ 思考、计划、解决问题、抽象思维、理解复杂理念、快速学习和从经验中学习等操作,并且和⼈类⼀样得⼼应⼿。 3)超⼈⼯智能:超⼈⼯智能(Artificial Superintelligence/ASI),在⼏乎所有领域都⽐最聪明的⼈类⼤脑都聪明许多,包括科学创 新、通识和社交技能。在超⼈⼯智能阶段,⼈⼯智能已经跨过"奇点",其计算和思维能⼒已经远超⼈脑。此时的⼈⼯智能已经不是⼈类可 以理解和想象。⼈⼯智能将打破⼈脑受到的维度限制,其所观察和思考的内容,⼈脑已经⽆法理解,⼈⼯智能将形成⼀个新的社会。 ⽬前我们仍处于弱⼈⼯智能阶段。 2、机器学习 机器学习(MachineLearning)简称ML。机器学习属于⼈⼯智能的⼀个分⽀,也是⼈⼯智能的和核⼼。机器学习理论主要是设计和分析 ⼀些让计算机可以⾃动"学习"的算法。 3、深度学习 深度学习(DeepLearning)简称DL。最初的深度学习是利⽤深度神经⽹络来解决特征表达的⼀种学习过程。深度神经⽹络本⾝并不是 ⼀个全新的概念,可⼤致理解为包含多个隐含层的神经⽹络结构。为了提⾼深层神经⽹络的训练效果,⼈们对神经元的连接⽅法和激活函数 等⽅⾯做出相应的调整。深度学习机器学习研究中的⼀个新的领域,其动机在于建⽴、模拟⼈脑进⾏分析学习的神经⽹络,它模仿⼈脑的 机制来解释数据,如图象、声⾳、⽂本。 注意:你可能在接触深度学习的时候也听到过监督学习、⾮监督学习、半监督学习等概念,下⾯就顺便对这三个名词解析下: 1)监督学习:⽤⼀部分已知分类、有标记的样本来训练机器后,让它⽤学到的特征,对没有还分类、⽆标记的样本进⾏分类、贴标签。多 ⽤于分类。 2)⾮监督学习:所有的数据没有标记,类别未知,让它⾃⼰学习样本之间的相似性来进⾏分类。多⽤于聚类。 3)半监督学习:有两个样本集,⼀个有标记,⼀个没有标记。综合利⽤有类标的样本( labeled sample)和没有类标的样本( unlabeled sample),来⽣成合适的分类。 ⼆、区别于联系 下⾯⼀张图能更加细分其关系: 注意:在上幅图中,我们可以看下机器学习下的深度学习监督学习以及⾮监督学习,那它们之间是什么关系呢,其实就是分类⽅法不同⽽ 已,他们之间可以互相包含。打个⽐⽅:⼀个⼈按性别可以分为男⼈和⼥⼈,⽽按年龄来分可以分为⽼⼈和⼩孩⼦。所以在深度学习中我们 可以⽤到监督学习和⾮监督学习,⽽监督学习中可以⽤到很基础的不含神经元的算法(KNN算法)也可以⽤到添加了多层神经元的深度学习 算法。 三、应⽤场景 1) ⼈⼯智能的研究领域在不断的扩⼤,包括专家系统、机器学习、进化计算、模糊逻辑、计算机视觉、⾃然语⾔处理、推荐系统等。并 且⽬前的科研⼯作都集中在弱⼈⼯智能这部分。 2) 机器学习直接来源于早期的⼈⼯智能领域,传统的算法包括决策树、聚类、贝叶斯分类、⽀持向量机、EM、Adaboost等等。从学习 ⽅法上来分,机器学习可以分为监督学习(如分类问题)、⽆监督学习(如聚类问题)、半监督学习、集成学习、深度学习和强化学习。传统的 机器学习算法在指纹识别、⼈脸检测、特征物体检测等领域的应⽤基本达到了商业化的要求或特定场景的商业化⽔平。 3) 深度学习本来并不是⼀种独⽴的学习⽅法,其本⾝也会⽤到监督学习和⽆监督学习⽅法来训练深度神经⽹络,但由于近年来改领域发 展迅猛,⼀些特有的学习⼿段相继被提出(如残差

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喂★借个微笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值