Python入门之机器学习(非常详细)篇幅拉满,一般人看不完!

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

一、什么是机器学习

什么是机器学习?机器学习其实就是想让计算机像人一样思考而研发出的计算机理论,目前常用的机器学习有以下几种算法:

  • 监督学习 supervised learning;
  • 非监督学习 unsupervised learning;
  • 半监督学习 semi-supervised learning;
  • 强化学习 reinforcement learning;

监督学习是不断向计算机提供数据(特征),并告诉计算机对应的值(标签),最后通过大量的数据,让计算机自己学会判断和识别。例如Google Photo,你在APP中输入狗,这时就会弹出与狗相关的图片,这背后使用的算法就是监督学习。通过告诉计算机狗长什么样(特征),最后教会计算机认识狗(标签)。再比如今日头条,你使用APP的时间越长,给你推送的内容就越是你平时感兴趣的内容。通过对用户平时日常使用数据(特征)的分析,找到用户的兴趣爱好(标签),进而更精准的推送内容。

非监督学习与监督学习的区别是,只向计算机提供数据(特征),但并不提供对应的值(标签)。例如需要计算机学会识别猫和狗,这时仅提供猫和狗的图片(特征),但是并不告诉计算机,哪些图片是猫,哪些图片是狗,让计算机自己去总结归纳出两者的特征规律。

半监督学习是综合了监督学习和非监督学习两者的特点,利用少量有标签的样本,和大量没有标签的样本对计算机进行训练。

强化学习是将计算机放入一个陌生的环境中,让它自己去学习,其中包含了4个关键要素,分别是环境(environment)、状态(state)、行动(action)和奖励(reward)。例如要设计一款自动投篮机器,首先让机器自己去选择投篮的角度、力度等动作进行尝试,告诉机器如果投篮命中便能获得奖励,之后机器会根据练习所产生的数据,不断修改自身的动作策略,经过数次迭代之后,学习并完成投篮任务。战胜李世石的AlphaGo,所使用的就是强化学习。强化学习与监督学习和非监督学习最大的不同是,不需要使用海量的数据去“喂养”机器,而是通过不断地尝试去获取数据。

使用Python进行机器学习时,都会用到一个非常强大的第三方包,那就是scikit-learn。

Sklearn包含了四类算法,分别是回归(regression)、分类(classification)、聚类(clustering)和降维(dimensionality reduction)。其中回归和分类是监督式学习,下面使用Python对简单线性回归和逻辑回归分类进行简要介绍。

二、简单线性回归

线性回归(linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。

简单线性回归方程其实就像我们初中学习的二元一次方程:y=a+bx

其中a称作截距,b称作回归系数,x为自变量,y为因变量。

简单线性回归分析通常包含以下步骤:

  • 提出问题
  • 理解数据
  • 数据清洗
  • 构建模型
  • 评估模型

1.提出问题

假设现在提出一个问题,通过收集学生学习时间和分数,得出学习时间与分数之间的相关关系,其中特征为学习时间,标签为分数。

2.理解数据

采集所需的数据,并导入Python。

import pandas as pd
examDict = {
   
    '学习时间':[0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,
            2.50,2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50],
    '分数':[10,  22,  13,  43,  20,  22,  33,  50,  62,  
              48,  55,  75,  62,  73,  81,  76,  64,  82,  90,  93]}
examDf = pd.DataFrame(examDict)
print(examDf.head())
学习时间  分数
0  0.50  10
1  0.75  22
2  1.00  13
3  1.25  43
4  1.50  20
#提取特征和标签
#特征features
exam_X=examDf.loc[:,'学习时间']
#标签labes
exam_y=examDf.loc[:,'分数']

#绘制散点图
import matplotlib.pyplot as plt
plt.scatter(exam_X,exam_y,color='b',label='exam data')
#添加图标标签
plt.xlabel('Hours') #X轴命名
plt.ylabel('Score') #Y轴命名

print(plt.show())

img

通过观察上面的散点图,我们可以对相关性做出初步的分析。相关性通常有3种情况,正线性相关、负线性相关和非线性相关。当线性回归方程中的回归系数b大于0,即直线朝上时,为正线性相关,回归系数b小于0,即直线朝下时,为负线性相关。我们还可以通过计算相关系数r,对相关性大小进行判断。相关系数公式如下:

img

#计算相关系数r
rDf = examDf.corr()
print('相关系数矩阵:\n',rDf)
print('相关系数r=',rDf.iloc[0,1])
相关系数矩阵:
           学习时间        分数
学习时间  1.000000  0.923985
分数    0.923985  1.000000
相关系数r= 0.9239852119728443

3.数据清洗

本案例中数据较为简单,主要是为了介绍简单线性回归的操作过程,具体的步骤可查看,Python入门之Numpy与Pandas中的数据清洗一节。

4.构建模型

利用交叉验证函数中的train_test_split()进行建模分析。交叉验证是指:

交叉验证(Cross Validation)也称作循环估计(Rotation Estimation),是一种统计学上将数据样本切割成较小子集的实用方法。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预测。交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。

①创建模型

利用sklearn中train_test_split方法进行数据分割,将数据随机分成训练数据和测试数据,占比为8:2。

from sklearn.model_selection import train_test_split
#建立训练数据和测试数据
X_train,X_test,y_train,y_test = train_test_split(exam_X,exam_y,train_size=0.8) #train_size指训练数据占比
#输出数据大小
print('原始数据特征:',exam_X.shape,
      '训练数据特征:',X_train.shape,
      '测试数据特征:',X_test.shape)

print('原始数据标签:',exam_y.shape,
      '训练数据标签:',y_train.shape,
      '测试数据标签:',y_test.shape)
原始数据特征: (20,) 训练数据特征: (16,) 测试数据特征: (4,)
原始数据标签: (20,) 训练数据标签: (16,) 测试数据标签: (4,)
#绘制散点图
import matplotlib.pyplot as plt

#散点图
plt.scatter(X_train, y_train, color="blue", label="train data")
plt.scatter(X_test, y_test, color="red", label="test data")

#添加图标标签
plt.legend(loc=4) #设置图签的位置
plt.xlabel("Hours")
plt.ylabel("Score")
#显示图像
plt.show()

img

②训练模型

#第1步:导入线性回归第三方包
from sklearn.linear_model import LinearRegression
#第2步:创建线性回归模型
model = LinearRegression()
#将训练数据特征和测试数据特征转换成二维数组
'''
reshape是重新定义行数和列数。如果行的参数是-1,就会根据所给的列数,
自动按照原始数组的大小形成一个新的数组,例如reshape(-1,1)就是改变
成1列的数组,这个数组的长度是根据原始数组的大小来自动形成的。
例如原始数组总共是2行*3列=6个数,那么这里就会形成6行*1列的数组。
'''
X_train = X_train.values.reshape(-1,1) 
X_test = X_test.values.reshape(-1,1)
#第3步:训练模型
model.fit(X_train,y_train)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

③计算最佳拟合线

最佳拟合线:y= + x,截距intercept:a,回归系数:b

回归分析求最佳拟合线的常用方法为最小二乘法,通过最小二乘法,可以使得误差平方和最小,进而求出a和b的值。 这个数学问题过于复杂,如果想知道证明的原理可自行搜索学习。误差平方和的计算公式为:

img

#截距
a = model.intercept_
b = model.coef_
print('最佳拟合线:y=%f+%fx'%(a,b))
最佳拟合线:y=10.251797+15.840256x
#绘制训练数据散点图
plt.scatter(X_train, y_train, color='blue', label="train data")

#训练数据的预测值
y_train_pred = model.predict(X_train)
#绘制最佳拟合线
plt.plot(X_train, y_train_pred, color='black', linewidth=3, label="best line")

#添加图标标签
plt.legend(loc=4)
plt.xlabel("Hours")
plt.ylabel("Score")
#显示图像
plt.show()

img

5.模型评估

要想评估模型的精确度,可以使用决定系数R平方进行判断,R平方越大,表明回归模型越精确。使用测试数据进行模型评估,利用score方法,对第一个参数X_test用拟合曲线自动计算出y预测值。决定系数R平方计算公式如下:

img

#线性回归的scroe方法得到的是决定系数
#评估模型:决定系数
r2 = model.score(X_test , y_test)
print(r2)
0.8823686336975715

把训练数据集(图中蓝色的点),和测试数据集(图中红色的点)放到一张图上来进行比较,并在图上标注出决定系数R平方。

#第1步:绘制训练数据散点图
plt.scatter(X_train, y_train, color='blue', label="train data")

#第2步:用训练数据绘制最佳拟合线
#最佳拟合线训练数据的预测值
y_train_pred = model.predict(X_train)
#绘制最佳拟合线:标签用的是训练数据的预测值y_train_pred
plt.plot(X_train, y_train_pred, color='black', linewidth=3, label="best line")

#第3步:绘制测试数据的散点图
plt.scatter(X_test, y_test, color='red', label="test data")
#添加图标标签
plt.legend(loc=4)
plt.xlabel("Hours")
plt.ylabel("Score")

plt.show()

img

三、逻辑回归

逻辑回归(Logistic Regression)主要用来解决二分类问题,表示某件事情发生的可能性。什么是二分类呢,说简单点就是答案只有Yes和No两种可能。逻辑回归和线性回归一样,在机器算法中都属于监督学习,但是逻辑回归在Sklearn的4类算法中属于分类算法。

逻辑回归的公式如下:

img

逻辑函数图像如下:

img

可以看到,逻辑回归函数是一个s形的曲线,取值在[0,1]之间,在远离0的地方函数的值会很快接近0或者1。通常可以选择0.5作为阈值,划定一个决策面,当y>=0.5时,确定标签为1,当y<0.5时,确定标签为0。例如之前所举的今日头条的例子,就可以通过逻辑回归去找到关于用户喜好程度的决策面,通过下图可以帮助理解决策面的含义。

img

利用Python进行逻辑回归分析的方法与简单线性回归分析的步骤一致,同样是包括提出问题、理解问题、数据清洗、构建模型、模型评估5步。

1.提出问题

假设现在提出一个问题,通过收集学生学习时间和通过考试情况,得出学习时间与通过考试之间的相关关系,其中特征为学习时间,标签为通过考试。

2.理解数据

采集所需的数据,并导入Python。

import pandas as pd
#采集数据
exam2Dict = {
   
    '学习时间':[0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,2.50,
            2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50],
    '通过考试':[0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1]}
examDf = pd.DataFrame(exam2Dict)
print(examDf)
学习时间  通过考试
0   0.50     0
1   0.75     0
2   1.00     0
3   1.25     0
4   1.50     0
5   1.75     0
6   1.75     1
7   2.00     0
8   2.25     1
9   2.50     0
10  2.75     1
11  3.00     0
12  3.25     1
13  3.50     0
14  4.00     1
15  4.25     1
16  4.50     1
17  4.75     1
18  5.00     1
19  5.50     1
#特征features
exam2_X = examDf.loc[:,'学习时间']
exam2_y = examDf.loc[:,'通过考试']

#绘制散点图
import matplotlib.pyplot as plt
plt.scatter(exam2_X,exam2_y,color='b',label='exam data')
#添加图标标签
plt.xlabel('Hours') #X轴命名
plt.ylabel('Pass') #Y轴命名

print(plt.show())

img

3.数据清洗

本案例中数据较为简单,主要是为了介绍逻辑回归的操作过程,此步暂时省略。

4.创建模型

与线性回归创建模型一样,同样利用sklearn中train_test_split方法进行数据分割,将数据随机分成训练数据和测试数据,占比为8:2。

①创建模型

from sklearn.model_selection import train_test_split
#建立训练数据和测试数据
X_train,X_test,y_train,y_test = train_test_split(exam2_X,exam2_y,train_size=0.8) #train_size指训练数据占比
#输出数据大小
print('原始数据特征:',exam2_X.shape,
      '训练数据特征:',X_train.shape,
      '测试数据特征:',X_test.shape)

print('原始数据标签:',exam2_y.shape,
      '训练数据标签:',y_train.shape,
      '测试数据标签:',y_test.shape)
原始数据特征: (20,) 训练数据特征: (16,) 测试数据特征: (4,)
原始数据标签: (20,) 训练数据标签: (16,) 测试数据标签: (4,)
#绘制散点图
import matplotlib.pyplot as plt

#散点图
plt.scatter(X_train, y_train, color="blue", label="train data")
plt.scatter(X_test, y_test, color="red", label="test data")

#添加图标标签
plt.legend(loc=4) #设置图签的位置
plt.xlabel("Hours")
plt.ylabel("Pass")
#显示图像
plt.show()

img

②训练模型

#第1步:导入逻辑回归
from sklearn.linear_model import LogisticRegression
#第2步:创建模型:逻辑回归
model = LogisticRegression()

X_train = X_train.values.reshape(-1,1) 
X_test = X_test.values.reshape(-1,1)
#第3步:训练模型
model.fit(X_train,y_train)

LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_iter=100,
                   multi_class='warn', n_jobs=None, penalty='l2',
                   random_state=
从零开始掌握Python机器学习:七步教程 基础篇 前言 「开始」往往是最难的,尤其是当选择太多的时候,一个往往很难下定决定做出选择。本教程的目的是帮助几乎没有 Python 机器学习背景的新手成长为知识渊博的实践者,而且这个过程中仅需要使用免费的材料和资源即可。 第一步:基本 Python 技能 如果我们打算利用 Python 来执行机器学习,那么对 Python 有一些基本的了解就是至关重要的。 首先,你需要安装 Python。因为我们后... 阅读详情

相关推荐

Python入门机器学习(超详细),篇幅一般看不完

什么是机器学习?监督学习 supervised learning;非监督学习 unsupervised learning;半监督学习 semi-supervised learning;强化学习 reinforcement learning;监督学习是不断向计算机提供数据(特征),并告诉计算机对应的值(标签),最后通过大量的数据,让计算机自己学会判断和识别。例如Google Photo,你在APP中输入狗,这时就会弹出与狗相关的图片,这背后使用的算法就是监督学习。

python03012的博客 5624

python --机器学习(基本算法详解)SciPy、Numpy、Matplotlib

数据集在计算机中,数据集指的是任何数据集合。它可以是从数组到完整数据库的任何内容。通过查看数组,我们可以猜测平均值可能约为 80 或 90,并且我们还可以确定最大值和最小值,但是我们还能做什么?通过查看数据库,我们可以看到最受欢迎的颜色是白色,最老的车龄是 17 年,但是如果仅通过查看其他值就可以预测汽车是否具有 AutoPass,该怎么办?这就是机器学习的目的!分析数据并预测结果!在机器学习中,通常使用非常大的数据集。...............

weixin_44634704的博客 1万+

如何使用 Python 进行机器学习

​ 全套学习路线图、课程,机器学习工作流程如下。 Python+工智能 入门Python基础→Python数据挖掘 中级: 机器学习 进阶: NLP自然语言 高级: OpenCV基础→深度学习 ​

技术专家 2145

Python入门系列】第十一篇:Python机器学习入门

机器学习工智能领域中的重要分支,它利用数据和统计方法来训练机器模型,从而实现自动化的决策和预测。Python作为一种简单易用且功能强大的编程语言,成为了机器学习领域的首选工具之一。本文将介绍Python机器学习的基础知识和常用库。机器学习是一种工智能的分支,通过利用数据和统计算法,让计算机能够自动学习和改进,从而完成特定任务。以下是机器学习的作用总结:预测和分类:机器学习可以通过对历史数据的学习,预测未来事件的发生概率,或将数据分为不同的类别。

杰西笔记 4677

基于python实现的6种机器学习常用算法介绍以及优缺点分析【附代码】

本文将会使用python语言机器学习中常用的6种算法进行复现,代码会贴在每章后面接下来将探讨这些算法的背景、原理、优缺点及应用场景。

Henry的博客 5074

机器学习】手把手带你从零开始学机器学习(超详细),十万字篇幅一般看不完

机器学习零基础完全指南》是一份面向初学者的全面教程,采用通俗易懂的语言和丰富案例,帮助零基础学习者掌握机器学习核心概念与实践技能。文档首先通过"猫狗识别"的对比案例生动解释机器学习与传统编程的区别,阐明其"从数据中学习规律"的本质。内容涵盖机器学习基础概念(数据集、特征、标签等术语详解)、经典算法(线性回归、决策树、SVM等8大算法)、深度学习入门(神经网络原理与常见架构),以及完整的实战流程与模型优化方法。

m0_74779543的博客 1583

如何入门Python机器学习

编者按:本书节选自图书《Python机器学习实战》,Python本身带有许多机器学习的第三方库,但本书在绝大多数情况下只会用到Numpy这个基础的科学计算库来进行算法代码的实现。这样做的目的是希望读者能够从实现的过程中更好地理解机器学习算法的细节,以及了解Numpy的各种应用。不过作为补充,本书会在适当的时候应用scikit-learn这个成熟的第三方库中的模型。 “机器学习”在最近虽可能...

CSDN 人工智能 11万+

初学者入门机器学习 (ML)的推荐教程

了解基本的机器学习概念并不难。有大量免费的在线博客文章、视频和编码教程可以引导您了解基础知识——从介绍性内容到常见应用程序,再到算法和应用技能。这篇文章总结了一些用于介绍 ML 的最佳免费选项。它按逻辑顺序排列,每个概念都建立在上一个概念的基础上。

u010542847的博客 4459

Unity 机器学习(ML-Agents) 基础

Unity 机器学习 ML-Agents 基础Unity 官方示例下载ML-Agents 部分Python 下载AnacondaAnaconda 虚拟环境构建 ML-Agents安装 ML-Agents Python 包安装 ML-Agents 包ML-Agents 入门指南Unity Hub 部分虚拟环境 训练虚拟环境 训练运行:虚拟环境 开始训练:虚拟环境 观察训练进度:虚拟环境 停止训练虚拟环境 恢复训练虚拟环境 训练模型ML-Agents 打造新的学习环境ML-Agents 资产导入 Unity 官

Maddie_Mo的博客 1万+

简单粗暴地入门机器学习

有很多小伙伴问过我零基础要怎么入门机器学习或者工智能,今天来提炼一下,方便志同道合的朋友们参考。记得我刚入此山洞准备修炼的时候,就 Google 了好多这类的问题,那时候觉得大家的建议好多呀,这条路看起来真长,那么多东西要学,那么多书要看,那么多有用的课程要学。现在我可以就自己走过的坑坑包包来推荐一条简单粗暴的路径。[step 1: 方向]在行动之前,先想好这几个最基本的问题,如果自己想不全都可以

aliceyangxi1987的博客 3万+

Python机器学习入门|系列教程

一次性与大家分享机器学习中最常用的六个 Python 模块,包括 NumPy,Pandas,Matplotlib,Scikit-Learn,PyTorch 与 Tensorflow 的快速上手教程。TensorFlow 是由 Google 开发的一个开源深度学习框架,它提供了丰富的 API 和工具,其核心特点是其灵活的计算图和自动微分功能,使得用户可以轻松地实现复杂数学运算和搭建复杂的神经网络。NumPy 是 Python 中最基础的科学计算库,为我们提供了高性能的多维数组处理和计算功能。

farfarcheng的博客 2696

ML4T工作流程:从ML模型到策略回测(交易中的机器学习)

除了大量活跃的个交易者社区,也有几家银行和交易公司使用backtrader来原型和测试新策略,然后将其移植到生产就绪的平台,如Java。例如,您可以使用我们在本书中遇到的scikit-learn等通用ML库设计和测试生成信号的ML模型,并将模型输出输入单独的回测引擎。这些对象相互作用,以便于输入数据的处理和因子计算,制定和执行策略,接收和执行订单,以及跟踪和度量业绩。简单地说,回测引擎遍历历史价格(和其他数据),将当前值传递给您的算法,收到订单作为回报,并跟踪所得仓位及其价值。

weixin_41908924的博客 1482

AIDE ML — 机器学习工程代理

AIDE 算法是一个树搜索代理,能够自主地编写、调试和测试代码,直到用户定义的指标达到最大值。由 LLM 驱动的代理,能够编写、评估和改进机器学习代码。知道还有其他引用或衍生自 AIDE 的公共项目吗?提示:使用完全本地化的模型时,性能可能会有所下降。使用侧边栏粘贴您的 API 密钥,上传数据,设置。用户界面显示实时日志、解决方案树和最佳代码。使用的Python 包的形式发布,并包含。智能体使用数据集,并用通俗易懂的英语描述。完全本地化(代码+评估器——无外部调用)替换新的搜索启发式方法、评估器。

强化学习曾小健 2814

Unity中的机器学习ML-Agents

一:介绍 二:搭建环境 ——升级Python版本 因为mac自带的是python2.7.X的版本, 查看当前python版本:python -V ——搭建Python环境 安装Anconda:https://www.anaconda.com/products/individual

L的博客 7627

python自动机器学习库auto_ml模块

在公众号「python风控模型」里回复关键字:学习资料什么是 AutoML?自动化机器学习提供了方法和流程,使非机器学习专家可以使用机器学习,以提高机器学习的效率并加速机器学习的研究。近年来,机器学习 (ML) 取得了相当大的成功,并且越来越多的学科依赖它。然而,这种成功在很大程度上依赖于机器学习专家来执行以下任务:预处理和清理数据。选择并构建适当的特征。选择合适的模型族。优化模型超参数。设计神经网络的拓扑结构(如果使用深度学习)。后处理机器学习模型。批判性地分析获得的结果。由于这些任务的复杂性通常超出

fulk6667g78o8的专栏 2744

AI工智能(3):Python 入门机器学习

Python机器学习中最常用的编程语言之一,因其易于学习、强大的库支持和社区生态系统。接下来,我将逐步说明如何通过 Python 入门机器学习,并介绍需要的一些常用库。首先,确保你已经安装了 Python,你可以访问Python 官方网站下载和安装最新版本。如果你还不熟悉 Python,可以先看之前的python入门教程。- 例如,NumPy、Pandas 和 Scikit-learn。- 数据是机器学习的核心。你需要加载数据并进行必要的预处理(例如数据清洗、缺失值填补等)。

游王子og的博客 1553

Python 机器学习入门python环境搭建

从根源寻找问题,我们在使用python语言编写程序之前需要下载一个python解释器,也就是python.exe.一个python环境中需要有一个解释器,和一个包集合解释器: 解释器根据python的版本大概分为2和3。python2和3之间无法互相兼容,也就是说用python2语法写出来的脚本不一定能在python3的解释器中运行。

JAVA 2648

Unity机器学习1 ML-Agents环境搭建

第一步,创建一个新的Unity项目 我起名为MLApp 第二部,首先安装python3.7 https://www.python.org/downloads/windows/ py exit() 第三步,Unity项目中创建虚拟环境的脚本运行库模块 cd UnityProject\MLApp py -m venv venv 完成后可以看到多了一个venv目录。 通过activeate.bat激活环境脚本,不会影响到其他的python的运行环境。 我们运行他。 运行后: 安装数据流执行计算的开源图,首

thinbug的专栏 2073
上一篇: 如何用Python批量获取知网文献信息?
下一篇: 这五种Python算法,你一定要知道 !!
码农必胜客
博客等级 码龄3年 4845粉丝 362原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值