机器学习预备知识

机器学习基石第九讲笔记 Lecture 9: Linear Regression线性回归 9-1 线性回归问题 信用额度问题: x=(x0,x1,x2,...,xd)为顾客特征,y是输出的加权后的信用额度,线性回归假说为h,如图: 那么线性回归长什么样呢?在输入为一维时如左图,输入为二维时如右图: 线性回归分析想要做的就是找到一个最好的线或者最好的面,希望红色的线的部分越小越好。 那通常是怎么 阅读详情

1. 维度灾难

维度灾难是指随着数据维度变大(即特征变多),需要的数据就越多,才能使算法起作用。

原因

单位超球体体积 v n = ( 2 π / n ) v n − 1 v_n=(2\pi/n)v_{n-1} vn​=(2π/n)vn−1​ ,n位球体维度

维度n体积
12.00
23.14
34.19
44.93
……
93.29
102.55
+ ∞ \infty ∞0

可见,随着维度变大,单位球体体积趋近0,也就是说距离对数据的影响越来越小,这就使得维度高时,只有大量的数据,才能帮助算法更好地生效

2. 训练、测试、验证集

在这里插入图片描述
一个形象的比喻:

训练集:学生的课本,学生根据课本中的内容来掌握知识;

验证集:作业,通过作业可以知道学生的学习情况、进步快慢;

测试集:考试,考题都是平时没见过的,考察学生举一反三的能力。

训练集和测试集大家不陌生,主要是验证集用来做什么要了解下。

验证集

我们让模型在训练集上进行训练,然后在测试集上来近似模型的泛化能力。我们如果想要挑选不同的模型的话,可以让两个模型分别在训练集上训练,然后将两个训练好的模型分别在测试集上进行测试,由于我们把测试集上的误差近似近似为泛化误差,所以我们自然可以选择在测试集上误差小的模型作为最终我们要选择的泛化能力强的模型。

但是我们要做的不仅是不同的模型与模型之间的对比,很多时候我们需要对模型本身进行选择,假如我们有两个模型,线性模型和神经网络模型,我们知道神经网络的泛化能力要比线性模型要强,我们选择了神经网络模型,但是神经网络中还有很多的需要人工进行选择的参数,比如神经网络的层数和每层神经网络的神经元个数以及正则化的一些参数等等,我们将这些参数称为超参数。这些参数不同选择对模型最终的效果也很重要,我们在开发模型的时候总是需要调节这些超参数。

现在我们需要调节这些超参数来使得模型泛化能力最强。我们使用测试集来作为泛化误差估计,而我们最终的目的就是选择泛化能力强的模型,那么我们可以直接通过模型在测试集上的误差来调节这些参数不就可以了。可能模型在测试集上的误差为0,但是你拿着这样的模型去部署到真实场景中去使用的话,效果可能会非常差。

这一现象叫做信息泄露。我们使用测试集作为泛化误差的近似,所以不到最后是不能将测试集的信息泄露出去的,就好比考试一样,我们平时做的题相当于训练集,测试集相当于最终的考试,我们通过最终的考试来检验我们最终的学习能力,将测试集信息泄露出去,相当于学生提前知道了考试题目,那最后再考这些提前知道的考试题目,当然代表不了什么,你在最后的考试中得再高的分数,也不能代表你学习能力强。而如果通过测试集来调节模型,相当于不仅知道了考试的题目,学生还都学会怎么做这些题了(因为我们肯定会人为的让模型在测试集上的误差最小,因为这是你调整超参数的目的),那再拿这些题考试的话,人人都有可能考满分,但是并没有起到检测学生学习能力的作用。原来我们通过测试集来近似泛化误差,也就是通过考试来检验学生的学习能力,但是由于信息泄露,此时的测试集即考试无任何意义,现实中可能学生的能力很差。所以,我们在学习的时候,老师会准备一些小测试来帮助我们查缺补漏,这些小测试也就是要说的验证集。我们通过验证集来作为调整模型的依据,这样不至于将测试集中的信息泄露。

所以:验证集通常用于调整超参数,根据几组模型验证集上的表现决定哪组超参数拥有最好的性能。
同时验证集在训练过程中还可以用来监控模型是否发生过拟合,一般来说验证集表现稳定后,若继续训练,训练集表现还会继续上升,但是验证集会出现不升反降的情况,这样一般就发生了过拟合。所以验证集也用来判断何时停止训练

training :validation : test:数据比例:

  • 数据超大:98:1:1(吴恩达)
  • 数据充足时:50:25:25
  • 数据不足时(万级别以下):60:20:20
  • 数据极少时:留出法,交叉验证法

作用总结:

  • train set – 训练模型、确定模型参数
  • validation set – 模型选择、超参数优化
  • test set – 测试模型泛化性能

3. 留出法、交叉验证法、自助法

3.1 留出法 hand-out

留出法直接将数据集划分为两个互斥的部分,其中一部分作为训练集,另一部分用作测试集。

通常训练集和测试集的比例为70%:30%。同时,训练集测试集的划分有两个注意事项:

  1. 尽可能保持数据分布的一致性。避免因数据划分过程引入的额外偏差而对最终结果产生影响。在分类任务中,保留类别比例的采样方法称为“分层采样”(stratified
    sampling)。
  2. 采用若干次随机划分避免单次使用留出法的不稳定性。

3.2 交叉验证法 leave-some-out cross-validation

D = D 1 ∪ D 2 ∪ ⋯ ∪ D k D i ∩ D j = ∅ \begin{aligned} & D=D_1\cup D_2\cup\cdots \cup D_k \\ & D_i\cap D_j = \emptyset \\ \end{aligned} ​D=D1​∪D2​∪⋯∪Dk​Di​∩Dj​=∅​
将数据集粗略地分为比较均等不相交的k份,然后取其中的一份进行测试,另外的k-1份进行训练,然后求得error的平均值作为最终的评价,具体算法流程西瓜书中的插图如下:
在这里插入图片描述
上图会生成10个模型,那现实中,怎么使用交叉验证呢?

k的经验值(西瓜书):

  • 10 最常用
  • 5.20等也常用

作用:

  1. 用于调节超参数
    不同的超参数分别做一次K折交叉验证,简单情况下,取mean最小的那组超参。但实际上,还会考虑error的方差,一般折中,选择mean和方差都较小的。下面的例子我们用iris数据和KNN模型
from sklearn.cross_validation import cross_val_score

knn = KNeighborsClassifier(n_neighbors=5)
# 这里的cross_val_score将交叉验证的整个过程连接起来,不用再进行手动的分割数据
# cv参数用于规定将原始数据分成多少份
scores = cross_val_score(knn, X, y, cv=10, scoring='accuracy')
print scores
[ 1.          0.93333333  1.          1.          0.86666667  0.93333333
  0.93333333  1.          1.          1.        ]

# use average accuracy as an estimate of out-of-sample accuracy
# 对十次迭代计算平均的测试准确率
print scores.mean()
0.966666666667

# search for an optimal value of K for KNN model
k_range = range(1,31)
k_scores = []
for k in k_range:
    knn = KNeighborsClassifier(n_neighbors=k)
    scores = cross_val_score(knn, X, y, cv=10, scoring='accuracy')
    k_scores.append(scores.mean())

print k_scores
[0.95999999999999996, 0.95333333333333337, 0.96666666666666656, 0.96666666666666656, 0.96666666666666679, 0.96666666666666679, 0.96666666666666679, 0.96666666666666679, 0.97333333333333338, 0.96666666666666679, 0.96666666666666679, 0.97333333333333338, 0.98000000000000009, 0.97333333333333338, 0.97333333333333338, 0.97333333333333338, 0.97333333333333338, 0.98000000000000009, 0.97333333333333338, 0.98000000000000009, 0.96666666666666656, 0.96666666666666656, 0.97333333333333338, 0.95999999999999996, 0.96666666666666656, 0.95999999999999996, 0.96666666666666656, 0.95333333333333337, 0.95333333333333337, 0.95333333333333337]

import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(k_range, k_scores)
plt.xlabel("Value of K for KNN")
plt.ylabel("Cross validated accuracy")

  1. 用于模型选择
    用模型A做一次 K折交叉验证,再用模型B做一次,看哪个模型好(error小),选哪个。通常,自动化参数选择时,可利用RandomizeSearchCV与GridSearchCV两种调参方式进行参数的选择。往往通过随机搜索确定大方向,使用网格化搜索进行精细化搜索。
    关于这两种方法的使用参考【GridSearchCV 与 RandomizedSearchCV 调参】
    和【sklearn非线性回归】网格搜索GridSearchCV和随机搜索RandomizedSearchCV
    【英语好的点官方教程,示例的import 后面可以跳对象详情】
# 10-fold cross-validation with the best KNN model
knn = KNeighborsClassifier(n_neighbors=20)
print cross_val_score(knn, X, y, cv=10, scoring='accuracy').mean()
0.98

# 10-fold cross-validation with logistic regression
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression()
print cross_val_score(logreg, X, y, cv=10, scoring='accuracy').mean()
0.953333333333
  1. 用于特征选择
    选特征a,b 做一次 K折交叉验证,再选特征a,b,c做一次k折交叉验证,然后看看哪个效果好。
# read in the advertising dataset
data = pd.read_csv('http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv', index_col=0)
# create a Python list of three feature names
feature_cols = ['TV', 'Radio', 'Newspaper']
# use the list to select a subset of the DataFrame (X)
X = data[feature_cols]

# select the Sales column as the response (y)
y = data.Sales
In [18]:
# 10-fold cv with all features
lm = LinearRegression()
scores = cross_val_score(lm, X, y, cv=10, scoring='mean_squared_error')
print scores
[-3.56038438 -3.29767522 -2.08943356 -2.82474283 -1.3027754  -1.74163618
 -8.17338214 -2.11409746 -3.04273109 -2.45281793]
 
# fix the sign of MSE scores
mse_scores = -scores

# convert from MSE to RMSE
rmse_scores = np.sqrt(mse_scores)
# calculate the average RMSE
print rmse_scores.mean()
1.69135317081

# 10-fold cross-validation with two features (excluding Newspaper)
feature_cols = ['TV', 'Radio']
X = data[feature_cols]
print np.sqrt(-cross_val_score(lm, X, y, cv=10, scoring='mean_squared_error')).mean()
1.67967484191
关于scores产生负值

可换评估方法scoring为’neg_mean_squared_error’,可查看:

3.3 留一法 leave-one-out cross validation

留一法是k折交叉验证k=m(m为样本数)时候的特殊情况。即每次只留下一个样本做测试集,其它样本做训练集,需要训练k次,测试k次。留一法计算最繁琐,但样本利用率最高。因为计算开销较大,所以适合于小样本的情况。

  • 优点:样本利用率高。
  • 缺点:计算繁琐。

3.4 自助法bootstrapping

自助法以自助采样为基础(有放回采样)。每次随机从D中挑选一个样本,放入 D ′ D^{\prime} D′ 中,然后将样本放回D中,重复m次之后,得到了包含m样本的数据集 D ′ D^{\prime} D′。

训练集: D ′ D^{\prime} D′
测试集 : D ∖ D ′ D\setminus D^{\prime} D∖D′ ( ∖ 表示集合减法 \setminus 表示集合减法 ∖表示集合减法)

样本在m次采样中始终不被采到的概率是 ( 1 − 1 m ) m (1-\frac{1}{m})^m (1−m1​)m,取极限 lim ⁡ m → ∞ ( 1 − 1 m ) m = 1 e = 0.368 \lim\limits_{m \to \infty}(1-\frac{1}{m})^m=\frac{1}{e}=0.368 m→∞lim​(1−m1​)m=e1​=0.368。即 D D D中约有36.8%的样本未出现在 D ′ D^{\prime} D′中。这样,仍然使用m个训练样本,但约有1/3未出现在训练集中的样本被用作测试集。

  • 优点:自助法在数据集较小、难以有效划分训练/测试集时很有用。
  • 缺点:然而自助法改变了初始数据集的分布,这回引入估计偏差。

参考:
https://www.cnblogs.com/hider/p/15781829.html
https://zhuanlan.zhihu.com/p/35394638
https://zhuanlan.zhihu.com/p/48976706
https://blog.youkuaiyun.com/pxhdky/article/details/85206705
https://blog.youkuaiyun.com/JasonDing1354/article/details/50562513

ML001 机器学习预备知识 机器学习所需预备知识 阅读详情

相关推荐

Vcenter安全加固-防火墙-只允许特定的IP地址访问Vcenter

3、此时除了被允许的IP地址可以访问之外,其余地址均被防火墙阻挡。2、再进行0.0.0.0/0匹配所有其他IP地址进行拒绝访问。1、只需要关注接受和拒绝即可。2、其余选择不是这个场景使用的。1.只允许特定的IP地址访问Vcenter。1、登录Vcenter管理界面。2、点击防火墙-添加。

博然的宝藏库 7281

机器学习-前期知识储备

1. 什么是机器学习? 机器学习:利用数学模型来理解数据,发现数据中的规律,用作数据的分析和预测。 数据通常由一组向量组成,这组向量中的每个向量都是一个样本,我们用xix_ixi​来表示一个样本,其中i=1,2,3,...,Ni=1,2,3,...,Ni=1,2,3,...,N,共N个样本,每个样本xi=(xi1,xi2,...,xip,yi)x_i=(x_{i1},x_{i2},...,x_{ip},y_i)xi​=(xi1​,xi2​,...,xip​,yi​)共p+1个维度,前p个维度的每个维度我们

qq_45396577的博客 673

RTAB-Map实战:用RGB-D相机5步搞定机器人自主建图(附避坑指南)

本文提供了一份详细的RTAB-Map实战指南,通过5个核心步骤,指导用户使用RGB-D相机(如Intel RealSense D435i)快速实现机器人自主建图。内容涵盖环境准备、传感器启动、核心参数配置、实战调优及地图后处理,并重点解析了算法关键参数与常见避坑方案,旨在帮助初学者高效搭建鲁棒的视觉SLAM系统。

g9h0i1的博客 789

机器学习入门基础(万字总结)(建议收藏!!!)

机器学习是人工智能的重要技术基础,涉及的内容十分广泛。本文章涵盖了机器学习的基础知识,主要包括机器学习的概述、 回归、分类、聚类、神经网络、文本分析、图像分析、深度学习等经典的机器学习基础知识,还包括深度学习入门等拔高内容。介绍机器学习的基础概念和知识,包括机器学习简史、主要流派、与人工智能、数据挖掘的关系、应用领域、算法、一般流程等。伴随着计算机计算能力的不断提升以及大数据时代的迅发展人工智能也取得了前所未有的进步。

subsistent的博客 22万+

手机抽奖页面代码html,html5大转盘抽奖支持手机转盘抽奖代码

特效描述:html5 大转盘抽奖 支持手机 转盘抽奖代码。html5转盘,html5抽奖,手机转盘,手机抽奖,手机转盘抽奖,可配置奖品抽奖。代码结构1. 引入CSS2. 引入JS3. HTML代码大转盘活动var turnplate={restaraunts:[],//大转盘奖品名称colors:[],//大转盘奖品区块对应背景颜色outsideRadius:192,//大转盘外圆的半径textR...

weixin_39628551的博客 1867

信道估计准则演进:从LS、MMSE到LMMSE的工程权衡

本文深入探讨了信道估计准则的演进历程,从LS、MMSE到LMMSE的工程权衡。通过对比分析三大经典算法的数学本质、工程实现及适用场景,揭示了在计算复杂度、实时性和性能之间的关键取舍。文章结合4G/5G基站项目实战经验,提供了算法选型的三维决策模型和前沿发展建议,为无线通信系统设计提供实用指导。

weixin_29327525的博客 282

机器学习之预备知识

机器学习之预备知识 1,机器学习的目的:从数据到知识 机器学习之概念有三: 计算机系统能够利用经验提高自身的性能 学习就是一个基于经验数据的函数估计问题 提取重要模式、趋势,并理解数据,即从数据中学习 2,机器学习的基本框架 数据集合和对象特性表示 对象特性输入表示是我们能够得到的对象的观测描述; 对象特性输出表示是我们学习得到的对象的特性描述。 根据丑小鸭定理(Ugly Duckling...

搞点學術的研究生 586

Dify插件实战:实时渲染AI生成的HTML/SVG/Canvas代码

在现代Web开发与AI应用集成中,前端渲染技术是实现动态内容展示的核心。其原理在于浏览器引擎解析HTML、CSS、JavaScript等代码,并将其转换为可视化的用户界面。这项技术的价值在于极大提升了开发效率与用户体验,允许开发者快速构建和迭代交互式应用。在AI应用开发领域,尤其是大语言模型(LLM)集成场景,如何将模型生成的**结构化代码**(如描述UI的HTML或数据图表的SVG)实时转化为可视化组件,成为一个关键需求。这直接关系到**Dify**等低代码AI平台能否提供流畅的、所见即所得的交互体验。本

weixin_42545664的博客 499

ML算法——线代预备知识随笔【机器学习】

的各种矛盾回答搞晕了,奇异值分解的博客很少提到σ的排列问题,浪费了很多时间,最终在周志华的《机器学习》附录中找到了准确描述。矩阵分解的本质是将原本复杂的矩阵分解成对应的几个简单矩阵的乘积的形式。这种情况下,如果我们想通过矩阵分解的形式将原本比较复杂的矩阵问题分解成比较简单的矩阵相乘的形式,会对其进行。其中,U是一个m x m的正交矩阵,Σ 是一个m x n的矩阵,其对角线上的元素称为奇异值,若A可逆,则称A为非奇异方阵,也就说若A不是满秩,则为奇异矩阵。,进而求得特征向量 μ,组成矩阵 V。

cold的博客 1269

2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++小学组:带解析)(7月4日试卷一)【文末附答案和解析】

2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++小学组:带解析)(7月4日试卷一)【文末附答案和解析】

王老师青少年编程 1738

华为OD机试 - 荒岛求生 - 栈Stack(Python/JS/C/C++ 新系统 100分)

每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 2838

ML(机器学习)预备知识

我的毕设是做一个深度学习的项目。所以,现在正在学机器学习方面的知识。我继续跟大家分享一波。 import numpy as np import matplotlib.pyplot as plt #encoding = "utf-8" #Author:Mr.Pan_学狂 #finish_time:2022/2/8 23:48 def array_Matrix(): x_array = np.array([1.0,2.0,3.0]) print(x_array) print(type(

Forerunner and Successor 先駆者と後継者 909

【2026年华为暑期实习(非AI方向(通软&嵌软&测试&算法&数据科学))-4月8日-第一题- 包裹的编码】(题目+思路+Java&C++&Python解析+在线测试)

摘要:该问题要求将给定的十进制整数N转换为混合进制编码字符串,并处理回文检测。首先根据N的符号位确定编码首位(0或1),然后按输入的进制序列依次对N的绝对值进行取余和整除操作,得到编码数组。将数组元素转换为字母后生成字符串,若字符串为回文则添加"(palindrome)"后缀;否则输出最长回文子串(字典序最小)。算法采用中心扩展法检测回文,时间复杂度为O(L²),空间复杂度为O(L),其中L为字符串长度。

m0_73659489的博客 130

机器学习应该准备哪些数学预备知识?

转 https://www.zhihu.com/question/36324957 https://www.zhihu.com/question/36324957/answer/139408269 机器学习应该准备哪些数学预备知识? 数据分析师,工作中经常使用机器学习模型,但是以调库为主。 自己一直也在研究算法,也裸写过一些经典的算法。 最近在看PRML这类书籍,感觉有点吃劲,主要...

weixin_30577801的博客 915

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Foundations of Machine Learning 2nd——第一章 机器学习预备知识

Fundations of Machine Learning 2nd——第一章 机器学习预备知识前言1.11.21.3 一些常见的学习任务学习阶段1.5 学习场景 前言 1.1 1.2 1.3 一些常见的学习任务 分类:给每一个元素赋予类别(标签)的问题。例如给文档赋予:政治、商业、运动等标签,给图片赋予车辆、行人、飞机等标签。类别数量一般少于几百,不过在一些困难问题里也可以很多,甚至在光学字符识别、文本分类、语音识别里可以有无数个类别。 拟合:对于每一个元素预测他的真实值的问题。例如预测股市等。在拟合问

qq_43631376的博客 1131

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

入门机器学习需要预备哪些数学知识?

本文原作者RobinShen,本文整理自作者在知乎《机器学习应该准备哪些数学预备知识?》问题下回答。      2012年之后,随着深度学习的浪潮卷来,大家逐渐认可了神经网络/深度学习这个东西,都知道它在很多应用场景下面表现得很好。但是,它常常被人诟病的一点就是,就算它表现很好,却没有一个很好的理论解释。       相比之下,很多算法虽然实际表现一般,但是在理论解释这一方面就远胜神经网络了。典型

机器学习算法与人工智能 2794

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

深度学习预备知识-学习算法、机器学习的分类、机器学习的整体流程

weixin_46414576的博客 144

机器学习(1、2)预备知识

摘要:机器学习一直是计算机科学中非常热门的领域。本文对过去几十年中被普遍认可的机器学习算法进行了概括,包括线性模型、决策树、支持向量机、贝叶斯分类器、聚类、集成学习、神经网络、强化学习等(由于是我个人的理解,所以可能有些是错的)。算法和公式是机器学习的核心,但是本文企图使用尽可能少的公式和符号来把各种机器学习算法描述清楚。机器学习算法众多,没有人能够也没有必要真正了解清楚所有的算法。而这些概述能对

treaser的博客 973

Chapter1 机器学习预备知识

这一章快速过掉了 AT FIRST 机器学习 = Machine Learning = ML 关键术语 数据集dataset 定义 数据的集合 划分 训练集 training set 测试集 test set 验证集 dev set 样本sample / 实例 instance 样本量 / 数据量 data size 表述样本的数量 特征 feature / 属性 attribute 特征维度 feature dimension 表示特征的数量 ML定义

pppgu‘s blog 463

【机器学习】1-机器学习概述(机器学习的定义、应用领域、机器学习流程、机器学习分类、预备知识)

但是就像鸡蛋虽然已经打碎了,西红柿已经洗好了,但是没有搅拌鸡蛋没有西红柿切片,他做出来的味道可能不是那么好,所以这个特征工程也是一个道理,就是把他加工一下,加工成更好用的数据就是做特征工程,比如归一化、降维等等。模型就是机器学习之后它学到的东西的大脑(也就是参数),就像人学习完了知识之后他就存在脑子里了,机器学习了之后就是固化成一些参数,每次用的时候直接就知道了,不用现学。计算机视觉(人脸识别、目标检测、图像识别、图像分类)、自然语言处理(文字识别、问答系统语音识别)相当于菜好了可以吃了。

m0_62547355的博客 544
上一篇: [Spark]-协同过滤
下一篇: 机器学习相关 概率论重点笔记
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值