机器学习模型五花八门不知道怎么选?这份指南告诉你
作者 | LAVANYA
译者 | 陆离
编辑 | 夕颜
出品 | AI科技大本营(ID: rgznai100)
【导读】在本文中,我们将探讨不同的机器学习模型,以及每个模型合理的使用场景。
一般来说,基于树形结构的模型在Kaggle竞赛中是表现最好的,而其它的模型可以用于融合模型。对于计算机视觉领域的挑战,CNNs (Convolutional Neural Network, 卷积神经网络)是最适合不过的。而对于NLP(Natural Language Processing,自然语言处理),LSTMs或GRUs是最好的选择。下面是一个不完全模型细目清单,同时列出了每个模型的一些优缺点。
1. 回归 — 预测连续值
A. 线性回归(Linear Regression)
I.Vanilla Linear Regression
优点
· 善于获取数据集中的线性关系;
· 适用于在已有了一些预先定义好的变量并且需要一个简单的预测模型的情况下使用;
· 训练速度和预测速度较快;
· 在小数据集上表现很好;
· 结果可解释,并且易于说明;
· 当新增数据时,易于更新模型;
· 不需要进行参数调整(下面的正则化线性模型需要调整正则化参数);
· 不需要特征缩放(下面的正则化线性模型需要特征缩放);
· 如果数据集具有冗余的特征,那么线性回归可能是不稳定的;
缺点
· 不适用于非线性数据;
· 预测精确度较低;
· 可能会出现过度拟合(下面的正则化模型可以抵消这个影响);
· 分离信号和噪声的效果不理想,在使用前需要去掉不相关的特征;
· 不了解数据集中的特征交互;
II. Lasso回归, Ridge回归, Elastic-Net回归
优点
· 这些模型是正则化的线性回归模型;
· 有助于防止过度拟合;
· 这些模型更善于正则化,因为它们更简单;
· 适用于当我们只关心几个特征的时候;
缺点
· 需要特征缩放;
· 需要调整正则化参数;
B. 回归树(Regression Trees)
I.决策树(Decision Tree)
优点
· 训练速度和预测速度较快;
· 善于获取数据集中的非线性关系;
· 了解数据集中的特征交互;
· 善于处理数据集中出现的异常值;
· 善于在数据集中找到最重要的特征;
· 不需要特征缩放;
· 结果可解释,并易于说明;
缺点
· 预测精确度较低;
· 需要一些参数的调整;
· 不适用于小型数据集;
· 分离信号和噪声的效果不理想;
· 当新增数据时,不易更新模型;
· 在实践中很少使用,而是更多地使用集合树;
· 可能会出现过度拟合(见下面的融合模型);
II.融合模型(RandomForest,XGBoost, CatBoost, LightGBM)
优点
· 多重树结构整理预测;
· 具有较高的预测精确度,在实践中表现很好;
· 是Kaggle竞赛中推荐的算法;
· 善于处理数据集中出现的异常值;
· 善于在数据集中获取非线性关系;
· 善于在数据集中找到最重要的特征;
· 能够分离信号和噪声;
· 不需要特征缩放;
· 特别适用于高维度的数据;
缺点
· 训练速度较慢;
· 具有较高的预测速度;
· 结果不易解释或说明;
· 当新增数据时,不易更新模型;
· 需要调整参数,但调整较为复杂;
· 不适用于小型数据集;
C. 深度学习(Deep Learning)
优点
· 在实践中表现出较高的预测精确度;
· 可以获取数据中非常复杂的底层模式;
· 特别适用于大型数据集和高维度数据集;
· 当新增数据时,易于更新模型;
· 网络的隐藏层明显减少了对特征工程的需求;
· 是适用于计算机视觉、机器翻译、情感分析和语音识别任务的最新技术;
缺点
· 具有非常低的训练速度;
· 需要消耗巨大的计算资源;
· 需要特征缩放;
· 结果不易解释或说明;
· 需要大量的训练数据,因为它要学习大量的参数;
· 在非图像、非文本、非语音的任务中优于Boosting算法;
· 非常灵活,带有许多不同的体系结构构建块,因此需要专业知识来设计体系结构;
D. 基于距离的K近邻算法(K Nearest Neighbors – Distance Based)
优点
· 训练速度较快;
· 不需要太多的参数调整;
· 结果可解释,并易于说明;
· 适用于小型数据集(小于10万个训练集)
缺点
· 预测精确度较低;
· 不适用于小型数据集;
· 需要选择合适的距离函数;
· 需要特征缩放;
· 预测速度随数据集增大而加快;
· 分离信号和噪声的效果不理想,在使用前需要去掉不相关的特征;
· 是内存密集型的算法,因为它可以保存所有的观察结果;
· 不适用于处理高维度的数据;
2. 分类 — 预测一个或多个类别的概率
A. 逻辑回归算法(Logistic Regression)
优点
· 善于对线性可分离数据进行分类;
· 具有较高的训练速度和预测速度;
· 适用于小型数据集;
· 结果可解释,并易于说明;
· 当新增数据时,易于更新模型;
· 在正则化时可以避免过度拟合;
· 可以同时进行2个类和多个类的分类任务;
· 不需要参数调整(除非在正则化的时候,我们需要调整正则化参数);
· 不需要特征缩放(正则化的时候除外);
· 如果数据集具有冗余特征,则线性回归可能是不稳定的;
缺点
· 不适用于非线性可分离数据;
· 具有较低的预测精确度;
· 可能会出现过度拟合(见下面的正则化模型)
· 分离信号和噪声的效果不理想,在使用前需要去掉不相关的特征;
· 不了解数据集中的特征交互;
B. 基于距离的支持向量机算法(Support Vector Machines – Distance based)
优点
· 具有较高的预测精确度;
· 即使在高维度数据集上也不会产生过度拟合,因此它适用于具有多个特征的情况;
· 适用于小型数据集(小于10万个训练集);
· 适用于解决文本分类的问题;
缺点
· 当新增数据时,不易更新模型;
· 属于内存高度密集型算法;
· 不适用于大型数据集;
· 需要选择正确的内核;
· 线性内核对线性数据建模,运行速度快;
· 非线性内核可以模拟非线性边界,运行速度慢;
· 用Boosting代替!
C. 基于概率的朴素贝叶斯算法(Naive Bayes — Probability based)
优点
· 在文本分类问题上表现极佳;
· 具有较高的训练速度和预测速度;
· 在小型数据集上表现良好;
· 善于分离信号和噪声;
· 在实践中表现出良好的性能;
· 操作简单,易于实现;
· 适用于小型数据集(小于10万个训练集);
· 关于特征的和潜在分布的独立性避免了过度拟合;
· 如果这种独立性的条件成立,那么朴素贝叶斯可以在更小的数据集上运行,并且可以以更快的速度进行训练;
· 不需要特征缩放;
· 不是内存密集型算法;
· 结果可解释,并易于说明;
· 根据数据集的大小易于扩展;
缺点
· 具有较低的预测精确度;
D. 基于距离的K近邻算法( K Nearest Neighbors — Distance Based)
优点
· 具有较高的训练速度;
· 无需太多参数调整;
· 结果可解释,并易于说明;
· 适用于小型数据集(小于10万个训练集);
缺点
· 预测精确度较低;
· 在小型数据集上表现不好;
· 需要选择一个合适的距离函数;
· 需要功能缩放;
· 预测速度随着数据集增大而加快;
· 分离信号和噪声的效果不理想,在使用前需要去掉不相关的特征;
· 是内存密集型算法,因为它可以保存所有的观察结果;
· 不善于处理高维度的数据;
E. 分类树(Classification Tree)
I. 决策树(Decision Tree)
优点
· 具有较高的训练速度和预测速度;
· 善于获取数据集中的非线性关系;
· 了解数据集中的特征交互;
· 善于处理数据集中出现的异常值;
· 善于在数据集中找到最重要的特征;
· 可以同时进行2个类和多个类的分类任务;
· 不需要特征缩放;
· 结果可解释,并易于说明;
缺点
· 预测速度较慢;
· 需要进行参数的调整;
· 在小型数据集上表现不好;
· 分离信号和噪声的效果不理想;
· 在实践中很少使用,而是更多地使用集合树;
· 当新增数据时,不易更新模型;
可能会出现过度拟合(见下面的融合模型)
II.融合(RandomForest, XGBoost, CatBoost, LightGBM)
优点
· 多重树结构整理预测;
· 具有较高的预测精确度,在实践中表现很好;
· 是Kaggle竞赛中推荐的算法;
· 善于获取数据集中的非线性关系;
· 善于处理数据集中出现的异常值;
· 善于在数据集中找到最重要的特征;
· 能够分离信号和噪声;
· 无需特征缩放;
· 特别适用于高维度的数据;
缺点
· 训练速度较慢;
· 预测速度较快;
· 结果不易解释或说明;
· 当新增数据时,不易更新模型;
· 需要调整参数,但调整较为复杂;
· 在小型数据集上表现不好;
F. 深度学习(Deep Learning)
优点
· 预测精确度较高,在实践中表现良好;
· 可以获取数据中非常复杂的底层模式;
· 适用于大型数据集和高维度数据集;
· 当新增数据时,易于更新模型;
· 网络的隐藏层明显减少了对特征工程的需求;
· 是适用于计算机视觉、机器翻译、情感分析和语音识别任务的最新技术;
缺点
· 训练速度较慢;
· 结果不易解释或说明;
· 需要消耗巨大的计算资源;
· 需要特征缩放;
· 需要大量的训练数据,因为它要学习大量的参数;
· 在非图像、非文本、非语音的任务中优于Boosting算法;
· 非常灵活,带有许多不同的体系结构构建块,因此需要专业知识来设计体系结构;
3. 聚类 — 将数据分类以便最大化相似性
A. DBSCAN聚类算法(Density-Based Spatial Clustering of Applications with Noise)
优点
· 可扩展到大型数据集上;
· 善于噪声检测;
· 无需预先知道聚类的数量;
· 可以发现任意形状的聚类,不会假设聚类的形状是球状的;
缺点
· 如果整个数据集都是高密度区域,那么该算法不总是有效的;
· 需要调整密度参数epsilon和min_samples为正确的值,以便获得好的效果;
B. Kmeans算法
优点
· 特别适于获取底层数据集的结构;
· 算法简单,易于解释;
· 适于预先知道聚类的数量;
缺点
· 如果聚类不是球状的,并且大小相似,那么该算法不总是有效的;
· 需要预先知道聚类的数量,并需要调整k聚类的选择以便获得好的结果;
· 属于内存密集型的算法;
· 无法扩展到大型数据集上;
4. Misc — 本文中未包含的模型
降维算法(Dimensionality Reduction Algorithms);
聚类算法(Clustering algorithms);
· 高斯混合模型(Gaussian Mixture Model);
· 分层聚类(Hierarchical clustering);
计算机视觉(CV);
· 卷积神经网络(Convolutional Neural Networks);
· 图像分类(Image classification);
· 对象检测(Object Detection)
· 图像分割(Image segmentation)
自然语言处理(Natural Language Processing,NLP)
· 循环神经网络(Recurrent Neural Network,RNNs,包括LSTM 和 GRUs)
强化学习(Reinforcement Learning)
融合模型
融合模型是一种非常强大的技术,有助于减少过度拟合,并通过组合来自不同模型的输出以做出更稳定的预测。融合模型是赢得Kaggle竞赛的一个重要工具,在选择模型进行融合时,我们希望选择不同类型的模型,以确保它们具有不同的优势和劣势,从而在数据集中获取不同的模式。这种更明显的多样性特点使得偏差降低。我们还希望确保它们的性能是可以对比的,这样就能确保预测的稳定性。
我们在这里可以看到,这些模型的融合实际上比任何单一的模型生成的损失都要低得多。部分的原因是,尽管所有的这些模型都非常擅长预测,但它们都能得到不同的正确预测结果,通过把它们组合在一起,我们能够根据它们所有不同的优势组合成一个超级模型。
# in order to make the final predictions more robust to overfittingdef blended_predictions(X): return ((0.1 * ridge_model_full_data.predict(X)) + \\ (0.2 * svr_model_full_data.predict(X)) + \\ (0.1 * gbr_model_full_data.predict(X)) + \\ (0.1 * xgb_model_full_data.predict(X)) + \\ (0.1 * lgb_model_full_data.predict(X)) + \\ (0.05 * rf_model_full_data.predict(X)) + \\ (0.35 * stack_gen_model.predict(np.array(X))))
融合模型分为四种类型(包括混合型):
Bagging:使用随机选择的不同数据子集训练多个基础模型,并进行替换。让基础模型对最终的预测进行投票。常用于随机森林算法(RandomForests);
Boosting:迭代地训练模型,并且在每次迭代之后更新获得每个训练示例的重要程度。常用于梯度增强算法(GradientBoosting);
Blending:训练许多不同类型的基础模型,并在一个holdout set上进行预测。从它们的预测结果中再训练一个新的模型,并在测试集上进行预测(用一个holdout set堆叠);
Stacking:训练多种不同类型的基础模型,并对数据集的k-folds进行预测。从它们的预测结果中再训练一个新的模型,并在测试集上进行预测;
模型对比
权重和偏差让我们可以用一行代码来跟踪和比较模型的性能表现。选择要测试的模型后,对其进行训练并添加wandb.log({‘score’: cv_score})来记录模型的运行状态。完成训练之后,你就可以在一个简单的控制台中对比模型的性能了!
# WandBimport wandbimport tensorflow.kerasfrom wandb.keras import WandbCallbackfrom sklearn.model_selection import cross_val_score# Import models (Step 1: add your models here)from sklearn import svmfrom sklearn.linear_model import Ridge, RidgeCVfrom xgboost import XGBRegressor
# Model 1# Initialize wandb run# You can change your project name here. For more config options, see https://docs.wandb.com/docs/init.htmlwandb.init(anonymous='allow', project="pick-a-model")
# Initialize model (Step 2: add your classifier here)clf = svm.SVR(C= 20, epsilon= 0.008, gamma=0.0003)
# Get CV scorescv_scores = cross_val_score(clf, X_train, train_labels, cv=5)
# Log scoresfor cv_score in cv_scores: wandb.log({'score': cv_score})
# Model 2# Initialize wandb run# You can change your project name here. For more config options, see https://docs.wandb.com/docs/init.htmlwandb.init(anonymous='allow', project="pick-a-model")
# Initialize model (Step 2: add your classifier here)clf = XGBRegressor(learning_rate=0.01, n_estimators=6000, max_depth=4, min_child_weight=0, gamma=0.6, subsample=0.7, colsample_bytree=0.7, objective='reg:linear', nthread=-1, scale_pos_weight=1, seed=27, reg_alpha=0.00006, random_state=42)
# Get CV scorescv_scores = cross_val_score(clf, X_train, train_labels, cv=5)
# Log scoresfor cv_score in cv_scores: wandb.log({'score': cv_score})
# Model 3# Initialize wandb run# You can change your project name here. For more config options, see https://docs.wandb.com/docs/init.htmlwandb.init(anonymous='allow', project="pick-a-model")
# Initialize model (Step 2: add your classifier here)ridge_alphas = [1e-15, 1e-10, 1e-8, 9e-4, 7e-4, 5e-4, 3e-4, 1e-4, 1e-3, 5e-2, 1e-2, 0.1, 0.3, 1, 3, 5, 10, 15, 18, 20, 30, 50, 75, 100]clf = Ridge(alphas=ridge_alphas)
# Get CV scorescv_scores = cross_val_score(clf, X_train, train_labels, cv=5)
# Log scoresfor cv_score in cv_scores: wandb.log({'score': cv_score})
就这样,在有了所有的工具和算法之后,就可以为你的问题选择正确的模型了!
模型的选择可能是非常复杂的,但我希望本指南能给你带来一些启发,让你找到模型选择的好方法。
原文链接:
https://lavanya.ai/2019/09/18/part-ii-whirlwind-tour-of-machine-learning-models/
(*本文为AI科技大本营编译文章,转载请微信联系1092722531)
◆
精彩推荐
◆
点击阅读原文,或扫描文首贴片二维码
所有CSDN 用户都可参与投票和抽奖活动
加入福利群,每周还有精选学习资料、技术图书等福利发送
推荐阅读
“一百万行Python代码对任何人都足够了”
GitHub标星1.5w+,从此我只用这款全能高速下载工具
中国工程师在美遭抢劫电脑遇害,数百人悼念
跟风 Google 只是东施效颦?!
召回→排序→重排:技术演进趋势的深度之旅,2020 必备!
如何写出让同事膜拜的漂亮代码?
同样是写代码,你和大神究竟差在哪里?
互联网公司=21世纪的国营大厂
详解CPU几个重点基础知识
DeFi行业2019全年呈爆炸式增长,8.5亿美元资产锁定在DeFi生态中;行业市值主要由头部项目瓜分 | 报告
你点的每个“在看”,我都认真当成了AI
相关文章:

WinAPI: FlattenPath、WidenPath
不管什么曲线命令, 到来路径中都会变成 Bezier 线; 也就是说路径中只有直线和 Bezier 线.FlattenPath 和 WidenPath 都能够把路径中的 Bezier 线转换为近似的直线; 不同的是: 用 WidenPath 转换后貌似加宽了线, 其实它是转换成了一个包围路径的新路径(类似区域).本例效果图:代码…

Android - 小的特点 - 使用最新版本ShareSDK手册分享(分享自己定义的接口)
前太实用Share SDK很快分享,但官员demo快捷共享接口已被设置死,该公司的产品还设计了自己的份额接口,这需要我手动共享。 读了一堆公文,最终写出来,行,废话,进入主题。 之前没实用过ShareSDK分享…
结合Flink,国内自研,大规模实时动态认知图谱平台——AbutionGraph |博文精选
作者 | Raini出品 | 北京图特摩斯科技 (www.thutmose.cn)(*点击阅读原文,查看作者更多精彩文章)Flink:目前最受关注的大数据技术,最活跃 Apache 项目之一。AbutionGraph:北京图特摩斯科技自研的…

Windows客户端C/C++编程规范“建议”——风格
9 风格 9.1 优先使用匈牙利命名法 等级: 【推荐】说明:该方法由微软总设计师设计。Windows上编程最好遵从该标准。详细介绍见:http://zh.wikipedia.org/wiki/%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%959.2 变量名结合使用匈牙…

使用GIF(仅限Delphi2007)
-----------uses GIFImg; procedure TForm1.FormCreate(Sender: TObject); begin // 先在窗体上放一个 TImage 组件:Image1; Image1.Picture.LoadFromFile(C:\Example.gif); // AnimationSpeed 设定动画速度,值越大,速度越快…

使用Depth Texture
使用Depth Textures: 可以将depth信息渲染到一张texture,有些效果的制作会需要scene depth信息,此时depth texture就可以派上用场了。 Depth Texture在不同平台上有不同的实现,并且原生的支持也不一样。 UnityCG.cgin…

Exchage 2007 Client Application Functions(2) -- 如何收取邮件
上一篇介绍的Exchange2007客户端程序中怎么发送邮件。现在,我来简单介绍一下怎么收取邮件。来看代码:publicHashtable GetAllMails(DateTime StartDate, DateTime EndDate) { try { if (null this.m_esb) …

VC开发Windows客户端软件之旅——前言
从第一次拖着行李入京找活,至今已工作若干年了。这些年一直追逐自己的梦想,跑过三个城市,换了三份工作,认识了很多业内的朋友。和朋友们闲聊时,发现很多人都已经不再做客户端软件了。有的转去做管理,有的转…
代替Mask R-CNN,BlendMask欲做实例预测任务的新基准?
「免费学习 60 节公开课:投票页面,点击讲师头像」作者 | Hao Chen、Kunyang Sun、Zhi Tian、Chunhua Shen、Yongming Huang、Youliang Yan译者 | 刘畅编辑 | Jane出品 | AI科技大本营(ID:rgznai100)【导读】实例分割是…

如何让ie 7 支持box-shadow
box-shadow是一个很好用并且也常用的css 3属性,但是,如果我们要保证它能在ie 8及更低的版本下运行的话,需要借助一些其他的插件或文件。在这里我主要讲一下,如何用PIE.htc来解决ie 7不支持box-shadow。 代码如下: <…
拥有AI「变声术」,秒杀了多年苦练的模仿艺能
「免费学习 60 节公开课:投票页面,点击讲师头像」作者 | Daniel Chen,爱奇艺资深研发工程师 出品 | AI科技大本营(ID:rgznai100)【导读】什么是Voice Conversion(VC)?它有…
服务器架设笔记——编译Apache及其插件
之前一直从事Windows上的客户端软件开发,经常会处理和服务器交互相关的业务。由于希望成为一个全栈式的工程师,我对Linux上服务器相关的开发也越来越感兴趣。趁着年底自由的时间比较多,我可以对这块做些技术研究。虽然这些知识很基础也很老&a…

Silverlight 2中多语言支持实现(上)
引言 最近项目要在Silverlight 2应用程序中实现本地化,原以为这个过程非常简单,却没想到实现的时候一波三折,好在结果还算不错。需求是这样的,用户第一次访问的时候,默认为英文,当用户选择一种显示语言后&a…

解析大型.NET ERP系统 多国语言实现
实现多国语言有许多种实现方案,无外乎是一种字符串替换技术,将界面控件的文本标签替换成相应语言的文字。.NET Windows Forms实现多国语言的方法有以下几种: 1 .NET的方案,使用资源文件 分别做三个语言的资源文件,比如…

服务器架设笔记——Apache模块开发基础知识
通过上节的例子,我们发现Apache插件开发的一个门槛便是学习它自成体系的一套API。虽然Apache的官网上有对这些API的详细介绍,但是空拿着一些零散的说明书,是很难快速建立起一套可以运行的系统。(转载请指明出于breaksoftware的csd…
解密Elasticsearch技术,腾讯开源的万亿级分布式搜索分析引擎
「免费学习 60 节公开课:投票页面,点击讲师头像」作者 | johngqjiang,腾讯 TEG 云架构平台部研发工程师来源 | 腾讯技术工程(ID:Tencent_TEG)【导读】Elasticsearch(ES)作为开源首选…

Centos5上firefox的升级
Centos5上firefox的升级默认Centos5上firefox的版本是1.5当我们使用yum update firefox提示到的版本还是1.5 可是我们在使用1.5版本的firefox可能会有一些问题,比如打不开QQ空间接下来我们就将系统的firefox从rpm包的1.5版本升级到tar包的3.0首先删除1.5版本的fire…

cheat engine lua
function CEButton1Click(sender) local x getProperty(CETrainer.CEEdit1,"Text")--这句很重要,获取文本框的值 --writeInteger(0x42c0c0,readInteger(0x42c0c0)x)--设置0X42C0C0地址的值 setProperty(CETrainer.CEEdit2,"Text","0001000")--设…

服务器架设笔记——使用Apache插件解析简单请求
一般来说,对于一个请求,服务器都会对其进行解析,以确定请求的合法性以及行进的路径。于是本节将讲解如何获取请求的数据。(转载请指明出于breaksoftware的csdn博客) 我们使用《服务器架设笔记——编译Apache及其插件》…
如何用Python快速抓取Google搜索?
「免费学习 60 节公开课:投票页面,点击讲师头像」作者 | linksc译者 | 弯月,编辑 | 郭芮来源 | CSDN(ID:CSDNnews)自从2011年 Google Web Search API 被弃用以来,我一直在寻找其他的方法来抓取G…

利用歌词插件 让WMP活起来
如果利用起这个歌词插件的话 是不是可以减少下载那么多播放器和每次更新的烦恼呢?因为WMP是系统自带的.可以下载的插件名称:Wa3 Music Engine 或者乐辞的歌词秀插件转载于:https://blog.51cto.com/david25/84211

Linux性能研究(总)
http://www.vpsee.com/2009/11/linux-system-performance-monitoring-introduction/ http://www.jb51.net/LINUXjishu/34607.html 公司有个测试服务器,上面跑了几个应用和一个DB。 DB被这个几个应用使用。 最近老是被挂掉。 CPU 使用率100%。 搞到最后大家都不能用。…
万字干货:如何从零开始构建企业级推荐系统?
「免费学习 60 节公开课:投票页面,点击讲师头像」作者丨gongyouliu编辑丨zandy来源 | 大数据与人工智能(ID: ai-big-data)最近几个月有很多人咨询作者怎么从零开始搭建工业级推荐系统,有做音视频的、有做新闻资讯的、有…

Mocha BSM基础架构管理——灵活的网络拓扑展现
业务需求与挑战企业的网络拓扑结构与设备时常变化,人工往往难以维护网络拓扑。尤其对于上千台设备的大型网络来说情况更为复杂。当用户网络设备大量增加后,网络结构异常复杂,用户的网络拓扑很难在一个屏幕上展现或者很难找到要查阅的网络拓扑…
服务器架设笔记——打通MySQL和Apache
在《服务器架设笔记——使用Apache插件解析简单请求》一文中,我们已经可以获取请求内容。这只是万里长征的第一步。因为一般来说,客户端向服务器发起请求,服务器会有着复杂的业务处理逻辑。举个例子,大部分客户端软件都有日志模块…
【Maven】maven的安装配置和ecplise结合
2. Maven的安装和配置 2.1. 安装 进入Maven官网的下载页面:http://maven.apache.org/download.cgi,如下图所示: 选择当前最新版本:“apache-maven-3.0.4-bin.zip”,下载到本地,解压缩到本地磁盘D:下。 2…
2020年趋势一览:AutoML、联邦学习、云寡头时代的终结
作者 | Roberto Sannazzaro,Ben Longstaff译者 | 夕颜出品 | AI科技大本营(ID:rgznai100) 【导读】在 2020 年来临之际,新年前夕往往是人们回顾过去一年并展望来年的好时机。本文将深入探讨了关于 AI 的技术和非技术方面的趋势&am…
使用C++实现一套简单的状态机模型——实例
一般来说,“状态机”是一种表达状态转换变换逻辑的方法。曾经有人和我讨论过为什么不直接用ifelse,而要使用“状态机”去实现一些逻辑,认为使用“状态机”是一种炫技的表现。然而对于大型复杂逻辑的变化和跳转,使用ifelse将带来代…

net通过oledb 和ibm自带连接方式,连接db2数据库出错
第一种通过ibm方式连接 DataSet ds new DataSet(); OleDbConnection cn new OleDbConnection( "ProviderIBMDA400.1;Data Source192.168.21.10;User IDb4dd;" "Passwordb4dd;Default CollectionQIBMPP"); …

SAP QM 'QM System' 有什么控制作用?
SAP QM ‘QM System’ 有什么控制作用? QM system可以控制如下二点: 1>如果我方与Vendor的质量标准匹配,且相互认证,那么我方收货后不用检验,系统不产生检验批;如果我方与vendor的质量标准匹配&#x…