如何解决不能用Python执行机器学习问题

技术如何解决不能用Python执行机器学习问题这篇文章主要介绍“如何解决不能用Python执行机器学习问题”,在日常操作中,相信很多人在如何解决不能用Python执行机器学习问题问题上存在疑惑,小编查阅了各式资料,整理出

本文主要介绍“如何解决机器学习无法用Python执行的问题”。在日常操作中,相信很多人对于如何解决用Python无法进行机器学习的问题都有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解决“如何解决机器学习无法用Python执行的问题”的疑惑。接下来,请和边肖一起学习!

00-1010如上所述,应该创建一个表来保存Iris数据集,然后将数据加载到其中。OML需要一列作为行标识(序列),所以请记住:

CREATESEQUENCEseq _ irisCREATETABLEiris _ data(iris _ idnumberdefault seq _ iris。NEXTVAL,萼片_长度数,萼片_宽度数,花瓣_长度数,花瓣_宽度数,species varchar 2(16));现在,您可以下载并加载数据:

如何解决不能用Python执行机器学习问题

当弹出一个模态窗口时,只需提供下载CSV的路径,点击几次下一步。SQL开发人员可以在没有帮助的情况下正确地完成工作。

如何解决不能用Python执行机器学习问题

模型训练

现在你可以做一些有趣的事情。分类模型可以分解为训练/测试分割、模型训练和模型评估等几个步骤。我们将从最简单的开始。

训练/测试分割

Oracle经常使用两个视图来完成这一步:一个用于训练数据,另一个用于测试数据。您可以轻松创建这些神奇的PL/SQL:

BEGINEXECUTEIMMEDIATElsquocreatorreplaceviewiris _ train _ dataasse从iris_dataSAMPLE(75)SEED(42)中选择*;EXECUTEIMMEDIATElsquocreatorreplaceviewiris _ test _ dataasse选择* from iris _ dataundisselect * from iris _ train _ data;END/该脚本执行以下两件事:

s=" list-paddingleft-2">

  • 创建一个训练视图-75%的数据 (SAMPLE (75)) 在随机种子42中分割( SEED (42))。

  • 创建一个测试视图-区分整个数据集和训练视图

  • 数据储存在叫做iris_train_data和iris_test_data的视图中,猜猜看它们分别存什么。

    SELECT COUNT(*) FROM iris_train_data; >>> 111 SELECT COUNT(*) FROM iris_test_data; >>> 39

    模型训练

    模型训练最简单的方法是无须创建额外的设置表格,只执行单一过程的DBMS_DATA_MINING包。使用决策树算法来训练模型。方法如下:

    DECLARE      v_setlstDBMS_DATA_MINING.SETTING_LIST; BEGIN     v_setlst(‘PREP_AUTO’) := ‘ON’;     v_setlst(‘ALGO_NAME’) :=‘ALGO_DECISION_TREE’;       DBMS_DATA_MINING.CREATE_MODEL2(         ‘iris_clf_model’,         ‘CLASSIFICATION’,         ‘SELECT * FROM iris_train_data’,         v_setlst,         ‘iris_id’,         ‘species’     ); END; /

    CREATE_MODEL2过程接受多种参数。接着我们对进入的参数进行解释:

    • iris_clf_model — 只是模型名称,它可以是任何东西。

    • CLASSIFICATION — 正在进行的机器学习任务,因某种原因必须大写。

    • SELECT * FROM iris_train_data — 指定训练数据存储位置。

    • v_setlst — 模型的上述设置列表。

    • iris_id — 序列类型列的名称(每个值都是唯一的)。

    • species — 目标变量的名称(试图预测的东西)

    执行这一模块需要一到两秒钟,执行完毕就可以开始计算了!

    模型评价

    使用该脚本评估此模型:

    BEGIN     DBMS_DATA_MINING.APPLY(         ‘iris_clf_model’,          ‘iris_test_data’,          ‘iris_id’,          ‘iris_apply_result’     ); END; /

    它将iris_clf_model应用于不可见测试数据iris_test_data,并将评估结果存储到iris_apply_result表中。

    如何解决不能用Python执行机器学习问题

    行数更多(39×3),但突显了要点。这还不够直观,所以下面以一种稍微不同的方式来展示结果:

    DECLARE       CURSOR iris_ids IS           SELECT DISTINCT(iris_id) iris_id          FROM iris_apply_result           ORDER BY iris_id;      curr_y      VARCHAR2(16);      curr_yhat   VARCHAR2(16);      num_correct INTEGER := 0;      num_total   INTEGER := 0; BEGIN     FOR r_id IN iris_ids LOOP         BEGIN             EXECUTE IMMEDIATE                  ‘SELECT species FROM                  iris_test_data                  WHERE iris_id = ‘ ||r_id.iris_id                 INTO curr_y;             EXECUTE IMMEDIATE                  ‘SELECT prediction                  FROM iris_apply_result                  WHERE iris_id = ‘ ||r_id.iris_id ||                 ‘AND probability = (                    SELECTMAX(probability)                         FROMiris_apply_result                         WHERE iris_id = ‘|| r_id.iris_id ||                     ‘)’ INTO curr_yhat;         END;           num_total := num_total + 1;         IF curr_y = curr_yhat THEN              num_correct := num_correct +1;         END IF;      END LOOP;       DBMS_OUTPUT.PUT_LINE(‘Num. testcases: ‘          || num_total);     DBMS_OUTPUT.PUT_LINE(‘Num. correct :‘          || num_correct);     DBMS_OUTPUT.PUT_LINE(‘Accuracy : ‘          || ROUND((num_correct /num_total), 2)); END; /

    确实很多,但上述脚本不能再简化了。下面进行分解:

    • CURSOR—得到所有不同的iris_ids(因为iris_apply_results 表中有重复)。

    • curr_y, curr_yhat, num_correct, num_total  是存储每次迭代中的实际种类和预测种类、正确分类数量和测试项总数的变量。

    • 对于每个唯一的iris_id 得到实际种类(来自匹配ID的iris_test_data)和预测种类(在 iris_apply_results  表中预测概率最高)

    • 轻松检查实际值和预测值是否相同——这表明分类是正确的。

    • 变量 num_total 和 num_correct 在每次迭代中更新。

    • 最后,将模型性能打印到控制台。

    下面为该脚本输出:

    如何解决不能用Python执行机器学习问题 

    • 测试集有39个用例

    • 39个样本中,正确分类的有37个

    • 结果准确率为95%

    到此,关于“如何解决不能用Python执行机器学习问题”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

    内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/47493.html

    (0)

    相关推荐

    • MySQL中grant和revoke怎么用

      技术MySQL中grant和revoke怎么用这篇文章主要为大家展示了“MySQL中grant和revoke怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中g

      攻略 2021年10月29日
    • Python代码的使用方法

      技术Python代码的使用方法本篇内容介绍了“Python代码的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1

      攻略 2021年10月26日
    • 宋仁宗为什么无子,宋仁宗为什么一生没有儿子

      技术宋仁宗为什么无子,宋仁宗为什么一生没有儿子据史料记载,宋仁宗本来生育了有三个儿子,十五个女儿宋仁宗为什么无子。但是这十八个孩子只有四个女儿长大成人,其他都在出生后不久就死了,包括三个皇子。宋仁宗赵祯(1010年5月1

      生活 2021年10月19日
    • C#数据访问层的相关知识有哪些

      技术C#数据访问层的相关知识有哪些这篇文章给大家分享的是有关C#数据访问层的相关知识有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C#数据访问层1.查询数据库中的数据,返回一个datat

      攻略 2021年12月1日
    • zabbix如何配置grafana图形显示插件

      技术zabbix如何配置grafana图形显示插件这篇文章主要介绍了zabbix如何配置grafana图形显示插件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解

      攻略 2021年11月18日
    • 军人敬礼简笔画,敬礼的小学生怎么画,简笔画

      技术军人敬礼简笔画,敬礼的小学生怎么画,简笔画敬礼的小学生简笔画如下军人敬礼简笔画: 1、敬礼分为举手礼、注目礼、举枪礼和少先队礼等。行礼表示尊敬,用于书信结尾表示尊敬,对人恭敬,以礼相待。如《吕氏春秋·怀宠》:“求其孤

      生活 2021年10月31日