R语言机器学习(原书第2版)
译者序
前言
第1章 机器学习和R语言入门1
1.1 了解发展历程1
1.1.1 统计学习2
1.1.2 机器学习2
1.1.3 人工智能3
1.1.4 数据挖掘3
1.1.5 数据科学4
1.2 概率与统计5
查看完整
前言
第1章 机器学习和R语言入门1
1.1 了解发展历程1
1.1.1 统计学习2
1.1.2 机器学习2
1.1.3 人工智能3
1.1.4 数据挖掘3
1.1.5 数据科学4
1.2 概率与统计5
查看完整
曼卡西克·拉玛苏布兰马尼安(Karthik Ramasubramanian)就职于印度创业技术公司 Hike Messenger。他一直为零售、电子商务和技术行业解决跨行业的数据科学问题,开发数据驱动的解决方案并进行原型构建。Karthik 对整个数据科学生命周期(从探索数据问题,到创建数据科学模型,以及开发各行业相关产品)都具有丰富的经验。 阿布舍克·辛格(Abhishek Singh)他领导的数据科学专业团队正在解决粮食安全、网络安全、自然灾害、医疗保健以及更多领域的紧迫问题。他对美国银行的资产进行了压力测试,开发了保险定价模型,并优化了客户的电信体验。他积极参与数据科学分析相关的思想交流、创作、公开演讲、会议和培训。他坚定地支持负责任地使用人工智能来消除偏见,并坚信合理使用AI将使生活更美好。
本书是介绍机器学习技术的综合指南,从基础的统计学原理和R语言编程知识,到核心的机器学习理论和算法分析,以及机器学习模型的评估和改进方法,再到机器学习技术在大数据平台上的应用,书中都有详细介绍。
本书主要在第1版的基础上增加了两个部分:*个是关于时间序列模型的新章节(第 9 章),这是一个源于统计学的传统主题。第二个新增的章节是深度学习(第 11 章),它是机器学习的一个迅速崛起的子领域。除了增加这两个章节之外,本书中的文本和代码会以一种读者友好的新格式来整体呈现。新版会继续专注于使用流行的统计编程语言 R 来构建用例。对于深度学习这样的主题,我们建议采用 Python 语言来配合 TensorFlow 这样的框架。但是,在第2版中,我们会向读者展示如何在 TensorFlow 中使用 R 语言编程,因此如果读者只熟悉 R,可以暂时无须学习 Python。与第1版一样,我们通过各种实…
查看完整
本书主要在第1版的基础上增加了两个部分:*个是关于时间序列模型的新章节(第 9 章),这是一个源于统计学的传统主题。第二个新增的章节是深度学习(第 11 章),它是机器学习的一个迅速崛起的子领域。除了增加这两个章节之外,本书中的文本和代码会以一种读者友好的新格式来整体呈现。新版会继续专注于使用流行的统计编程语言 R 来构建用例。对于深度学习这样的主题,我们建议采用 Python 语言来配合 TensorFlow 这样的框架。但是,在第2版中,我们会向读者展示如何在 TensorFlow 中使用 R 语言编程,因此如果读者只熟悉 R,可以暂时无须学习 Python。与第1版一样,我们通过各种实…
查看完整
译者序
前言
第1章 机器学习和R语言入门1
1.1 了解发展历程1
1.1.1 统计学习2
1.1.2 机器学习2
1.1.3 人工智能3
1.1.4 数据挖掘3
1.1.5 数据科学4
1.2 概率与统计5
1.2.1 计数和概率的定义5
1.2.2 事件和关系7
1.2.3 随机性、概率和分布9
1.2.4 置信区间和假设检验9
1.3 R语言入门13
1.3.1 基本组成部分13
1.3.2 R语言的数据结构14
1.3.3 子集处理15
1.3.4 函数和Apply系列17
1.4 机器学习过程工作流19
1.4.1 计划20
1.4.2 探索20
1.4.3 构建20
1.4.4 评估20
1.5 其他技术21
1.6 小结21
第2章 数据准备和探索22
2.1 规划数据收集23
2.1.1 变量类型23
2.1.2 数据格式24
2.1.3 数据源的类型29
2.2 初始数据分析30
2.2.1 初步印象30
2.2.2 把多个数据源组织到一起32
2.2.3 整理数据34
2.2.4 补充更多信息37
2.2.5 重塑38
2.3 探索性数据分析38
2.3.1 摘要统计量39
2.3.2 矩42
2.4 案例研究:信用卡欺诈46
2.4.1 数据导入46
2.4.2 数据变换47
2.4.3 数据探索48
2.5 小结50
第3章 抽样与重抽样技术51
3.1 介绍抽样技术51
3.2 抽样的术语52
3.2.1 样本52
3.2.2 抽样分布52
3.2.3 总群体的均值和方差53
3.2.4 样本均值和方差53
3.2.5 汇总的均值和方差53
3.2.6 抽样点53
3.2.7 抽样误差54
3.2.8 抽样率54
3.2.9 抽样偏误54
3.2.10 无放回的抽样54
3.2.11 有放回的抽样55
3.3 信用卡欺诈:总群体的统计量55
3.3.1 数据描述55
3.3.2 总群体的均值56
3.3.3 总群体的方差56
3.3.4 汇总的均值和方差56
3.4 抽样在业务上的意义59
3.5 概率和非概率抽样60
3.6 关于抽样分布的统计理论61
3.6.1 大数定律62
3.6.2 中心极限定理64
3.7 概率抽样技术67
3.7.1 总群体的统计量67
3.7.2 简单随机抽样70
3.7.3 系统性随机抽样75
3.7.4 分层随机抽样78
3.7.5 聚类抽样83
3.7.6 自助抽样88
3.8 蒙特卡罗方法:接受-拒绝93
3.9 小结95
第4章 R语言里的数据可视化96
4.1 ggplot2组件包简介97
4.2 世界经济发展指标97
4.3 折线图97
4.4 堆叠柱状图102
4.5 散点图106
4.6 箱形图107
4.7 直方图和密度图109
4.8 饼图113
4.9 相关图114
4.10 热点图116
4.11 气泡图117
4.12 瀑布图120
4.13 系统树图122
4.14 关键字云124
4.15 桑基图126
4.16 时间序列图127
4.17 队列图129
4.18 空间图130
4.19 小结133
第5章 特征工程135
5.1 特征工程简介135
5.2 了解工作数据136
5.2.1 数据摘要137
5.2.2 因变量的属性137
5.2.3 特征的可用性:连续型或
分类型140
5.2.4 设置数据的假设141
5.3 特征排名141
5.4 变量子集的选择144
5.4.1 过滤器方法145
5.4.2 包装器方法148
5.4.3 嵌入式方法154
5.5 主成分分析158
5.6 小结161
第6章 机器学习理论和实践162
6.1 机器学习的类型163
6.1.1 有监督学习164
6.1.2 无监督学习164
6.1.3 半监督学习165
6.1.4 强化学习165
6.2 机器学习算法的类别165
6.3 实际环境的数据集168
6.3.1 房产售价168
6.3.2 购买偏好169
6.3.3 Twitter订阅和文章169
6.3.4 乳腺癌170
6.3.5 购物篮170
6.3.6 亚马逊美食评论170
6.4 回归分析171
6.5 相关分析172
6.5.1 线性回归174
6.5.2 简单线性回归175
6.5.3 多元线性回归177
6.5.4 模型诊断:线性回归180
6.5.5 多项回归190
6.5.6 逻辑回归193
6.5.7 logit变换194
6.5.8 几率比194
6.5.9 模型诊断:逻辑回归200
6.5.10 多项逻辑回归208
6.5.11 广义线性模型211
6.5.12 结论212
6.6 支持向量机213
6.6.1 线性SVM214
6.6.2 二元SVM分类模型214
6.6.3 多类别SVM216
6.6.4 结论217
6.7 决策树217
6.7.1 决策树的类型218
6.7.2 决策指标219
6.7.3 决策树学习方法221
6.7.4 集成树235
6.7.5 结论241
6.8 朴素贝叶斯方法241
6.8.1 条件概率241
6.8.2 贝叶斯定理241
6.8.3 先验概率242
6.8.4 后验概率242
6.8.5 似然和边际似然242
6.8.6 朴素贝叶斯方法243
6.8.7 结论247
6.9 聚类分析247
6.9.1 聚类方法简介248
6.9.2 聚类算法248
6.9.3 内部评估256
6.9.4 外部评估257
6.9.5 结论259
6.10 关联规则挖掘259
6.10.1 关联概念简介259
6.10.2 规则挖掘算法261
6.10.3 推荐算法267
6.10.4 结论273
6.11 人工神经网络273
6.11.1 人类认知学习273
6.11.2 感知器275
6.11.3 Sigmoid神经元276
6.11.4 神经网络的体系架构277
6.11.5 有监督与无监督的神经网络278
6.11.6 神经网络的学习算法279
6.11.7 前馈反向传播281
6.11.8 结论286
6.12 文本挖掘方法286
6.12.1 文本挖掘简介287
6.12.2 文本摘要288
6.12.3 TF-IDF289
6.12.4 词性标注291
6.12.5 关键字云295
6.12.6 文本分析:Microsoft Cognitive Services295
6.12.7 结论304
6.13 在线机器学习算法304
6.13.1 模糊C均值聚类305
6.13.2 结论308
6.14 构建模型的核对清单308
6.15 小结308
第7章 机器学习模型的评估309
7.1 数据集309
7.1.1 房产售价309
7.1.2 购买偏好311
7.2 模型性能和评估入门312
7.3 模型性能评估的目标313
7.4 总群体的稳定性指数314
7.5 连续型输出的模型评估318
7.5.1 平均误差320
7.5.2 均方根误差321
7.5.3 R2322
7.6 离散型输出的模型评估325
7.6.1 分类矩阵325
7.6.2 灵敏度和特异性329
7.6.3 ROC曲线下的面积330
7.7 概率技术333
7.7.1 K折交叉验证333
7.7.2 自助抽样335
7.8 Kappa误差指标336
7.9 小结339
第8章 模型性能改进340
8.1 Caret组件包概述341
8.2 超参数简介343
8.3 超参数优化345
8.3.1 人工搜索346
8.3.2 人工网格搜索348
8.3.3 自动网格搜索349
8.3.4 搜索351
8.3.5 随机搜索353
8.3.6 自定义搜索354
8.4 偏误和方差权衡357
8.5 集成学习简介360
8.5.1 投票集成360
8.5.2 集成学习中的高级方法361
8.6 在R语言里演示集成技术364
8.6.1 装袋树364
8.6.2 决策树的梯度增强366
8.6.3 混合knn和rpart369
8.6.4 利用caretEnsemble进行堆叠370
8.7 高级主题:机器学习模型的贝叶斯优化374
8.8 小结379
第9章 时间序列模型380
9.1 时间序列的组成部分380
9.2 平稳性检验383
9.3 ACF和AR模型386
9.4 PACF和MA模型388
9.5 ARIMA模型391
9.6 具有AR误差的线性回归397
9.7 小结400
第10章 可扩展机器学习和相关技术402
10.1 分布式处理和存储402
10.1.1 GFS403
10.1.2 MapReduce404
10.1.3 R语言里的并行执行404
10.2 Hadoop生态系统407
10.2.1 MapReduce408
10.2.2 Hive411
10.2.3 Apache Pig414
10.2.4 HBase417
10.2.5 Spark418
10.3 在R语言环境下用Spark进行机器学习419
10.3.1 设置环境变量419
10.3.2 初始化Spark会话420
10.3.3 加载数据并运行预处理420
10.3.4 创建SparkDataFrame421
10.3.5 构建机器学习模型421
10.3.6 对测试数据进行预测422
10.3.7 终止SparkR会话423
10.4 在R语言里利用H2O进行机器学习423
10.4.1 安装组件包424
10.4.2 H2O集群的初始化424
10.5 小结425
第11章 用Keras和TensorFlow进行深度学习427
11.1 深度学习简介427
11.2 深度学习架构428
11.2.1 卷积神经网络428
11.2.2 递归神经网络429
11.2.3 生成对抗网络430
11.3 深度学习的工具集431
11.3.1 高级库431
11.3.2 后端引擎或框架431
11.3.3 硬件能力432
11.3.4 编程语言的选择432
11.3.5 云基础架构432
11.4 用例:识别Quora中的重复问题432
11.4.1 环境设置432
11.4.2 数据预处理433
11.4.3 基准模型434
11.4.4 Siamese递归架构435
11.4.5 Keras模型437
11.4.6 模型的摘要437
11.4.7 验证样本438
11.4.8 训练模型438
11.4.9 保存模型439
11.4.10 模型性能439
11.4.11 进行预测440
11.4.12 预测示例440
11.5 小结441
^ 收 起
前言
第1章 机器学习和R语言入门1
1.1 了解发展历程1
1.1.1 统计学习2
1.1.2 机器学习2
1.1.3 人工智能3
1.1.4 数据挖掘3
1.1.5 数据科学4
1.2 概率与统计5
1.2.1 计数和概率的定义5
1.2.2 事件和关系7
1.2.3 随机性、概率和分布9
1.2.4 置信区间和假设检验9
1.3 R语言入门13
1.3.1 基本组成部分13
1.3.2 R语言的数据结构14
1.3.3 子集处理15
1.3.4 函数和Apply系列17
1.4 机器学习过程工作流19
1.4.1 计划20
1.4.2 探索20
1.4.3 构建20
1.4.4 评估20
1.5 其他技术21
1.6 小结21
第2章 数据准备和探索22
2.1 规划数据收集23
2.1.1 变量类型23
2.1.2 数据格式24
2.1.3 数据源的类型29
2.2 初始数据分析30
2.2.1 初步印象30
2.2.2 把多个数据源组织到一起32
2.2.3 整理数据34
2.2.4 补充更多信息37
2.2.5 重塑38
2.3 探索性数据分析38
2.3.1 摘要统计量39
2.3.2 矩42
2.4 案例研究:信用卡欺诈46
2.4.1 数据导入46
2.4.2 数据变换47
2.4.3 数据探索48
2.5 小结50
第3章 抽样与重抽样技术51
3.1 介绍抽样技术51
3.2 抽样的术语52
3.2.1 样本52
3.2.2 抽样分布52
3.2.3 总群体的均值和方差53
3.2.4 样本均值和方差53
3.2.5 汇总的均值和方差53
3.2.6 抽样点53
3.2.7 抽样误差54
3.2.8 抽样率54
3.2.9 抽样偏误54
3.2.10 无放回的抽样54
3.2.11 有放回的抽样55
3.3 信用卡欺诈:总群体的统计量55
3.3.1 数据描述55
3.3.2 总群体的均值56
3.3.3 总群体的方差56
3.3.4 汇总的均值和方差56
3.4 抽样在业务上的意义59
3.5 概率和非概率抽样60
3.6 关于抽样分布的统计理论61
3.6.1 大数定律62
3.6.2 中心极限定理64
3.7 概率抽样技术67
3.7.1 总群体的统计量67
3.7.2 简单随机抽样70
3.7.3 系统性随机抽样75
3.7.4 分层随机抽样78
3.7.5 聚类抽样83
3.7.6 自助抽样88
3.8 蒙特卡罗方法:接受-拒绝93
3.9 小结95
第4章 R语言里的数据可视化96
4.1 ggplot2组件包简介97
4.2 世界经济发展指标97
4.3 折线图97
4.4 堆叠柱状图102
4.5 散点图106
4.6 箱形图107
4.7 直方图和密度图109
4.8 饼图113
4.9 相关图114
4.10 热点图116
4.11 气泡图117
4.12 瀑布图120
4.13 系统树图122
4.14 关键字云124
4.15 桑基图126
4.16 时间序列图127
4.17 队列图129
4.18 空间图130
4.19 小结133
第5章 特征工程135
5.1 特征工程简介135
5.2 了解工作数据136
5.2.1 数据摘要137
5.2.2 因变量的属性137
5.2.3 特征的可用性:连续型或
分类型140
5.2.4 设置数据的假设141
5.3 特征排名141
5.4 变量子集的选择144
5.4.1 过滤器方法145
5.4.2 包装器方法148
5.4.3 嵌入式方法154
5.5 主成分分析158
5.6 小结161
第6章 机器学习理论和实践162
6.1 机器学习的类型163
6.1.1 有监督学习164
6.1.2 无监督学习164
6.1.3 半监督学习165
6.1.4 强化学习165
6.2 机器学习算法的类别165
6.3 实际环境的数据集168
6.3.1 房产售价168
6.3.2 购买偏好169
6.3.3 Twitter订阅和文章169
6.3.4 乳腺癌170
6.3.5 购物篮170
6.3.6 亚马逊美食评论170
6.4 回归分析171
6.5 相关分析172
6.5.1 线性回归174
6.5.2 简单线性回归175
6.5.3 多元线性回归177
6.5.4 模型诊断:线性回归180
6.5.5 多项回归190
6.5.6 逻辑回归193
6.5.7 logit变换194
6.5.8 几率比194
6.5.9 模型诊断:逻辑回归200
6.5.10 多项逻辑回归208
6.5.11 广义线性模型211
6.5.12 结论212
6.6 支持向量机213
6.6.1 线性SVM214
6.6.2 二元SVM分类模型214
6.6.3 多类别SVM216
6.6.4 结论217
6.7 决策树217
6.7.1 决策树的类型218
6.7.2 决策指标219
6.7.3 决策树学习方法221
6.7.4 集成树235
6.7.5 结论241
6.8 朴素贝叶斯方法241
6.8.1 条件概率241
6.8.2 贝叶斯定理241
6.8.3 先验概率242
6.8.4 后验概率242
6.8.5 似然和边际似然242
6.8.6 朴素贝叶斯方法243
6.8.7 结论247
6.9 聚类分析247
6.9.1 聚类方法简介248
6.9.2 聚类算法248
6.9.3 内部评估256
6.9.4 外部评估257
6.9.5 结论259
6.10 关联规则挖掘259
6.10.1 关联概念简介259
6.10.2 规则挖掘算法261
6.10.3 推荐算法267
6.10.4 结论273
6.11 人工神经网络273
6.11.1 人类认知学习273
6.11.2 感知器275
6.11.3 Sigmoid神经元276
6.11.4 神经网络的体系架构277
6.11.5 有监督与无监督的神经网络278
6.11.6 神经网络的学习算法279
6.11.7 前馈反向传播281
6.11.8 结论286
6.12 文本挖掘方法286
6.12.1 文本挖掘简介287
6.12.2 文本摘要288
6.12.3 TF-IDF289
6.12.4 词性标注291
6.12.5 关键字云295
6.12.6 文本分析:Microsoft Cognitive Services295
6.12.7 结论304
6.13 在线机器学习算法304
6.13.1 模糊C均值聚类305
6.13.2 结论308
6.14 构建模型的核对清单308
6.15 小结308
第7章 机器学习模型的评估309
7.1 数据集309
7.1.1 房产售价309
7.1.2 购买偏好311
7.2 模型性能和评估入门312
7.3 模型性能评估的目标313
7.4 总群体的稳定性指数314
7.5 连续型输出的模型评估318
7.5.1 平均误差320
7.5.2 均方根误差321
7.5.3 R2322
7.6 离散型输出的模型评估325
7.6.1 分类矩阵325
7.6.2 灵敏度和特异性329
7.6.3 ROC曲线下的面积330
7.7 概率技术333
7.7.1 K折交叉验证333
7.7.2 自助抽样335
7.8 Kappa误差指标336
7.9 小结339
第8章 模型性能改进340
8.1 Caret组件包概述341
8.2 超参数简介343
8.3 超参数优化345
8.3.1 人工搜索346
8.3.2 人工网格搜索348
8.3.3 自动网格搜索349
8.3.4 搜索351
8.3.5 随机搜索353
8.3.6 自定义搜索354
8.4 偏误和方差权衡357
8.5 集成学习简介360
8.5.1 投票集成360
8.5.2 集成学习中的高级方法361
8.6 在R语言里演示集成技术364
8.6.1 装袋树364
8.6.2 决策树的梯度增强366
8.6.3 混合knn和rpart369
8.6.4 利用caretEnsemble进行堆叠370
8.7 高级主题:机器学习模型的贝叶斯优化374
8.8 小结379
第9章 时间序列模型380
9.1 时间序列的组成部分380
9.2 平稳性检验383
9.3 ACF和AR模型386
9.4 PACF和MA模型388
9.5 ARIMA模型391
9.6 具有AR误差的线性回归397
9.7 小结400
第10章 可扩展机器学习和相关技术402
10.1 分布式处理和存储402
10.1.1 GFS403
10.1.2 MapReduce404
10.1.3 R语言里的并行执行404
10.2 Hadoop生态系统407
10.2.1 MapReduce408
10.2.2 Hive411
10.2.3 Apache Pig414
10.2.4 HBase417
10.2.5 Spark418
10.3 在R语言环境下用Spark进行机器学习419
10.3.1 设置环境变量419
10.3.2 初始化Spark会话420
10.3.3 加载数据并运行预处理420
10.3.4 创建SparkDataFrame421
10.3.5 构建机器学习模型421
10.3.6 对测试数据进行预测422
10.3.7 终止SparkR会话423
10.4 在R语言里利用H2O进行机器学习423
10.4.1 安装组件包424
10.4.2 H2O集群的初始化424
10.5 小结425
第11章 用Keras和TensorFlow进行深度学习427
11.1 深度学习简介427
11.2 深度学习架构428
11.2.1 卷积神经网络428
11.2.2 递归神经网络429
11.2.3 生成对抗网络430
11.3 深度学习的工具集431
11.3.1 高级库431
11.3.2 后端引擎或框架431
11.3.3 硬件能力432
11.3.4 编程语言的选择432
11.3.5 云基础架构432
11.4 用例:识别Quora中的重复问题432
11.4.1 环境设置432
11.4.2 数据预处理433
11.4.3 基准模型434
11.4.4 Siamese递归架构435
11.4.5 Keras模型437
11.4.6 模型的摘要437
11.4.7 验证样本438
11.4.8 训练模型438
11.4.9 保存模型439
11.4.10 模型性能439
11.4.11 进行预测440
11.4.12 预测示例440
11.5 小结441
^ 收 起
曼卡西克·拉玛苏布兰马尼安(Karthik Ramasubramanian)就职于印度创业技术公司 Hike Messenger。他一直为零售、电子商务和技术行业解决跨行业的数据科学问题,开发数据驱动的解决方案并进行原型构建。Karthik 对整个数据科学生命周期(从探索数据问题,到创建数据科学模型,以及开发各行业相关产品)都具有丰富的经验。 阿布舍克·辛格(Abhishek Singh)他领导的数据科学专业团队正在解决粮食安全、网络安全、自然灾害、医疗保健以及更多领域的紧迫问题。他对美国银行的资产进行了压力测试,开发了保险定价模型,并优化了客户的电信体验。他积极参与数据科学分析相关的思想交流、创作、公开演讲、会议和培训。他坚定地支持负责任地使用人工智能来消除偏见,并坚信合理使用AI将使生活更美好。
本书是介绍机器学习技术的综合指南,从基础的统计学原理和R语言编程知识,到核心的机器学习理论和算法分析,以及机器学习模型的评估和改进方法,再到机器学习技术在大数据平台上的应用,书中都有详细介绍。
本书主要在第1版的基础上增加了两个部分:*个是关于时间序列模型的新章节(第 9 章),这是一个源于统计学的传统主题。第二个新增的章节是深度学习(第 11 章),它是机器学习的一个迅速崛起的子领域。除了增加这两个章节之外,本书中的文本和代码会以一种读者友好的新格式来整体呈现。新版会继续专注于使用流行的统计编程语言 R 来构建用例。对于深度学习这样的主题,我们建议采用 Python 语言来配合 TensorFlow 这样的框架。但是,在第2版中,我们会向读者展示如何在 TensorFlow 中使用 R 语言编程,因此如果读者只熟悉 R,可以暂时无须学习 Python。与第1版一样,我们通过各种实际用例保持了机器学习理论与应用的良好平衡,为读者提供了一个真正全面的机器学习主题集合。
^ 收 起
本书主要在第1版的基础上增加了两个部分:*个是关于时间序列模型的新章节(第 9 章),这是一个源于统计学的传统主题。第二个新增的章节是深度学习(第 11 章),它是机器学习的一个迅速崛起的子领域。除了增加这两个章节之外,本书中的文本和代码会以一种读者友好的新格式来整体呈现。新版会继续专注于使用流行的统计编程语言 R 来构建用例。对于深度学习这样的主题,我们建议采用 Python 语言来配合 TensorFlow 这样的框架。但是,在第2版中,我们会向读者展示如何在 TensorFlow 中使用 R 语言编程,因此如果读者只熟悉 R,可以暂时无须学习 Python。与第1版一样,我们通过各种实际用例保持了机器学习理论与应用的良好平衡,为读者提供了一个真正全面的机器学习主题集合。
^ 收 起
比价列表
1人想要
公众号、微信群
缺书网
微信公众号
微信公众号
扫码进群
实时获取购书优惠
实时获取购书优惠