精华内容
下载资源
问答
  • 对抗机器学习模型

    千次阅读 2019-05-04 14:28:50
    随着AI时代机器学习模型在实际业务系统中愈发无处不在,模型的安全性也变得日渐重要。机器学习模型很可以会遭到恶意攻击,比较直接就能想到的如:人脸识别模型的攻击。训练出具有对抗性的机器学习模型,在业务系统...

    1. Attack ML Model

    随着AI时代机器学习模型在实际业务系统中愈发无处不在,模型的安全性也变得日渐重要。机器学习模型很可以会遭到恶意攻击,比较直接就能想到的如:人脸识别模型的攻击。训练出具有对抗性的机器学习模型,在业务系统存在着越来越重要的实际意义。

    2. Attack

    机器学习模型攻击要做的事情如下图所示:
    在这里插入图片描述
    假设我们有一个Network用来做动物的图像识别。我们输入一张如图所示的图片x0x^0,Network预测为“Tiger Cat”。机器学习模型攻击是在x0x^0上加上一个微小的噪音Δx\Delta x,使得图片看起来还是一只“Tiger Cat”,但是通过Network的预测结果却是其他动物了。

    2.1 Loss function

    在这里插入图片描述
    如上图所示,如果做图像分类,损失函数为:
    在这里插入图片描述
    其中,图像输入x0x^0是固定的。那么攻击模型的损失函数也可用类似的方式定义出来:

    • 如果是无目标攻击(不需要使得被攻击的模型将输入预测成特定某一类)的攻击,则损失函数为:
      在这里插入图片描述
      即预测结果远离类别。其中,网络参数θ\theta是固定,网络调整的是输入的xx^{'}

    • 有目标攻击(使得被攻击的模型将输入预测成特定某一类)的攻击,则损失函数为:
      在这里插入图片描述
      即预测结果既要远离正确类别,又要接近某错误类别。

    上述两种损失函数还需要满足一定的约束,就是不能与原来的图片有太大的差异,即:
    在这里插入图片描述
    距离 d 通常的定义方式有:
    在这里插入图片描述

    2.2 Attack gradient descent

    Attack gradient descent 相当于就是有了一定限制的gradient descent。每一步在对xx做更新后,都要计算是否符合限制:
    在这里插入图片描述
    如果不符合,我们就把它调整为符合限制的xx。如何调整呢?简而言之,就是把更新后的xtx^t拉到符合限制区域的最近的向量上,用它来替代xtx^t

    在这里插入图片描述

    2.3 FGSM

    FGSM(fast gradient sign method) 是一种非常快捷的attack方法:只进行一次求梯度,并取其各个位上的符号作为结果 Δx\Delta x ;更新时根据 Δx\Delta x 直接加减 ε\varepsilon
    在这里插入图片描述
    该方法相当于使用了非常大的学习率,并且采用L-infinity距离,再把xx拉回到正方形的角上。

    2.4 Black box attack

    之前讲的都是白盒攻击,即模型的网络结构我们都是知道的。那么,如果一个未知结构的Black模型,该如何攻击?很神奇的是,我们只要用相同的数据训练某个自定义结构的Proxy模型,在该Proxy模型上做attack,Black模型也能被很好的attack了。下表为proxy-black attack后的正确率
    在这里插入图片描述

    2.5 More …

    3. Defense

    讲完attack,我们来讲怎么defense。

    2.1 Passive Defense

    Passive Defense 主要是思想是在给模型做层“保护罩”。

    2.1.1 Smoothing Filter

    做一层简单的平滑过滤,也能很好的防御attack:
    在这里插入图片描述

    2.1.2 Feature Squeeze

    不同压缩的特征进行预测,根据预测结果之间的距离来判定该输入是否被attack:
    在这里插入图片描述

    2.1.3 Randomization

    对输入对图片做一些随机对改变(如尺寸、填充),然后再输入到模型中:
    在这里插入图片描述

    2.2 Proactive Defense

    Proactive Defense 的主要思想是:找出漏洞,补起来。直观的去想,做法也很简单:

    • 训练数据 train出 model
    • 对每个训练数据,train出可以attack model的 新数据,并用原数据的label 作为新数据的label
    • 生成的新数据再用于训练model,填补model的漏洞

    在这里插入图片描述

    展开全文
  • 使用PyCaret构建机器学习模型

    千次阅读 2020-06-30 14:46:45
    学习如何依赖PyCaret在几行代码中构建复杂的机器学习模型 介绍 我建立的第一个机器学习模型是一个相当麻烦的代码块。我仍然记得构建一个集成模型,它需要许多行代码,它十分需要一个向导来解开这些混乱的代码! 当...

    作者|LAKSHAY ARORA 编译|VK 来源|Analytics Vidhya

    概述

    • PyCaret是一个超级有用的Python库,用于在短时间内执行多个机器学习任务

    • 学习如何依赖PyCaret在几行代码中构建复杂的机器学习模型

    介绍

    我建立的第一个机器学习模型是一个相当麻烦的代码块。我仍然记得构建一个集成模型,它需要许多行代码,它十分需要一个向导来解开这些混乱的代码!

    当涉及到构建可解释的机器学习模型时,尤其是在行业中,编写高效的代码是成功的关键。所以我强烈建议使用PyCaret库。

    我希望PyCaret在我的刚学习机器学习的日子里出现!这是一个非常灵活和有用的库,我在最近几个月已经相当依赖。我坚信任何有志成为数据科学或分析专业人士的人都会从使用PyCaret中受益匪浅。

    我们将看到PyCaret到底是什么,包括如何在你的机器上安装它,然后我们将深入研究如何使用PyCaret来构建可解释的机器学习模型,包括集成模型。

    目录

    1. 什么是PyCaret?为什么要使用它?

    2. 安装PyCaret

    3. 熟悉PyCaret

    4. 使用PyCaret训练我们的机器学习模型

    5. 使用PyCaret构建集成模型

    6. 分析模型

    7. 做出预测

    8. 保存并加载模型

    什么是PyCaret?为什么要使用它?

    PyCaret是Python中一个开源的机器学习库,它可以帮助你从数据准备到模型部署。它很容易使用,你可以用一行代码完成几乎所有的数据科学项目任务。

    我发现PyCaret非常方便。以下是两个主要原因:

    • PyCaret是一个代码库,它使你的工作效率更高。你可以在代码上花更少的时间,做更多的实验

    • 它是一个易于使用的机器学习库,将帮助你执行端到端的机器学习实验,无论是输入缺失值、编码分类数据、特征工程、超参数调整,还是构建集成模型

    安装PyCaret

    这是最直接的。可以直接使用pip安装PyCaret的第一个稳定版本v1.0.0。只需在Jupyter Notebook中运行以下命令即可开始:

    !pip3 install pycaret

    熟悉PyCaret

    问题陈述和数据集

    在本文中,我们将解决一个分类问题。我们有一个银行数据集,包括客户年龄、经验、收入、教育程度,以及他/她是否有信用卡。该行希望建立一个机器学习模型,帮助他们识别购买个人贷款可能性更高的潜在客户。

    数据集有5000行,我们保留了4000行用于训练模型,剩下的1000行用于测试模型。你可以在这里找到本文中使用的完整代码和数据集。

    https://github.com/lakshay-arora/PyCaret-Example

    让我们从使用Pandas库读取数据集开始:

    # 导入panda以读取CSV文件
    import pandas as pd
    # 读取数据
    data_classification = pd.read_csv('datasets/loan_train_data.csv')
    # 查看数据的顶行
    data_classification.head()

    在PyCaret中启动机器学习项目之前的第一步是设置环境。这只是一个两步的过程:

    1. 导入模块:根据要解决的问题类型,首先需要导入模块。在PyCaret的第一个版本中,有6个不同的模块可用:回归、分类、聚类、自然语言处理(NLP)、异常检测和关联挖掘规则。在本文中,我们将解决一个分类问题,因此我们将导入分类模块
    2. 初始化设置:在这个步骤中,PyCaret执行一些基本的预处理任务,比如忽略id和Date列、填充丢失的值、对分类变量进行编码,以及在其余建模步骤中将数据集拆分为train test。当你运行setup函数时,它将首先确认数据类型,然后如果你按enter,它将创建环境。
    # 导入分类模块
    from pycaret import classification
    # 设置环境
    classification_setup = classification.setup(data= data_classification, target='Personal Loan')
    

    我们都准备好探索PyCaret了!

    使用PyCaret训练我们的机器学习模型

    训练模型

    用PyCaret训练一个模型非常简单。你只需要使用create_model函数,该函数只接受一个参数(模型缩写为字符串)。

    在这里,我们将首先训练一个决策树模型,我们必须通过“dt”,它将返回一个表,其中包含用于分类模型的常用评估指标的k倍交叉验证分数。

    以下是用于监督学习的评估指标:

    • 分类:Accuracy, AUC, Recall, Precision, F1, Kappa
    • 回归:MAE、MSE、RMSE、R2、RMSLE、MAPE

    你可以查看PyCaret的文档页以了解更多缩写。

    https://pycaret.org/create-model/

    # 建立决策树模型
    classification_dt = classification.create_model('dt')

    同样,为了训练XGBoost模型,只需要传递字符串“XGBoost”:

    # 构建xgboost模型
    classification_xgb = classification.create_model('xgboost')

    超参数调整

    我们可以通过使用tune_model函数来调整机器学习模型的超参数,该函数接受一个参数,模型缩写字符串(与我们在create_model函数中使用的相同)。

    PyCaret为我们提供了很多灵活性。例如,我们可以使用tune_model函数中的fold参数定义折叠次数。或者我们可以使用n_iter参数更改迭代次数。增加nòiter参数将明显增加训练时间,提供更好的性能。

    让我们训练一个CatBoost模型:

    # 构建和调优catboost模型
    tune_catboost = classification.tune_model('catboost')

    使用PyCaret构建集成模型

    机器学习中的集成模型将来自多个模型的决策结合起来,以提高整体性能。

    在PyCaret中,我们可以用一行代码创建bagging、boosting、blending和stacking集成模型。

    让我们在这里训练一个集成模型。它还将返回一个表,其中包含常用评估指标的k折交叉验证分数:

    # boosting
    boosting = classification.ensemble_model(classification_dt, method= 'Boosting')

    另一个非常著名的合成技术是blending。你只需要传递在blend_models函数列表中创建的模型。

    # blending
    blender = classification.blend_models(estimator_list=[classification_dt, classification_xgb])

    就这样!你只需要用PyCaret编写一行代码就可以完成大部分工作。

    比较模型

    这是PyCaret库的另一个有用功能。如果不想逐个尝试不同的模型,可以使用compare models函数,它将为所有可用模型训练和比较通用的评估度量。

    此函数仅在pycaret.classification以及 pycaret.regression模块中。

    # 比较不同分类模型的性能
    classification.compare_models()

    分析模型

    现在,在训练模型之后,下一步是分析结果。从商业角度来看,这特别有用,对吧?分析PyCaret中的模型也很简单。只需一行代码,你就可以执行以下操作:

    1. 对模型结果绘图:分析PyCaret中的模型性能与编写plot_model一样简单。可以绘制决策边界、精确召回曲线、验证曲线、残差图等。此外,对于群集模型,可以绘制肘部图和轮廓图。对于文本数据,可以绘制字云图、bigram图和trigram频率图等。
    2. 解释结果:通过分析重要特性,解释模型结果有助于调试模型。这是工业级机器学习项目中至关重要的一步。在PyCaret中,我们可以用一行代码通过SHAP值和相关图来解释模型

    对模型结果绘图

    可以通过提供模型对象作为参数和所需的打印类型来打印模型结果。绘制AUC-ROC曲线和决策边界:

    # AUC-ROC 图
    classification.plot_model(classification_dt, plot = 'auc')
    
    # 决策边界
    classification.plot_model(classification_dt, plot = 'boundary')

    绘制训练模型的精确召回曲线和验证曲线:

    # Precision Recall 曲线
    classification.plot_model(classification_dt, plot = 'pr')
    
    # 验证曲线
    classification.plot_model(classification_dt, plot = 'vc')

    评估我们的模型

    如果你不想单独绘制所有这些可视化效果,那么PyCaret库还有另一个惊人的功能——evaluate_model。在这个函数中,你只需要传递model对象,PyCaret将创建一个交互式窗口,供你以所有可能的方式查看和分析模型:

    # 评估模型
    classification.evaluate_model(classification_dt)

    解释我们的模型

    在大多数机器学习项目中,解释复杂模型是非常重要的。它通过分析模型认为什么是重要的来帮助调试模型。在PyCaret中,这一步与编写解释模型以获取Shapley值一样简单。

    # 解释模型:SHAP
    classification.interpret_model(classification_xgb)

    让我们尝试绘制相关图:

    # 解释模型:相关性
    classification.interpret_model(classification_xgb,plot='correlation')

    做出预测

    最后,我们将对看不见的数据进行预测。为此,我们只需要传递我们将用于预测和数据集的模型。确保它的格式与我们之前设置环境时提供的格式相同。

    PyCaret构建一个包含所有步骤的管道,并将未看到的数据传递到管道中,并给出结果。

    让我们看看如何预测数据的标签:

    # 读取测试数据
    test_data_classification = pd.read_csv('datasets/loan_test_data.csv')
    # 做出预测
    predictions = classification.predict_model(classification_dt, data=test_data_classification)
    # 查看预测
    predictions

    保存并加载模型

    现在,一旦构建并测试了模型,我们就可以使用save_model函数将其保存在pickle文件中。传递要保存的模型和文件名,即:

    # 保存模型
    classification.save_model(classification_dt, 'decision_tree_1')

    我们可以稍后加载此模型并预测数据上的标签:

    # 加载模型
    dt_model = classification.load_model(model_name='decision_tree_1')

    结尾

    它真的很容易使用。我个人发现PyCaret对于在时间紧迫的情况下快速生成结果非常有用。

    在不同类型的数据集上练习使用它——你会越充分利用它,就越能真正掌握它的实用性!它甚至只需要一行代码就可以在AWS等云服务上支持模型部署。

    原文链接:https://www.analyticsvidhya.com/blog/2020/05/pycaret-machine-learning-model-seconds/

    欢迎关注磐创AI博客站: http://panchuang.net/

    sklearn机器学习中文官方文档: http://sklearn123.com/

    欢迎关注磐创博客资源汇总站: http://docs.panchuang.net/

    展开全文
  • 使用Flask部署机器学习模型

    千次阅读 2020-07-09 16:57:53
    部署机器学习模型是每个ML项目的一个关键 学习如何使用Flask将机器学习模型部署到生产中 模型部署是数据科学家访谈中的一个核心话题 介绍 我记得我早期在机器学习领域的日子。我喜欢处理多个问题,对机器学习...

    作者|LAKSHAY ARORA 编译|VK 来源|Analytics Vidhya

    概述

    • 部署机器学习模型是每个ML项目的一个关键

    • 学习如何使用Flask将机器学习模型部署到生产中

    • 模型部署是数据科学家访谈中的一个核心话题

    介绍

    我记得我早期在机器学习领域的日子。我喜欢处理多个问题,对机器学习项目的各个阶段都很感兴趣。和我之前的许多人一样,我被模型整个生命周期的构建所吸引。

    我和领域专家谈过,项目经理和所有相关人员确保他们的投入被包括在模型中。但后来我遇到了一个障碍——我到底该如何把我的模型交给我的客户呢?我不能给他们一个Jupyter notebook!

    我所学的一切都集中在模型构建组件上。没有多少人会谈论如何部署你的机器学习模型。把你的模型投入生产意味着什么?它需要什么?

    这些都是每个数据科学家需要回答的关键的职业定义问题。这就是为什么我决定写下这个教程来演示如何使用Flask来部署机器学习模型。

    我们将首先了解模型部署的概念,然后讨论Flask是什么,如何安装它,最后,我们将深入到一个问题陈述中,学习如何使用Flask部署机器学习模型。

    目录

    1. 什么是模型部署?

    2. 什么是Flask?

    3. 在机器上安装Flask

    4. 理解问题陈述

    5. 建立我们的机器学习模型

    6. 设置Twitter API

    7. 创建网页

    8. 将网页与模型连接

    9. 查看部署模型

    什么是模型部署?

    在典型的机器学习和深度学习项目中,我们通常从定义问题陈述开始,然后是数据收集和准备、数据理解和模型构建,对吧?

    但是,最后,我们希望我们的模型能够提供给最终用户,以便他们能够利用它。模型部署是任何机器学习项目的最后阶段之一,可能有点棘手。如何将机器学习模型传递给客户/利益相关者?当你的模型投入生产时,你需要注意哪些不同的事情?你怎么能开始部署一个模型呢?

    Flask的作用来了。

    什么是Flask?

    Flask是一个用Python编写的web应用程序框架。它有多个模块,使web开发人员更容易编写应用程序,而不必担心协议管理、线程管理等细节。

    Flask是开发web应用程序的选择之一,它为我们提供了构建web应用程序所必需的工具和库。

    在本教程中,我们将利用Flask的资源来帮助我们部署自己的机器学习模型。你会喜欢用Flask工作的!

    在机器上安装Flask

    安装Flask简单明了。在这里,我假设你已经安装了Python 3和pip。要安装Flask,需要运行以下命令:

    sudo apt-get install python3-flask

    就这样!准备好深入到问题陈述中去,离部署机器学习模型更近一步。

    理解问题陈述

    在本节中,我们将使用Twitter数据集。我们的目标是在推特上发现仇恨言论。为了简单起见,如果推特带有种族主义或性别歧视情绪,我们说它包含仇恨言论。

    我们将创建一个包含如下文本框的网页(用户可以搜索任何文本):

    对于任何搜索查询,我们将实时抓取与该文本相关的tweet,对于所有这些被抓取的tweet,我们将使用仇恨言语检测模型对种族主义和性别歧视tweet进行分类。

    设置项目工作流

    1. 模型构建:我们将建立一个逻辑回归模型管道来分类tweet是否包含仇恨言论。在这里,我们的重点不是如何建立一个非常精确的分类模型,而是看看如何使用Flask部署这个模型
    2. 安装Twitter应用程序:我们将在Twitter开发人员的网站上创建一个Twitter应用程序,并获取身份验证密钥。我们将编写一个Python脚本来抓取与特定文本查询相关的tweet
    3. 网页模板:在这里,我们将设计一个用户界面,用户可以提交他的查询
    4. 获取Tweets:从用户处获取查询后,我们将使用twitter API获取与所搜索查询相关的Tweets
    5. 预测类并发送结果:接下来,使用保存的模型预测tweets的类并将结果发送回网页

    下面是我们刚才看到的步骤的示意图:

    建立我们的机器学习模型

    我们在映射到标签的CSV文件中有关于Tweets的数据。我们将使用logistic回归模型来预测tweet是否包含仇恨言论。

    你可以在这里下载完整的代码和数据集。

    https://github.com/lakshay-arora/Hate-Speech-Classification-deployed-using-Flask/tree/master

    首先导入一些必需的库:

    # 导入必需的库
    import pandas as pd
    from sklearn.feature_extraction.text import ENGLISH_STOP_WORDS, TfidfVectorizer
    from sklearn.linear_model import LogisticRegression
    from sklearn.pipeline import Pipeline
    from sklearn.metrics import f1_score
    from sklearn.model_selection import train_test_split

    接下来,我们将读取数据集并查看顶行:

    # 读取数据集
    data = pd.read_csv('dataset/twitter_sentiments.csv')
    # 查看顶行
    data.head()

    数据集有31962行和3列:

    1. id:每行的唯一编号
    2. label:对于正常的tweet,它是0;对于种族主义或性别歧视的tweet,它将是1。有29720个0和2242个1
    3. tweet:在Twitter上发布的tweet

    现在,我们将使用scikit learn的train_test_split函数将数据分为训练和测试。我们只将20%的数据用于测试。我们将对标签列上的数据进行分层抽样,以便目标标签在训练和测试数据中的分布相同:

    # 分为训练集和测试集
    train, test = train_test_split(data, test_size = 0.2, stratify = data['label'], random_state=21)
    
    # 获取大小
    train.shape, test.shape
    ## >> ((25569, 3), (6393, 3))

    现在,我们将使用TfidfVectorizer 创建tweet列的TF-IDF向量,并将参数lowercase设为True,以便它首先将文本转换为小写。我们还将保持max features为1000,并传递scikit learn 库中预定义的停用词列表。

    首先,创建TFidfVectorizer的对象,构建模型并将模型与训练数据tweets匹配:

    # 创建TfidfVectorizer对象
    tfidf_vectorizer = TfidfVectorizer(lowercase= True, max_features=1000, stop_words=ENGLISH_STOP_WORDS)
    
    # 拟合模型
    tfidf_vectorizer.fit(train.tweet)

    利用模型对训练和测试数据的推文进行变换:

    # #转换训练和测试数据
    train_idf = tfidf_vectorizer.transform(train.tweet)
    test_idf  = tfidf_vectorizer.transform(test.tweet)

    现在,我们将创建一个Logistic回归模型的对象。

    请记住,我们的重点不是建立一个非常精确的分类模型,而是看我们如何部署这个预测模型来获得结果。

    # 创建线性回归模型的对象
    model_LR = LogisticRegression()
    
    # 用训练数据拟合模型
    model_LR.fit(train_idf, train.label)
    
    # 预测训练数据的标签
    predict_train = model_LR.predict(train_idf)
    
    # 在测试数据预测模型
    predict_test = model_LR.predict(test_idf)
    
    # f1得分
    f1_score(y_true= train.label, y_pred= predict_train)
    ## >> 0.4888178913738019
    
    f1_score(y_true= test.label, y_pred= predict_test)
    ## >> 0.45751633986928114

    让我们定义管道的步骤:

    1. 步骤1:创建一个tweet文本的TF-IDF向量,其中包含上面定义的1000个特征

    2. 步骤2:使用逻辑回归模型预测目标标签

    当我们对管道对象使用fit()函数时,这两个步骤都会执行。在模型训练过程之后,我们使用predict())函数来生成预测。

    # 定义管道的阶段
    pipeline = Pipeline(steps= [('tfidf', TfidfVectorizer(lowercase=True,
                                                          max_features=1000,
                                                          stop_words= ENGLISH_STOP_WORDS)),
                                ('model', LogisticRegression())])
    
    # 用训练数据拟合管道模型                          
    pipeline.fit(train.tweet, train.label)

    现在,我们将使用一个示例tweet测试管道:

    # 示例tweet
    text = ["Virat Kohli, AB de Villiers set to auction their 'Green Day' kits from 2016 IPL match to raise funds"]
    
    # 使用管道预测标签
    pipeline.predict(text)
    ## >> array([0])

    我们已经成功地构建了机器学习管道,我们将使用joblib库中的dump函数保存这个管道对象。只需传递管道对象和文件名:

    # 导入joblib
    from joblib import dump
    
    # 保存管道模型
    dump(pipeline, filename="text_classification.joblib")

    它将创建一个文件“text_classification.joblib“. 现在,我们将打开另一个Python文件,并使用joblib库的load函数来加载管道模型。

    让我们看看如何使用保存的模型:

    # 导入joblib
    from joblib import load
    
    # tweet文本示例
    text = ["Virat Kohli, AB de Villiers set to auction their 'Green Day' kits from 2016 IPL match to raise funds"]
    
    # 加载保存的pipleine模型
    pipeline = load("text_classification.joblib")
    
    # 对tweet文本样本的预测
    pipeline.predict(text)
    ## >> array([0])

    设置Twitter API

    我们需要做的第一件事是从Twitter开发人员网站获取API key, API secret key, access tokenaccess token secret。这些密钥将帮助API进行身份验证。首先,转到这一页并填写表格。

    https://developer.twitter.com/en/apps/create

    一旦你填好表格,你就会拿到key。

    安装tweepy

    现在,我们将安装tweepy,它是一个Python库,允许我们访问Twitter API。

    !pip3 install tweepy

    导入所需的库并添加从Twitter接收到的身份验证密钥。Tweepy试图使身份验证对你来说尽可能无痛。

    要开始这个过程,需要创建OAuthHandler实例并传递API keyAPI secret key。然后使用access tokenaccess token secret对实例进行身份验证。

    # 导入所需库
    import tweepy
    import time
    import pandas as pd
    pd.set_option('display.max_colwidth', 1000)
    
    # api key
    api_key = "Enter API Key Here"
    # api secret key
    api_secret_key = "Enter API Secret Key Here."
    # access token
    access_token = "Enter Access Token Here"
    # access token secret
    access_token_secret = "Enter Access Token Secret Here."
    
    # 授权API Key
    authentication = tweepy.OAuthHandler(api_key, api_secret_key)
    
    #对用户access token和access token secret授权
    authentication.set_access_token(access_token, access_token_secret)
    
    # 调用api
    api = tweepy.API(authentication, wait_on_rate_limit=True)

    接下来,我们将定义一个函数“get_related_tweets”,它将接受参数text_query并返回与该特定文本查询相关的50条tweets。我们将使用搜索API从Twitter获取结果。

    搜索API的一些参数是:

    • q–最多500个字符的搜索查询字符串
    • geocode–返回位于给定纬度/经度的给定半径内的用户的tweets
    • lang–将tweets限制为给定的语言,由ISO 639-1代码给出
    • result_type–指定希望接收的搜索结果类型。当前默认值为“mixed”。有效值包括:
      • mixed:返回包含流行和实时结果
      • recent:仅返回最近的结果
      • popular:只返回最流行的结果
    • count–每页尝试检索的结果数。一次最多可以请求100条tweets
    • max_id–仅返回id小于(即早于)或等于指定id的状态。使用此选项,可以自动获取大量唯一的tweets

    我们将为给定的文本查询请求50条tweet以及tweet创建时间、tweet id和tweet文本,函数将返回所有tweet的数据帧:

    def get_related_tweets(text_query):
        # 存储推文的列表
        tweets_list = []
        # 推特数量
        count = 50
        try:
            # 从查询中提取单个tweets
            for tweet in api.search(q=text_query, count=count):
                print(tweet.text)
                # 添加到包含所有tweets的列表
                tweets_list.append({'created_at': tweet.created_at,
                                    'tweet_id': tweet.id,
                                    'tweet_text': tweet.text})
            return pd.DataFrame.from_dict(tweets_list)
    
        except BaseException as e:
            print('failed on_status,', str(e))
            time.sleep(3)

    创建网页

    在这里,我们将创建一个类似于以下内容的网页:

    它将有一个文本框,用户可以在其中键入文本查询,然后单击“搜索”按钮以获取搜索文本查询的结果。

    我们需要添加表单标记来收集搜索容器中的数据,在表单标记中,我们将方法post和name作为“search”传递。通过提供这个方法,我们的后端代码将能够知道我们已经收到了一些名为“search”的数据,在后端,我们需要处理这些数据并发送一些数据。

    这只是HTML文件的一部分。你可以在此处下载完整的代码和与此项目相关的其他文件。

    https://github.com/lakshay-arora/Hate-Speech-Classification-deployed-using-Flask/tree/master

    将网页与模型连接

    我们已经完成了前端部分,现在我们连接模型和网页。第一步是加载保存的管道模型,我们将定义一个函数requestResults,该函数将获取所请求查询的tweets,并使用管道获取标签并返回要发送的最终结果。

    # 导入所需库
    from flask import Flask, render_template, request, redirect, url_for
    from joblib import load
    from get_tweets import get_related_tweets
    
    # 加载管道对象
    pipeline = load("text_classification.joblib")
    
    # 获取特定文本查询的结果
    def requestResults(name):
        # 获取推特文本
        tweets = get_related_tweets(name)
        # 获取预测
        tweets['prediction'] = pipeline.predict(tweets['tweet_text'])
        # 获取预测的不同标签的值计数
        data = str(tweets.prediction.value_counts()) + '\n\n'
        return data + str(tweets)

    现在,首先,创建Flask类的一个对象,该对象将以当前模块名作为参数。route函数将告诉Flask应用程序下一步要在网页上呈现哪个URL。

    当Flask服务器运行时,Flask应用程序将路由到默认URL路径并调用home函数,它将呈现home.html文件。

    现在,每当有人发送文本查询时,Flask将检测post方法并调用get_data函数,在这里我们将使用名称搜索获取表单数据,然后重定向到success函数。

    最后,success函数将使用requestResults函数获取数据并将其发送回网页。

    # 启动flask
    app = Flask(__name__)
    
    # 渲染网页
    @app.route('/')
    def home():
        return render_template('home.html')
    
    # 当post方法检测到时,则重定向到success函数
    @app.route('/', methods=['POST', 'GET'])
    def get_data():
        if request.method == 'POST':
            user = request.form['search']
            return redirect(url_for('success', name=user))
    
    # 获取请求查询的数据
    @app.route('/success/<name>')
    def success(name):
        return "<xmp>" + str(requestResults(name)) + " </xmp> "

    现在,调用run函数启动Flask服务器:

    app.run(debug=True)

    查看部署模型

    我们已成功启动Flask服务器!打开浏览器并转到此地址-http://127.0.0.1:5000/。你将看到Flask服务器已呈现默认模板。现在搜索任何查询,如iplt20:

    Flask服务器将接收与iplt20相关的数据和新tweets请求,并使用该模型预测标签并返回结果。

    令人惊叹!在这里,在50条推文中,我们的模型预测了3条包含仇恨言论的推文。我们可以添加更多的功能,比如请求来自某个国家的推文。

    结尾

    这就是使用Flask执行模型部署的方法!部署机器学习模型听起来可能是一项复杂而繁重的任务,但是一旦你了解了它是什么以及它是如何工作的,你就已经完成了一半。

    原文链接:https://www.analyticsvidhya.com/blog/2020/04/how-to-deploy-machine-learning-model-flask/

    欢迎关注磐创AI博客站: http://panchuang.net/

    sklearn机器学习中文官方文档: http://sklearn123.com/

    欢迎关注磐创博客资源汇总站: http://docs.panchuang.net/

    展开全文
  • 机器学习模型的评价指标和方法

    万次阅读 多人点赞 2016-09-18 15:04:55
    二分类模型的评估 机器学习系统设计系统评估标准 Error Metrics for Skewed Classes有偏类的错误度量精确度召回率 PrecisionRecall精确度召回率 Trading Off Precision and Recall权衡精度和召回率F1值 A way to ...

    http://blog.csdn.net/pipisorry/article/details/52574156

    衡量分类器的好坏

            对于二类分类器/分类算法,评价指标主要有accuracy, [precision,recall,F-score,pr曲线],ROC-AUC曲线,gini系数。

            对于多类分类器/分类算法,评价指标主要有accuracy, [宏平均和微平均,F-score]。

            对于回归分析,主要有mse和r2/拟合优度。

     

    二分类模型的评估

    机器学习系统设计系统评估标准

    1. Error Metrics for Skewed Classes有偏类的错误度量精确度召回率
      1. PrecisionRecall精确度召回率
    2. Trading Off Precision and Recall权衡精度和召回率F1值
      1. A way to choose this threshold automatically How do we decide which of these algorithms is best
    3. Data For Machine Learning数据影响机器学习算法的表现

    [Machine Learning - XI. Machine Learning System Design机器学习系统设计(Week 6)系统评估标准 ]

    准确率/召回率/精度/F1值

    混淆矩阵

    混淆矩阵赋予一个分类器性能表现更全面的认识,同时它通过计算各种分类度量,指导你进行模型选择。

    对于二分类问题,可将样例根据其真实类别和分类器预测类别划分为:

    真正例(True Positive,TP):真实类别为正例,预测类别为正例。

    假正例(False Positive,FP):真实类别为负例,预测类别为正例。

    假负例(False Negative,FN):真实类别为正例,预测类别为负例。

    真负例(True Negative,TN):真实类别为负例,预测类别为负例。

    然后可以构建混淆矩阵(Confusion Matrix)如下表所示。

    真实类别

    预测类别

    正例

    负例

    正例

    TP

    FN

    负例

    FP

    TN

    准确率、识别率(Classification Accuracy)

    分类器正确分类的比例

    (TP+TN) /(TP+TN+FN+FP)

    错误率、误分类率(Classification Error):分类器误分类的比例

    (FP+FN) /(TP+TN+FN+FP)

    考虑类不平衡问题,其中感兴趣的主类是稀少的。即数据集的分布反映负类显著地占多数,而正类占少数。故面对这种问题,需要其他的度量,评估分类器正确地识别正例数据的情况和正确地识别负例数据的情况。

    精度(Precision)

    看做精确性的度量,即标记为正类的数据实际为正例的百分比

    TP /(TP+FP)

    准确率,又称查准率(Precision,P):

        

    召回率(Recall)

    也称为真正例识别率、灵敏性(Sensitivity)、查全率:正确识别的正例数据在实际正例数据中的百分比

    TP /(TP+FN)

    特效性(Specificity),也称为真负例率:正确识别的负例数据在实际负例数据中的百分比

    print TN / float(TN+FP)

    假阳率(False Positive Rate):实际值是负例数据,预测错误的百分比

    FP /(TN+FP)

    specificity = TN / float(TN+FP)

    print 1 - specificity

    F1值/F度量

    (又称为F1分数或F分数)是使用精度和召回率的方法组合到一个度量上。

    F=2∗precision∗recall/(precision+recall)


    F1的一般形式:Fβ=(1+β^2)∗precision∗recall/(β^2∗precision+recall)

    F度量是精度和召回率的调和均值,它赋予精度和召回率相等的权重。

    Fβ度量是精度和召回率的加权度量,它赋予召回率权重是赋予精度的β倍。

    (2*precision*recall) / (precision+recall)

    G-Mean指标,也能评价不平衡数据的模型表现。

    示例

    pred label: 001001000001

    true  label: 101010010110

    计算的precision=1/3, recall=1/6

    如果将pred label和true label的0和1互换,得到的precision=4/9, recall=4/6,recall变大很多,原因是true  label是1:1的,而pred label是1:3的。

    [Scikit-learn:模型评估Model evaluation]

    [Machine Learning - XI. Machine Learning System Design机器学习系统设计(Week 6)系统评估标准]

     

    ROC-AUC曲线和PRC曲线

    [分类模型评估之ROC-AUC曲线和PRC曲线]

     

    KS曲线

        柯尔莫哥洛夫-斯米尔诺夫检验(Колмогоров-Смирнов检验)基于累计分布函数,用以检验两个经验分布是否不同或一个经验分布与另一个理想分布是否不同。ROC曲线是评判一个模型好坏的标准,但是最好的阈值是不能通过这个图知道的,要通过KS曲线得出。

        KS值越大,表示模型能够将正、负客户区分开的程度越大。 通常来讲,KS>0.2即表示模型有较好的预测准确性。

      绘制方式与ROC曲线略有相同,都要计算TPR和FPR。但是TPR和FPR都要做纵轴,横轴为把样本分成多少份。 KS曲线的纵轴是表示TPR和FPR的值,就是这两个值可以同时在一个纵轴上体现,横轴就是阈值,然后在两条曲线分隔最开的地方,对应的就是最好的阈值。

    下图中,一条曲线是FPR,一条是TPR

     

    吉尼系数Gini coefficient

    在用SAS或者其他一些统计分析软件,用来评测分类器分类效果时,常常会看到gini coefficient,gini系数通常被用来判断收入分配公平程度,具体请参阅wikipedia-基尼系数

    在ID3算法中我们常使用信息增益来选择特征,信息增益大的优先选择。在C4.5算法中,采用了信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的问题。但是无论是ID3还是C4.5,都是基于信息论的熵模型的,这里面会涉及大量的对数运算。能不能简化模型同时也不至于完全丢失熵模型的优点呢?CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。


      图6.洛伦茨曲线与基尼系数

    Gini coefficient 是指绝对公平线(line of equality)和洛伦茨曲线(Lorenz Curve)围成的面积与绝对公平线以下面积的比例,即gini coefficient = A面积 / (A面积+B面积) 。

    用在评判分类模型的预测效力时,是指ROC曲线曲线和中线围成的面积与中线之上面积的比例。


      图7.Gini coefficient与AUC

    因此Gini coefficient与AUC可以互相转换:

    gini = A / (A + B) = (AUC - C) / (A + B) = (AUC -0.5) / 0.5 = 2*AUC - 1

    Note: 特别值得注意的一点是,这里的AUC并不是roc_auc(y是二值的)计算里面的那个roc曲线面积,而是指x,y横纵坐标计算出来的面积(y不是二值而是连续值)。

    Gini系数的计算

    def giniCoefficient(x, y):
        '''
        gini系数计算
          :param x: 推测值(人口)
          :param y: 实际值(财富)
        '''
        x = np.asarray(x)
        y = np.asarray(y)
        x.__add__(0)
        y.__add__(0)
    
        x = np.cumsum(x)
        if x[-1] != 0:
            x = x / x[-1]
    
        y = np.cumsum(y)
        if y[-1] != 0:
            y = y / y[-1]
    
        area = metrics.auc(x, y, reorder=True)
        gini_cof = 1 - 2 * area
    
        return gini_cof if math.fabs(gini_cof) > pow(math.e, -6) else 0

    皮皮blog

     

     

    多分类模型的评估

    accuracy

             在多类分类的背景下,accuracy = (分类正确的样本个数) / (分类的所有样本个数)。

             这样做其实看上去也挺不错的,不过可能会出现一个很严重的问题:例如某一个不透明的袋子里面装了1000台手机,其中有600台iphone6, 300台galaxy s6, 50台华为mate7,50台mx4(当然,这些信息分类器是不知道的。。。)。如果分类器只是简单的把所有的手机都预测为iphone6, 那么通过上面的公式计算的准确率accuracy为0.6,看起来还不错;可是三星,华为和小米的全部预测错了。如果再给一个袋子,里面装着600台galaxy s6, 300台mx4, 50台华为mate7,50台iphone,那这个分类器立马就爆炸了

    宏平均(macro-average)和微平均(micro-average)

             如果只有一个二分类混淆矩阵,那么用以上的指标就可以进行评价,没有什么争议,但是当我们在n个二分类混淆矩阵上要综合考察评价指标的时候就会用到宏平均和微平均。宏平均(macro-average)和微平均(micro-average)是衡量文本分类器的指标。根据Coping with the News: the machine learning way: When dealing with multiple classes there are two possible ways of averaging these measures(i.e. recall, precision, F1-measure) , namely, macro-average and micro-average. The macro-average weights equally all the classes, regardless of how many documents belong to it. The micro-average weights equally all the documents, thus favouring the performance on common classes. Different classifiers will perform different in common and rare categories. Learning algorithms are trained more often on more populated classes thus risking local over-fitting.

             宏平均(Macro-averaging),是先对每一个类统计指标值,然后在对所有类求算术平均值。宏平均指标相对微平均指标而言受小类别的影响更大。即将n分类的评价拆成n个二分类的评价,计算每个二分类的score,n个 score的平均值即为Macro score。

                 (5)

               (6)

               (7)

            (8)     

             微平均(Micro-averaging),是对数据集中的每一个实例不分类别进行统计建立全局混淆矩阵,然后计算相应指标。将n分类的评价拆成n个二分类的评价,将n个二分类评价的TP、FP、RN对应相加,计算评价准确率和召回率,由这2个准确率和召回率计算的F1 score即为Micro F1。

    [多类分类性能评价之宏平均(macro-average)与微平均(micro-average)]

    微平均(包括p\r\f)实际上就是前面说的accuracy,除非pred出了true没有的标签,如[微平均(Micro-averaging)]。

              (9)

              (10)         

           (11)  

    从上面的公式我们可以看到微平均并没有什么疑问,但是在计算宏平均F值时我给出了两个公式分别为公式(7)和(8)。都可以用。

    [谈谈评价指标中的宏平均和微平均]

             在测试数据集上,度量分类器对大类判别的有效性应该选择微平均,而度量分类器对小类判别的有效性则应该选择宏平均。

    一般来讲,Macro F1、Micro F1高的分类效果好。Macro F1受样本数量少的类别影响大。

             "macro" simply calculates the mean of the binary metrics,giving equal weight to each class. In problems where infrequent classesare nonetheless important, macro-averaging may be a means of highlightingtheir performance. On the other hand, the assumption that all classes areequally important is often untrue, such that macro-averaging willover-emphasize the typically low performance on an infrequent class.
             "weighted" accounts for class imbalance by computing the average ofbinary metrics in which each class’s score is weighted by its presence in thetrue data sample.
             "micro" gives each sample-class pair an equal contribution to the overallmetric (except as a result of sample-weight). Rather than summing themetric per class, this sums the dividends and divisors that make up theper-class metrics to calculate an overall quotient. Micro-averaging may be preferred in multilabel settings, includingmulticlass classification where a majority class is to be ignored.
    "samples" applies only to multilabel problems. It does not calculate aper-class measure, instead calculating the metric over the true and predictedclasses for each sample in the evaluation data, and returning their(sample_weight-weighted) average.

    [Scikit-learn:模型评估Model evaluation]

    示例

    假设有10个样本,它们属于A、B、C三个类别。假设这10个样本的真实类别和预测的类别分别是:

    > 真实:A A A C B C A B B C
    > 预测:A A C B A C A C B C

    Kappa一致性系数

            交叉表(混淆矩阵)虽然比较粗糙,却是描述栅格数据随时间的变化以及变化方向的很好的方法。但是交叉表却不能从统计意义上描述变化的程度,需要一种能够测度名义变量变化的统计方法即KAPPA指数——KIA。 kappa系数是一种衡量分类精度的指标。KIA主要应用于比较分析两幅地图或图像的差异性是“偶然”因素还是“必然”因素所引起的,还经常用于检查卫星影像分类对于真实地物判断的正确性程度。KIA是能够计算整体一致性和分类一致性的指数。

    KIA的计算式的一般性表示为: 
      这里写图片描述 
    总体KAPPA指数的计算式为:
    这里写图片描述

      式中, 
    这里写图片描述 
      式中的p0和pc都有着明确的含义:p0被称为观测精确性或一致性单元的比例;pc被称为偶然性一致或期望的偶然一致的单元的比例。kappa计算结果为-1~1,但通常kappa是落在 0~1 间,可分为五组来表示不同级别的一致性:0.0~0.20极低的一致性(slight)、0.21~0.40一般的一致性(fair)、0.41~0.60 中等的一致性(moderate)、0.61~0.80 高度的一致性(substantial)和0.81~1几乎完全一致(almost perfect)。 

    kappa指数计算的一个示例:

    混淆矩阵

    kappa在sklearn上的实现[sklearn.metrics.cohen_kappa_score]

    多分类roc曲线

    [多分类的ROC曲线]

    皮皮blog

     

     

    回归模型的评估

    平均均方误差mse

    R^2 (coefficient of determination)(推荐)

    regression score function.评估模型拟合的好坏。训练集估计和学到的模型产生的新数据集评估的偏离度。sklearn中Regressor默认的score方法。

    拟合优度(Goodness of Fit)是指回归直线对观测值的拟合程度。度量拟合优度的统计量是可决系数(亦称确定系数)R^2。R^2最大值为1。R^2的值越接近1,说明回归直线对观测值的拟合程度越好;反之,R^2的值越小,说明回归直线对观测值的拟合程度越差。

    在用线性模型拟合完数据之后,我们需要评估模型拟合的好坏情况。当然,这种评估取决于我们想要用这个模型来做什么。一种评估模型的办法是计算模型的预测能力。

    在一个预测模型中,我们要预测的值称为因变量(dependent variable),而用于预测的值称为解释变量或自变量(explanatory variable或independent variable)。

    通过计算模型的确定系数(coefficient of determination),也即通常所说的R^2,来评价模型的预测能力:

     

    即1 - 预测模型的mse/数据本身的mse (数据本身的mse就是直接将数据label均值作为预测的mse)

    ​​解释R2意义例子

    假设你试图去猜测一群人的体重是多少,你知道这群人的平均体重是\bar{y}​。如果除此之外你对这些人一点儿都不了解,那么你最佳的策略是选择猜测他们所有人的体重都是\bar{y}​。这时,估计的均方误差就是这个群体的方差var(Y):

    接下来,假如我告诉你这群人的身高信息,那么你就可以猜测体重大约为​,在这种情况下,估计的均方误差就为Var(ε):

    所以,Var(ε)/Var(Y)表示的是有解释变量情况下的均方误差与没有解释变量情况下的均方误差的比值,也即不能被模型解释的均方误差占总的均方误差的比例。这样R2表示的就是能被模型解释的变异性的比例。

    假如一个模型的R^2=0.64,那么我们就可以说这个模型解释了64%的变异性,或者可以更精确地说,这个模型使你预测的均方误差降低了64%。

    在线性最小二乘模型中,我们可以证明确定系数和两个变量的皮尔逊相关系数存在一个非常简单的关系,即:R2=ρ2。

    [拟合优度 ]

    拟合优度Goodness of fit

    皮皮blog

     

     

    其它

    学习目标

    {评价学习模型的不同方法}

    不同的模型通过表达了不同的折中方案。近似模型根据一种性能度量可能表现很好,但根据其它度量又可能很差。为了引导学习算法的发展,必须定义学习任务的目标,并且定义能够评价不同结果 相应的度量方法。

    密度估计

    评价指标及方法

    期望的对数似然

    由于生成分布p*是固定的,评价指标——相对熵可以转换成最大期望的对数似然。直观上就是,M~对从真实分布中采样的点赋予的概率越大,越能反映它是该分布。

    数据的似然

    专栏:16.A 用于设计和评价机器学习过程的基本实验性条款

    评价泛化性能

    抵抗测试holdout-testing

    Dtrain: 目标函数;Dtest: 损失函数。

    k-折交叉验证

    讨论及及算法

    选择学习过程

    使用抵抗测试或交叉验证来选择学习过程。更好的是使用训练集,用来学习模型;验证集,用来评价学习过程的不同变体并从中做出选择;分离的测试集,用来在其上评价最终的性能(会使分割数据的问题更加恶化)。也可以发展一种嵌套的交叉验证方案。

    专栏:16.B 用来尝试并回答有关模型类合适复杂性问题的基本理论框架:PAC界

    [《Probabilistic Graphical Models:Principles and Techniques》(简称PGM)]

    from: http://blog.csdn.net/pipisorry/article/details/52574156

    ref: [Scikit-learn:模型评估Model evaluation ]

    [Scikit-learn:模型评估Model evaluation 之绘图 ]

     

    展开全文
  • 机器学习模型训练全流程!

    千次阅读 2020-08-11 08:47:24
    机器学习模型训练全流程! 周末在家无聊闲逛github,发现一个很有趣的开源项目,作者用手绘图的方式讲解了机器学习模型构建的全流程,逻辑清晰、生动形象。同时,作者也对几张图进行了详细的讲解,学习...
  • 部署机器学习模型的后期监视

    千次阅读 2019-11-05 10:11:01
    部署机器学习模型后下一步是什么? 部署后的监视是任何机器学习项目中的关键步骤 学习部署模型后的监视的各个方面 介绍 你已经建立了你的机器学习模型。你甚至已经准备将你的模型投入生产(或模型部署)。很好,你...
  • 机器学习模型可解释性的详尽介绍

    千次阅读 多人点赞 2019-11-26 12:22:00
    机器之心平台来源:腾讯技术工程模型可...本文对机器学习模型可解释性相关资料汇总survey。综述机器学习业务应用以输出决策判断为目标。可解释性是指人类能够理解决策原因的程度。机器学习模型的可解释性越高,人...
  • 常见机器学习模型总结

    万次阅读 2018-11-30 23:58:24
    一、机器学习模型按照可使用的数据类型分为监督学习和无监督学习两大类。  1-监督学习主要包括用于分类和用于回归的模型:  1)分类:线性分类器(如LR)、支持向量机(SVM)、朴素贝叶斯(NB)、K近邻(KNN)、...
  • 机器学习模型训练测试完整步骤

    万次阅读 多人点赞 2017-12-22 16:54:49
    机器学习模型训练测试完整步骤
  • 机器学习模型评估指标

    千次阅读 2017-12-04 19:09:11
    本文主要解释一些关于机器学习模型评价的主要概念,与评价中可能会遇到的一些陷阱。如训练集-验证集二划分校验(Hold-out validation)、交叉校验(Cross-validation)、超参数调优(hyperparameter tuning)等。这三...
  • 因此,我必须找到一个可以轻松地将我的机器学习模型与其他开发人员集成的解决方案,这些开发人员可以比我更好地构建强大的Web应用程序 通过为我的模型构建REST API,我可以将我的代码与其他开发人员分开。这里有一...
  • Spark-机器学习模型持久化

    千次阅读 2017-08-26 12:25:29
    在即将发布的Apache Spark 2.0中将会提供机器学习模型持久化能力。机器学习模型持久化(机器学习模型的保存和加载)使得以下三类机器学习场景变得容易:数据科学家开发ML模型并移交给工程师团队在生产环境中发布; ...
  • 使用PMML部署机器学习模型

    千次阅读 2019-09-11 12:48:00
    介绍了PMML这种跨平台机器学习模型表示标准,PMML的优缺点,常用的PMML开源类库(Nyoka、JPMML、PMML4S、PyPMML等),以及演示了如何生成和使用PMML
  • ML:利用time模块统计机器学习模型训练前后的时间成本代码实现 目录 利用time模块统计机器学习模型训练前后的时间成本代码实现 利用time模块统计机器学习模型训练前后的时间成本代码实现 ML:...
  • 6分钟了解所有机器学习模型

    千次阅读 2020-03-15 18:56:03
    所有机器学习模型都可以分为有监督的或无监督的。如果模型是监督模型,则将其再分类为回归模型或分类模型。我们将介绍这些术语的含义以及下面每个类别中对应的模型。 监督学习模型 监督学习涉及基于示例输入-输出对...
  • 机器学习模型选择如此简单

    千次阅读 2016-11-05 16:45:13
    机器学习模型选择如此简单
  • 如何快速提高机器学习模型的性能

    千次阅读 2018-11-10 23:06:41
    本篇文章主要介绍,如何针对机器学习模型的在训练集和开发集(验证集)上的评估指标来使用不同的技巧快速提高模型的评估性能。针对机器学习模型的性能优化我们有很多种方式,如增大数据集、增大模型的复杂度、使用更...
  • 64bit的python训练出的机器学习模型在Chaquopy中解析失败,其原因是Chaquopy中python为32bit,所以需要在pycharm中安装32位python再生成模型。
  • 常见的机器学习模型总结

    千次阅读 2018-11-19 22:41:02
    一、机器学习模型按照可使用的数据类型分为监督学习和无监督学习两大类。 1.监督学习主要包括用于分类和用于回归的模型:  1)分类:线性分类器(如LR)、支持向量机(SVM)、朴素贝叶斯(NB)、K近邻(KNN)、...
  • 机器学习模型的评价

    千次阅读 2016-03-14 11:46:39
    机器学习是一门跨学科领域,涉及到统计学、计算机科学、最优化理论、信息理论、神经科学、理论物理以及其他...  本文将从以下部分对机器学习模型的评价进行介绍:  * 介绍模型离线与在线评价体系与知识;  * 介绍
  • 机器学习模型应用以及模型优化的一些思路

    万次阅读 多人点赞 2017-03-09 19:55:45
    本文会介绍如何应用机器学习模型来构建一个智能化应用的通用的过程以及过程中每个环节一些实践性的思路,包括问题界定和定义、 label标注的定义、 数据样本的筛选和构造、 选择机器学习算法、 确定模型性能的度量...
  • 机器学习模型部署的三种方法

    千次阅读 2020-08-13 10:49:29
    “企业机器学习需要从数据工程和数据平台的角度看待大局[...],”贾斯汀·诺曼(Justin Norman)在今年巴塞罗那的DataWorks峰会上关于机器学习模型的部署的演讲中说。实际上,工业机器学习系统是庞大数据基础架构的...
  • TensorFlow机器学习模型快速部署指南

    千次阅读 2018-09-30 17:53:50
    本文将介绍一种将训练后的机器学习模型快速部署到生产种的方式。如果你已使用 TensorFlow 或 Caffe 等深度学习框架训练好了 ML 模型,该模型可以作为 demo。如果你更喜欢轻量级的解决方案,请阅读本文。 我刚刚训练...
  • 如何评估机器学习模型

    万次阅读 多人点赞 2020-05-02 21:44:35
    《Python深度学习中文版》部分内容+自己总结 概述 评估模型的重点是将数据划分为三个集合:训练集、验证集和测试集。在训练数据上训练模型,在验证数据上评估模型。一旦找到了最佳参数,就在测试数据上最后测试一次...
  • 机器学习模型 Logistic回归模型 作为一个基础模型,我们将使用scikit-learn库的LogisticRegression, 建立Logistic模型。为此,我们将使用所有的特征,我们也将填补缺失值,归一化特征。 from sklearn.preprocessing ...
  • 机器学习模型部署及在线预测

    千次阅读 2019-01-03 11:43:40
    到目前为止,我们训练的传统机器学习模型都只能进行本地预测(本地调用test方法),那么怎么样把我们的模型部署到线上,然后做在线实时预测呢? 我们的模型实际上就是一个y = f(x)函数,x是特征数据,y是预测结果。...
  • 机器学习模型优化之模型融合

    万次阅读 多人点赞 2018-01-07 15:37:24
    前言:在机器学习训练完模型之后我们要考虑模型的效率问题,常用的模型效率分析手段有: 研究模型学习曲线,判断模型是否过拟合或者欠拟合,并做出相应的调整; 对于模型权重参数进行分析,对于权重绝对值高/低的...
  • 【机器学习】解释机器学习模型

    千次阅读 2018-08-23 10:05:54
    在这篇博客文章中,我试图解释机器学习中可解释性的重要性,并讨论一些您可以自己试验的简单操作和框架。 关于机器学习的xkcd   为什么机器学习中的可解释性很重要? 在传统统计中,我们通过调查整个数据来...
  • Apache Spark 2.0: 机器学习模型持久化

    千次阅读 2016-11-19 11:59:27
    在即将发布的Apache Spark 2.0中将会提供机器学习模型持久化能力。机器学习模型持久化(机器学习模型的保存和加载)使得以下三类机器学习场景变得容易: 数据科学家开发ML模型并移交给工程师团队在生产环境中发布...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,459
精华内容 26,183
关键字:

机器学习模型