成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如果不能用Python執行機器學習,那該用什么呢?

開發 后端
長期學習數據科學的人一定知道如何用Python、R和Julia這些語言執行機器學習任務。然而,如果速度很關鍵,但硬件很有限,或者所在公司僅使用SQL進行預測分析,又該怎么辦呢?答案就是——數據庫內的機器學習。

 本文轉載自公眾號“讀芯術”(ID:AI_Discovery)

長期學習數據科學的人一定知道如何用Python、R和Julia這些語言執行機器學習任務。然而,如果速度很關鍵,但硬件很有限,或者所在公司僅使用SQL進行預測分析,又該怎么辦呢?答案就是——數據庫內的機器學習。

[[350860]]

本文使用的是Oracle Cloud。它是免費的,你可以注冊并創建一個OLTP數據庫 (19c版本,有0.2TB的存儲空間)。完成之后,下載云錢包并通過SQL Developer或任何其他工具建立連接。這個過程至少要花費10分鐘,但操作很簡單,所以這里不多做贅述。

下面將使用Oracle機器學習(OML)在著名的Iris數據集中訓練一個分類模型。選擇它是因為無須任何準備,只需要創建表格并插入數據。 

數據準備

如前所述,要創建一個表格來保存Iris數據集,然后將數據加載到其中。OML要求使用一個列作為行ID(序列),因此要記?。?nbsp;

  1. CREATE SEQUENCE seq_iris; 
  2. CREATE TABLE iris_data( 
  3.     iris_id      NUMBER DEFAULT seq_iris.NEXTVAL, 
  4.     sepal_length NUMBER, 
  5.     sepal_width  NUMBER, 
  6.     petal_length NUMBER, 
  7.     petal_width  NUMBER, 
  8.     species      VARCHAR2(16) 
  9. ); 

現在可以下載數據并進行加載了: 

如果不能用Python執行機器學習,那該用什么呢?

當一個模態窗口彈出時,只需提供下載CSV的路徑并多次點擊Next。SQL開發員無需幫助也能正確完成工作。 

如果不能用Python執行機器學習,那該用什么呢?

模型訓練

現在可以動手做一些有趣的事情了。訓練分類模型可以分解為多個步驟,例如訓練/測試分割、模型訓練和模型評估,我們從最簡單的開始。

訓練/測試分割

Oracle常用兩個視圖完成該步驟:一個用于訓練數據,一個用于測試數據。可以輕松創建這些神奇PL/SQL: 

  1. BEGIN 
  2.     EXECUTE IMMEDIATE  
  3.         ‘CREATE OR REPLACE VIEW  
  4.         iris_train_data AS  
  5.         SELECT * FROM iris_data  
  6.         SAMPLE (75) SEED (42)’; 
  7.     EXECUTE IMMEDIATE  
  8.         ‘CREATE OR REPLACE VIEW  
  9.         iris_test_data AS  
  10.         SELECT * FROM iris_data  
  11.         MINUS  
  12.         SELECT * FROM iris_train_data’; 
  13. END

該腳本完成下列兩件事:

  • 創建一個訓練視圖-75%的數據 (SAMPLE (75)) 在隨機種子42中分割( SEED (42))。
  • 創建一個測試視圖-區分整個數據集和訓練視圖

數據儲存在叫做iris_train_data和iris_test_data的視圖中,猜猜看它們分別存什么。 

  1. SELECT COUNT(*) FROM iris_train_data; 
  2. >>> 111 
  3. SELECT COUNT(*) FROM iris_test_data; 
  4. >>> 39 

模型訓練

模型訓練最簡單的方法是無須創建額外的設置表格,只執行單一過程的DBMS_DATA_MINING包。使用決策樹算法來訓練模型。方法如下: 

  1. DECLARE  
  2.     v_setlstDBMS_DATA_MINING.SETTING_LIST; 
  3. BEGIN 
  4.     v_setlst(‘PREP_AUTO’) := ‘ON’; 
  5.     v_setlst(‘ALGO_NAME’) :=‘ALGO_DECISION_TREE’; 
  6.   
  7.     DBMS_DATA_MINING.CREATE_MODEL2( 
  8.         ‘iris_clf_model’, 
  9.         ‘CLASSIFICATION’, 
  10.         ‘SELECT * FROM iris_train_data’, 
  11.         v_setlst, 
  12.         ‘iris_id’, 
  13.         ‘species’ 
  14.     ); 
  15. END

CREATE_MODEL2過程接受多種參數。接著我們對進入的參數進行解釋:

  • iris_clf_model — 只是模型名稱,它可以是任何東西。
  • CLASSIFICATION — 正在進行的機器學習任務,因某種原因必須大寫。
  • SELECT * FROM iris_train_data — 指定訓練數據存儲位置。
  • v_setlst — 模型的上述設置列表。
  • iris_id — 序列類型列的名稱(每個值都是唯一的)。
  • species — 目標變量的名稱(試圖預測的東西)

執行這一模塊需要一到兩秒鐘,執行完畢就可以開始計算了! 

模型評價

使用該腳本評估此模型: 

  1. BEGIN 
  2.     DBMS_DATA_MINING.APPLY( 
  3.         ‘iris_clf_model’,  
  4.         ‘iris_test_data’,  
  5.         ‘iris_id’,  
  6.         ‘iris_apply_result’ 
  7.     ); 
  8. END

它將iris_clf_model應用于不可見測試數據iris_test_data,并將評估結果存儲到iris_apply_result表中。 

行數更多(39×3),但突顯了要點。這還不夠直觀,所以下面以一種稍微不同的方式來展示結果: 

  1. DECLARE  
  2.      CURSOR iris_ids IS  
  3.          SELECT DISTINCT(iris_id) iris_id 
  4.          FROM iris_apply_result  
  5.          ORDER BY iris_id; 
  6.      curr_y      VARCHAR2(16); 
  7.      curr_yhat   VARCHAR2(16); 
  8.      num_correct INTEGER := 0; 
  9.      num_total   INTEGER := 0; 
  10. BEGIN 
  11.     FOR r_id IN iris_ids LOOP 
  12.         BEGIN 
  13.             EXECUTE IMMEDIATE  
  14.                 ‘SELECT species FROM  
  15.                 iris_test_data  
  16.                 WHERE iris_id = ‘ ||r_id.iris_id 
  17.                 INTO curr_y; 
  18.             EXECUTE IMMEDIATE  
  19.                 ‘SELECT prediction  
  20.                 FROM iris_apply_result  
  21.                 WHERE iris_id = ‘ ||r_id.iris_id ||  
  22.                ‘AND probability = ( 
  23.                    SELECTMAX(probability)  
  24.                        FROMiris_apply_result  
  25.                        WHERE iris_id = ‘|| r_id.iris_id ||  
  26.                    ‘)’ INTO curr_yhat; 
  27.         END
  28.   
  29.         num_total := num_total + 1; 
  30.         IF curr_y = curr_yhat THEN  
  31.             num_correct := num_correct +1; 
  32.         END IF;  
  33.     END LOOP; 
  34.   
  35.     DBMS_OUTPUT.PUT_LINE(‘Num. testcases: ‘  
  36.         || num_total); 
  37.     DBMS_OUTPUT.PUT_LINE(‘Num. correct :‘  
  38.         || num_correct); 
  39.     DBMS_OUTPUT.PUT_LINE(‘Accuracy : ‘  
  40.         || ROUND((num_correct /num_total), 2)); 
  41. 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,現在,你又掌握了一種解決機器學習任務的方法。

 

 

責任編輯:華軒 來源: 讀芯術
相關推薦

2018-06-04 15:17:10

編程語言中文編程

2020-05-12 11:25:50

MySQLES數據庫

2022-11-14 08:12:34

2017-06-12 16:58:30

2023-05-04 12:43:26

機器學習算法

2019-03-22 11:24:01

GitHub 技術開發

2020-07-22 11:45:28

云計算云服務技術

2023-09-14 13:23:42

Llama-2模型參數

2009-03-25 16:39:45

LinuxIBMSun

2009-03-25 08:57:15

IBMSun收購

2017-05-15 09:55:07

2021-04-26 13:22:55

人工智能機器學習

2021-04-08 10:01:48

Java機器學習深度學習

2024-12-20 09:12:00

Vue項目Pinia

2018-07-10 16:05:05

2021-10-03 15:10:54

reduxsagaresolve

2022-04-17 09:56:41

cookiesame-party

2021-03-09 19:42:27

機器學習治理機器學習

2022-05-06 08:00:00

APIBallerina編程語言

2024-08-05 01:22:16

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色网一级片 | 亚洲一区综合 | www.青青草| 日韩国产一区二区三区 | 美国黄色毛片 | 国产精品1区2区 | 亚洲一区 中文字幕 | h视频免费在线观看 | 99视频入口 | 欧美成人a| 日韩欧美一区二区三区四区 | 日韩欧美国产一区二区三区 | 精品在线视频播放 | 精品综合在线 | 久久国产亚洲精品 | 超碰最新在线 | 午夜视频免费在线观看 | 嫩草研究影院 | 精品一区二区三区不卡 | 亚洲资源在线 | 欧美mv日韩mv国产网站91进入 | 久久麻豆精品 | 国产在线精品一区二区三区 | 中文字幕免费 | www.久久国产精品 | 精品国产欧美在线 | 欧美久久影院 | 激情网站在线观看 | 国产精品日韩欧美一区二区三区 | 国产精品视屏 | 国产一区二区三区免费观看视频 | 亚洲国产精品视频 | 日韩在线不卡 | 欧美日韩在线一区二区三区 | 在线免费观看亚洲 | av免费网 | 国产精品极品美女在线观看免费 | 欧美成人一区二区三区 | 在线日韩 | 一区二区三区亚洲 | 欧美8一10sex性hd |