商品详情

精彩书评

在人工智能时代,机器学习已经成了互联网从业人员和在校学生的一门必修课。市场上不乏机器学习相关的书籍,但大都晦涩难懂而缺乏应用场景。本书是作者在新浪微博广告业务上一手的实践经验和心得体会,具有实用性,非常适合于对机器学习感兴趣但没有经验的开发人员,和渴望了解“理论知识如何在业务中应用”的在校学生,相信你们一定可以从中找到想要的答案。——新浪微博高级技术经理 姜贵彬

本书没有使用高深复杂的数学逻辑来解释机器学习,而是从直观简洁的介绍入手,通俗易懂,再辅助于代码实现帮助读者理解算法细节,是机器学习入门一本不可多得的好书,推荐。——百度资深技术专家 毛钦

本书从具体的代码开始去理解抽象的算法,给读者一种脚踏实地的感觉,推荐给所有工程出身有志于算法的工程师。——阿里妈妈算法工程技术专家 易慧民

本书对常用的机器学习算法进行了深入和全面的介绍,书中大量的代码清单令人印象尤为深刻,确实是一本实用易懂、快速入门的好书。——美团·大众点评资深技术专家 潘文彬

内容简介

《Python机器学习算法》是一本机器学习入门读物,注重理论与实践的结合。全书主要包括6个部分,每个部分均以典型的机器学习算法为例,从算法原理出发,由浅入深,详细介绍算法的理论,并配合目前流行的Python语言,从零开始,实现每一个算法,以加强对机器学习算法理论的理解、增强实际的算法实践能力,最终达到熟练掌握每一个算法的目的。与其他机器学习类图书相比,《Python机器学习算法》同时包含算法理论的介绍和算法的实践,以理论支撑实践,同时,又将复杂、枯燥的理论用简单易懂的形式表达出来,促进对理论的理解。

写作历程

机器学习的黄金时间

近年来,人工智能AI技术的快速发展,得益于越来越多的人工智能人才的涌入和计算机硬件以及软件技术的不断发展。机器学习是人工智能AI的中一个重要的方向,在机器学习的发展过程中,越来越多的人投身于机器学习的研究中,同时,越来越多的互联网公司加入到人工智能的行列,“人工智能”一词也成为妇孺皆知的名词,这正是人工智能发展的黄金时间,同样,机器学习算法作为人工智能中的核心方法,也是发展的一个黄金时间。

机器学习中的常用算法

在机器学习的发展过程中出现了很多优秀的机器学习算法,主要可以从监督学习,无监督学习以及半监督学习的角度对其进行划分。

监督学习(Supervised Learning)是指利用训练样本,包括数据特征和数据标签,训练出一个模型,并利用训练好的模型,对未知数据进行预测。常用的监督学习问题包括分类和回归,其中,分类问题的标签是离散的值,而回归问题的标签是一系列连续的值。常见的监督学习有:Logistic Regression算法,支持向量机SVM算法,BP神经网络算法,线性回归,Lasso,GBDT,随机森林等。
无监督学习(Unsupervised Learning)是指事先没有训练样本,我们需要直接对数据进行建模。常见的无监督问题包括聚类。常见的无监督学习有:KMeans算法,Mean Shift算法,DBSCAN算法等。
在发展的过程中,人们不断提出一些新的算法和模型,深度学习(Deep Learning)的概念便是在这个过程中被提出,深度学习通过构建深层神经网络模型,学习到输入数据的更抽象的表示,以此达到特征学习的功能,更大程度上提高了模型的学习能力。深度学习的成功成为机器学习乃至人工智能发展史上光辉的一笔。常见的深度学习模型包括:自编码器Auto-encoder,深度信念网DBN,卷积神经网络CNN,递归神经网络RNN以及LSTM等。

机器学习的常用框架

现在是机器学习发展的一个黄金时间,越来越多的研究人员和越来越多的公司参与到机器学习的研究和算法的开发过程中,因此,出现了很多开源的机器学习算法实现以及机器学习的算法框架,下面我们罗列一些常见的框架以及开源实现:

TensorFlow。TensorFlow当属现在最火的深度学习框架。TensorFlow最初由Google Brain小组(该小组隶属于Google’s Machine Intelligence研究机构)的研究员和工程师开发出来的,开发目的是用于进行机器学习和深度神经网络的研究。
Scikit-Learn。Scikit-Learn是用于机器学习的Python 模块,它建立在SciPy之上。该项目由David Cournapeau 于2007年创立,当时项目名为Google Summer of Code,自此之后,众多志愿者都为此做出了贡献。
Caffe。Caffe 是由神经网络中的表达式、速度、及模块化产生的深度学习框架,是一个基于C++/CUDA架构框架,开发者能够利用它自由的组织网络,目前支持卷积神经网络和全连接神经网络(人工神经网络)。
Keras。Keras是极其精简并高度模块化的神经网络库,在TensorFlow 或 Theano 上都能够运行,是一个高度模块化的神经网络库,支持GPU和CPU运算。
ConvNetJS。ConvNetJS是利用Javascript实现的神经网络,同时还具有非常不错的基于浏览器的Demo。它最重要的用途是帮助深度学习初学者更快、更直观的理解算法。
Theano。Theano是一个Python库,它允许使用者有效地定义、优化和评估涉及多维数组的数学表达式,同时支持GPUs和高效符号分化操作。
MXNet。MXNet是一个兼具效率和灵活性的深度学习框架。它允许使用者将符号编程和命令式编程相结合,以追求效率和生产力的最大化。
Vowpal Wabbit。Vowpal Wabbit是一个机器学习系统,该系统推动了如在线、散列、Allreduce、Learning2search、等方面机器学习前沿技术的发展。
XGBoot。XGBoot是设计为高效、灵活、可移植的优化分布式梯度 Boosting库。它实现了 Gradient Boosting 框架下的机器学习算法。XGBoost通过提供并行树Boosting(也被称为GBDT、GBM),以一种快速且准确的方式解决了许多数据科学问题。
除了上述的各种框架,还有一些开源的代码,如libSVM,libFM等等。

开始写博客

互联网技术的发展为我们的学习和生活提供了很多的便利,我们可以在互联网获取到大量的学习材料,可以和技术达人,学术牛人探讨各种技术问题。

在读研究生的时候,我有幸接触机器学习。刚开始接触机器学习时,抱着对各种机器学习算法的敬畏以及对知识的渴求,我努力去学习各种算法,包括聚类算法,分类算法等。在学习的过程中,我翻阅了机器学习领域的一些书,包括《pattern recognition and machine learning》(即PRML),《Machine Learning》,《集体智慧编程》,周志华老师的《机器学习》(即俗称的西瓜书),《机器学习实战》,李航老师的《统计机器学习》以及《推荐系统实战》等等。从这些书中,我学到了很多机器学习方面的知识,通过学习,我也渐渐对机器学习领域有了较为清晰的认识。

计算机学科是一门实践性较强的学科,任何一门语言或者任何一个算法,通过对算法的实现,能够加深对算法的理解,同时,算法的设计是为了解决实际的问题,只有在实践的过程中,才能更好的解决实际的问题。

因此,在学习的过程中,一方面学习机器学习的理论知识,另一方面通过具体的数据集,实践每一个算法。俗话说:独学而无友,则孤陋而寡闻。在掌握了部分算法后,我打算把我的学习过程分享出来,比较好的方式就是组织学习的小组,但是一些现实因素的限制,我决定通过写博客的方式将我的笔记写出来,一开始写博客,我打算能够记录出学习机器学习算法的具体过程,因此,我给自己的文章建了一个响亮的标题《简单易学的机器学习算法》(写着写着,发现想要说明白也不是那么简单)。

在此过程中,微博上也出现了很多大牛在分享各种学习资料,我也不断转发这些材料,并在事后不断学习,还为此做了一个话题:

开始写《Python机器学习算法》

能够写出一本书是很多人的理想,我也不例外,在此,我得感谢博文视点的符隆美编辑,多次鼓励我写书,才有我开始动手写这本书。

正如上面所说,我积累了大量的算法,以及自己对算法的实现,期间编辑与我联系,希望我能够将自己的稿子整理出来出一本书,刚开始的时候,我是拒绝的,我总觉得自己的能力还不足以将一个算法解释清楚,更别说出一本书,同时,市场上机器学习方面的书实在是多,如:1、《机器学习实战》。这真是一本好书,让很多初学者可以入门,同时提供了很多实践的机会,真是一本实战的好书。2、李航老师的《统计机器学习》。这是一本理论上很全的书。3、周志华老师的西瓜书《机器学习》。周老师是机器学习方面的专家,这本书得到了很多人的认可,无论是知识的全面性,还是对机器学习理论的解释,都体现出了周老师学识的渊博。4、还有一些经典的专注,如《PRML》等等还有很多。以上说的这些书是大家谈论比较多的,同时,还有一些其他的课程,如斯坦福的教程等等,无一不是学习的好材料。那究竟写些什么呢,在博客中的文章还是浅显,而且过于零散。

(以上分割线表示经过了一段时间的思考)

经过半个月时间的思考,决定写一些典型的算法,因为有些算法在我实际的工作中也经常被用到。在讲解算法的基本原理的同时,配上实验的代码,从聚类算法,分类算法,回归算法,推荐算法到深度学习,希望尽可能涉及到机器学习的大部分算法,同时,介绍了在实际中使用这其中某些算法的一个例子。

最终决定写一本机器学习入门读物,注重理论与实践的结合。在最终定稿时,全书一共包括6个部分,每个部分均以典型的机器学习算法为例,从算法原理出发,由浅入深,详细介绍算法的理论,并配合目前流行的Python语言,从零开始,实现每一个算法,以加强对机器学习算法理论的理解、增强实际的算法实践能力。

目录

  • 0绪论1
  • 0.1机器学习基础1
  • 0.1.1机器学习的概念1
  • 0.1.2机器学习算法的分类2
  • 0.2监督学习3
  • 0.2.1监督学习3
  • 0.2.2监督学习的流程3
  • 0.2.3监督学习算法4
  • 0.3无监督学习4
  • 0.3.1无监督学习4
  • 0.3.2无监督学习的流程4
  • 0.3.3无监督学习算法5
  • 0.4推荐系统和深度学习6
  • 0.4.1推荐系统6
  • 0.4.2深度学习6
  • 0.5Python和机器学习算法实践6
  • 参考文献7
  • 第一部分分类算法
  • 1Logistic Regression10
  • 1.1Logistic Regression模型10
  • 1.1.1线性可分VS线性不可分10
  • 1.1.2Logistic Regression模型11
  • 1.1.3损失函数13
  • 1.2梯度下降法14
  • 1.2.1梯度下降法的流程14
  • 1.2.2凸优化与非凸优化15
  • 1.2.3利用梯度下降法训练Logistic Regression模型17
  • 1.3梯度下降法的若干问题18
  • 1.3.1选择下降的方向18
  • 1.3.2步长的选择19
  • 1.4Logistic Regression算法实践20
  • 1.4.1利用训练样本训练Logistic Regression模型20
  • 1.4.2最终的训练效果22
  • 1.4.3对新数据进行预测23
  • 参考文献26
  • 2Softmax Regression27
  • 2.1多分类问题27
  • 2.2Softmax Regression算法模型28
  • 2.2.1Softmax Regression模型28
  • 2.2.2Softmax Regression算法的代价函数28
  • 2.3Softmax Regression算法的求解29
  • 2.4Softmax Regression与Logistic Regression的关系31
  • 2.4.1Softmax Regression中的参数特点31
  • 2.4.2由Softmax Regression到Logistic Regression31
  • 2.5Softmax Regression算法实践32
  • 2.5.1对Softmax Regression算法的模型进行训练33
  • 2.5.2最终的模型34
  • 2.5.3对新的数据的预测35
  • 参考文献39
  • 3Factorization Machine40
  • 3.1Logistic Regression算法的不足40
  • 3.2因子分解机FM的模型42
  • 3.2.1因子分解机FM模型42
  • 3.2.2因子分解机FM可以处理的问题43
  • 3.2.3二分类因子分解机FM算法的损失函数43
  • 3.3FM算法中交叉项的处理43
  • 3.3.1交叉项系数43
  • 3.3.2模型的求解44
  • 3.4FM算法的求解45
  • 3.4.1随机梯度下降(Stochastic Gradient Descent)45
  • 3.4.2基于随机梯度的方式求解45
  • 3.4.3FM算法流程46
  • 3.5因子分解机FM算法实践49
  • 3.5.1训练FM模型50
  • 3.5.2最终的训练效果53
  • 3.5.3对新的数据进行预测55
  • 参考文献57
  • 4支持向量机58
  • 4.1二分类问题58
  • 4.1.1二分类的分隔超平面58
  • 4.1.2感知机算法59
  • 4.1.3感知机算法存在的问题61
  • 4.2函数间隔和几何间隔61
  • 4.2.1函数间隔62
  • 4.2.2几何间隔62
  • 4.3支持向量机63
  • 4.3.1间隔最大化63
  • 4.3.2支持向量和间隔边界64
  • 4.3.3线性支持向量机65
  • 4.4支持向量机的训练66
  • 4.4.1学习的对偶算法66
  • 4.4.2由线性支持向量机到非线性支持向量机68
  • 4.4.3序列最小最优化算法SMO69
  • 4.5支持向量机SVM算法实践74
  • 4.5.1训练SVM模型74
  • 4.5.2利用训练样本训练SVM模型81
  • 4.5.3利用训练好的SVM模型对新数据进行预测85
  • 参考文献88
  • 5随机森林89
  • 5.1决策树分类器89
  • 5.1.1决策树的基本概念89
  • 5.1.2选择最佳划分的标准91
  • 5.1.3停止划分的标准94
  • 5.2CART分类树算法95
  • 5.2.1CART分类树算法的基本原理95
  • 5.2.2CART分类树的构建95
  • 5.2.3利用构建好的分类树进行预测98
  • 5.3集成学习(Ensemble Learning)99
  • 5.3.1集成学习的思想99
  • 5.3.2集成学习中的典型方法99
  • 5.4随机森林(Random Forests)101
  • 5.4.1随机森林算法模型101
  • 5.4.2随机森林算法流程102
  • 5.5随机森林RF算法实践104
  • 5.5.1训练随机森林模型105
  • 5.5.2最终的训练结果109
  • 5.5.3对新数据的预测110
  • 参考文献113
  • 6BP神经网络114
  • 6.1神经元概述114
  • 6.1.1神经元的基本结构114
  • 6.1.2激活函数115
  • 6.2神经网络模型116
  • 6.2.1神经网络的结构116
  • 6.2.2神经网络中的参数说明117
  • 6.2.3神经网络的计算117
  • 6.3神经网络中参数的求解118
  • 6.3.1神经网络损失函数118
  • 6.3.2损失函数的求解119
  • 6.3.3BP神经网络的学习过程120
  • 6.4BP神经网络中参数的设置126
  • 6.4.1非线性变换126
  • 6.4.2权重向量的初始化126
  • 6.4.3学习率127
  • 6.4.4隐含层节点的个数127
  • 6.5BP神经网络算法实践127
  • 6.5.1训练BP神经网络模型128
  • 6.5.2最终的训练效果132
  • 6.5.3对新数据的预测133
  • 参考文献136
  • 第二部分回归算法
  • 7线性回归138
  • 7.1基本线性回归138
  • 7.1.1线性回归的模型138
  • 7.1.2线性回归模型的损失函数139
  • 7.2线性回归的最小二乘解法140
  • 7.2.1线性回归的最小二乘解法140
  • 7.2.2广义逆的概念141
  • 7.3牛顿法141
  • 7.3.1基本牛顿法的原理141
  • 7.3.2基本牛顿法的流程142
  • 7.3.3全局牛顿法142
  • 7.3.4Armijo搜索144
  • 7.3.5利用全局牛顿法求解线性回归模型145
  • 7.4利用线性回归进行预测146
  • 7.4.1训练线性回归模型147
  • 7.4.2最终的训练结果149
  • 7.4.3对新数据的预测150
  • 7.5局部加权线性回归152
  • 7.5.1 局部加权线性回归模型152
  • 7.5.2局部加权线性回归的最终结果153
  • 参考文献154
  • 8岭回归和Lasso回归155
  • 8.1线性回归存在的问题155
  • 8.2岭回归模型156
  • 8.2.1岭回归模型156
  • 8.2.2岭回归模型的求解156
  • 8.3Lasso回归模型157
  • 8.4拟牛顿法158
  • 8.4.1拟牛顿法158
  • 8.4.2BFGS校正公式的推导158
  • 8.4.3BFGS校正的算法流程159
  • 8.5L-BFGS求解岭回归模型162
  • 8.5.1BGFS算法存在的问题162
  • 8.5.2L-BFGS算法思路162
  • 8.6岭回归对数据的预测165
  • 8.6.1训练岭回归模型166
  • 8.6.2最终的训练结果168
  • 8.6.3利用岭回归模型预测新的数据168
  • 参考文献171
  • 9CART树回归172
  • 9.1复杂的回归问题172
  • 9.1.1线性回归模型172
  • 9.1.2局部加权线性回归173
  • 9.1.3CART算法174
  • 9.2CART回归树生成175
  • 9.2.1CART回归树的划分175
  • 9.2.2CART回归树的构建177
  • 9.3CART回归树剪枝179
  • 9.3.1前剪枝179
  • 9.3.2后剪枝180
  • 9.4CART回归树对数据预测180
  • 9.4.1利用训练数据训练CART回归树模型180
  • 9.4.2最终的训练结果182
  • 9.4.3利用训练好的CART回归树模型对新的数据预测185
  • 参考文献187
  • 第三部分聚类算法
  • 10K-Means190
  • 10.1相似性的度量190
  • 10.1.1闵可夫斯基距离191
  • 10.1.2曼哈顿距离191
  • 10.1.3欧氏距离191
  • 10.2K-Means算法原理192
  • 10.2.1K-Means算法的基本原理192
  • 10.2.2K-Means算法步骤193
  • 10.2.3K-Means算法与矩阵分解193
  • 10.3K-Means算法实践195
  • 10.3.1导入数据196
  • 10.3.2初始化聚类中心197
  • 10.3.3聚类过程198
  • 10.3.4最终的聚类结果199
  • 10.4K-Means++算法200
  • 10.4.1K-Means算法存在的问题200
  • 10.4.2K-Means++算法的基本思路202
  • 10.4.3K-Means++算法的过程和最终效果204
  • 参考文献205
  • 11Mean Shift206
  • 11.1Mean Shift向量206
  • 11.2核函数207
  • 11.3Mean Shift算法原理209
  • 11.3.1引入核函数的Mean Shift向量209
  • 11.3.2Mean Shift算法的基本原理210
  • 11.4Mean Shift算法的解释212
  • 11.4.1概率密度梯度212
  • 11.4.2Mean Shift向量的修正213
  • 11.4.3Mean Shift算法流程213
  • 11.5Mean Shift算法实践217
  • 11.5.1Mean Shift的主过程218
  • 11.5.2Mean Shift的最终聚类结果219
  • 参考文献221
  • 12DBSCAN222
  • 12.1基于密度的聚类222
  • 12.1.1基于距离的聚类算法存在的问题222
  • 12.1.2基于密度的聚类算法225
  • 12.2DBSCAN算法原理225
  • 12.2.1DBSCAN算法的基本概念225
  • 12.2.2DBSCAN算法原理227
  • 12.2.3DBSCAN算法流程228
  • 12.3DBSCAN算法实践231
  • 12.3.1DBSCAN算法的主要过程232
  • 12.3.2Mean Shift的最终聚类结果234
  • 参考文献236
  • 13Label Propagation237
  • 13.1社区划分237
  • 13.1.1社区以及社区划分237
  • 13.1.2社区划分的算法238
  • 13.1.3社区划分的评价标准239
  • 13.2Label Propagation算法原理239
  • 13.2.1Label Propagation算法的基本原理239
  • 13.2.2标签传播240
  • 13.2.3迭代的终止条件242
  • 13.3Label Propagation算法过程244
  • 13.4Label Propagation算法实践244
  • 13.4.1导入数据245
  • 13.4.2社区的划分246
  • 13.4.3最终的结果247
  • 参考文献248
  • 第四部分推荐算法
  • 14协同过滤算法250
  • 14.1推荐系统的概述250
  • 14.1.1推荐系统250
  • 14.1.2推荐问题的描述251
  • 14.1.3推荐的常用方法251
  • 14.2基于协同过滤的推荐252
  • 14.2.1协同过滤算法概述252
  • 14.2.2协同过滤算法的分类252
  • 14.3相似度的度量方法253
  • 14.3.1欧氏距离254
  • 14.3.2皮尔逊相关系数(Pearson Correlation)254
  • 14.3.3余弦相似度254
  • 14.4基于协同过滤的推荐算法256
  • 14.4.1基于用户的协同过滤算法256
  • 14.4.2基于项的协同过滤算法258
  • 14.5利用协同过滤算法进行推荐260
  • 14.5.1导入用户-商品数据260
  • 14.5.2利用基于用户的协同过滤算法进行推荐261
  • 14.5.3利用基于项的协同过滤算法进行推荐262
  • 参考文献264
  • 15基于矩阵分解的推荐算法265
  • 15.1矩阵分解265
  • 15.2基于矩阵分解的推荐算法266
  • 15.2.1损失函数266
  • 15.2.2损失函数的求解266
  • 15.2.3加入正则项的损失函数即求解方法267
  • 15.2.4预测269
  • 15.3利用矩阵分解进行推荐270
  • 15.3.1利用梯度下降对用户商品矩阵分解和预测270
  • 15.3.2最终的结果272
  • 15.4非负矩阵分解273
  • 15.4.1非负矩阵分解的形式化定义274
  • 15.4.2损失函数274
  • 15.4.3优化问题的求解274
  • 15.5利用非负矩阵分解进行推荐277
  • 15.5.1利用乘法规则进行分解和预测277
  • 15.5.2最终的结果278
  • 参考文献279
  • 16基于图的推荐算法280
  • 16.1二部图与推荐算法280
  • 16.1.1二部图280
  • 16.1.2由用户商品矩阵到二部图281
  • 16.2PageRank算法282
  • 16.2.1PageRank算法的概念282
  • 16.2.2PageRank的两个假设283
  • 16.2.3PageRank的计算方法283
  • 16.3PersonalRank算法285
  • 16.3.1PersonalRank算法原理285
  • 16.3.2PersonalRank算法的流程286
  • 16.4利用PersonalRank算法进行推荐288
  • 16.4.1利用PersonalRank算法进行推荐288
  • 16.4.2最终的结果291
  • 参考文献291
  • 第五部分深度学习
  • 17AutoEncoder294
  • 17.1多层神经网络294
  • 17.1.1三层神经网络模型294
  • 17.1.2由三层神经网络到多层神经网络295
  • 17.2AutoEncoder模型296
  • 17.2.1AutoEncoder模型结构296
  • 17.2.2AutoEncoder的损失函数297
  • 17.3降噪自编码器Denoising AutoEncoder298
  • 17.3.1Denoising AutoEncoder原理298
  • 17.3.2Denoising AutoEncoder实现299
  • 17.4利用Denoising AutoEncoders构建深度网络302
  • 17.4.1无监督的逐层训练302
  • 17.4.2有监督的微调303
  • 17.5利用TensorFlow实现Stacked Denoising AutoEncoders306
  • 17.5.1训练Stacked Denoising AutoEncoders模型306
  • 17.5.2训练的过程307
  • 参考文献308
  • 18卷积神经网络309
  • 18.1传统神经网络模型存在的问题309
  • 18.2卷积神经网络311
  • 18.2.1卷积神经网络中的核心概念311
  • 18.2.2卷积神经网络模型312
  • 18.3卷积神经网络的求解313
  • 18.3.1卷积层(Convolution Layer)313
  • 18.3.2下采样层(Sub-Sampling Layer)316
  • 18.3.3全连接层(Fully-Connected Layer)316
  • 18.4利用TensorFlow实现CNN316
  • 18.4.1CNN的实现316
  • 18.4.2训练CNN模型320
  • 18.4.3训练的过程321
  • 参考文献321
  • 第六部分项目实践
  • 19微博精准推荐324
  • 19.1精准推荐324
  • 19.1.1精准推荐的项目背景324
  • 19.1.2精准推荐的技术架构325
  • 19.1.3离线数据挖掘326
  • 19.2基于用户行为的挖掘327
  • 19.2.1基于互动内容的兴趣挖掘327
  • 19.2.2基于与博主互动的兴趣挖掘328
  • 19.3基于相似用户的挖掘329
  • 19.3.1基于“@”人的相似用户挖掘329
  • 19.3.2基于社区的相似用户挖掘329
  • 19.3.3基于协同过滤的相似用户挖掘331
  • 19.4点击率预估332
  • 19.4.1点击率预估的概念332
  • 19.4.2点击率预估的方法332
  • 19.5各种数据技术的效果334
  • 参考文献335
  • 附录A336
  • 附录B341

 


声明

1、链接失效请联系客服人员。
2、购买后如果链接失效可联系客服人员完善资源或进行退款办理。
3、资源均来源于网友分享及网络公开发表文件,所有资料仅供学习交流。
4、所收取费用仅用来维系网站运营,性质为用户友情赞助,并非售卖文件费用。
5、如侵犯您的权益,请联系客服人员,我们将会在第一时间进行处理。

评论区

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
相关推荐