偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用Oracle數(shù)據(jù)挖掘API方法詳解

數(shù)據(jù)庫 Oracle
本文將介紹如何快速將分析和其他 API 整合至一個(gè)最終用戶可從其中輕松訪問新代碼的電子表格平臺。作為指導(dǎo)性示例,其中還將闡釋了如何將Oracle 數(shù)據(jù)挖掘(PL/SQL) API 重新打包為 Java API,以及如何從電子表格調(diào)用的J Cells 訪問該 API。

Oracle 發(fā)布了 PL/SQL 和 Java 應(yīng)用編程接口 (API) 后,市場上才會推出可利用這一新發(fā)布的 API 的點(diǎn)擊工具或構(gòu)建器,這一般是***的做法。利用這一實(shí)踐,開發(fā)人員可將新功能即刻融入其應(yīng)用程序中以使其企業(yè)從中獲益。

然而,開發(fā)可利用新發(fā)布 API 的專門工具需要投入大量精力。因此,理想情況下,從 API 發(fā)布直至推出利用該 API 的直觀最終用戶工具,至少需要數(shù)個(gè)月,而實(shí)際上,這一滯后時(shí)間通常為一年或兩年。同時(shí),利用 API 可能需要企業(yè)使用自己的工具,或更為常見的是利用即席解決方案,例如在報(bào)表生成器和電子表格中嵌入對 API 的調(diào)用。

一種常用方法是將 API 包裝在數(shù)個(gè)腳本中,然后使用自定義按鈕和菜單從電子表格訪問這些腳本。但是,這一方法的主要缺點(diǎn)在于如今的電子表格是將單個(gè)單元格中的文本和數(shù)字作為值來進(jìn)行處理的,因此它通常不是處理新功能的合適工具。

本文將介紹如何快速將分析和其他 API 整合至一個(gè)最終用戶可從其中輕松訪問新代碼的電子表格平臺。作為指導(dǎo)性示例,其中還將闡釋了如何將Oracle 數(shù)據(jù)挖掘(PL/SQL) API 重新打包為 Java API,以及如何從電子表格調(diào)用的 J Cells 訪問該 API。J Cells 完全以 Oracle JDeveloper 編寫。它不僅可以將文本和數(shù)字作為單元格的值,而且還可將 Java 對象作為值進(jìn)行處理,并可從其單元格直接訪問任何 Java API,以即刻進(jìn)行部署。

電子表格平臺

我使用的是電子表格界面,只是其中允許用戶在單元格中創(chuàng)建任何 Java 對象以及使用基元 Java 類型。每個(gè)單元格都可用作另一個(gè)單元格的變量,用戶可以選擇在單元格中直接編寫 Java 代碼,或使用其他格式。將電子表格界面和對象(而不僅是常規(guī)電子表格中的數(shù)字和文本)使用相結(jié)合是自動(dòng)進(jìn)行的:J Cells 為每個(gè)適合單元格的對象計(jì)算指示值,這一指示值給予用戶有關(guān)顯示對象的充足線索。此外,還會實(shí)施一個(gè)完整的值系統(tǒng),可根據(jù)需要(例如,當(dāng)用戶雙擊給定單元格時(shí))以各種其他格式顯示對象。即使在電子表格中,因?yàn)楣娇赡芏x比較復(fù)雜,所以系統(tǒng)還需識別要?jiǎng)?chuàng)建的對象是否具有相關(guān)的向?qū)АO驅(qū)ǔJ且粋€(gè)特定于某個(gè)對象類型的圖形化代碼生成器。稍后本文示例將說明如何在 J Cells 中使用向?qū)А?/P>

圖 1 顯示了本文示例的電子表格界面。

 
圖 1:J Cells 的電子表格界面

#p#

數(shù)據(jù)挖掘 API

Oracle 支持兩種兼容的 API 以訪問數(shù)據(jù)庫中的數(shù)據(jù)挖掘功能。***種是 PL/SQL API,其中包括 DBMS_DATA_MINING 程序包,另一種也是 Java API,稱為 Oracle 數(shù)據(jù)挖掘 Java API。因?yàn)?J Cells 目前最適合訪問 Java API,所以需要以可直接從 Java 對其進(jìn)行訪問的方式打包 PL/SQL API。兩個(gè)主要的 Oracle 數(shù)據(jù)挖掘概念是設(shè)置和模型。設(shè)置概念基本圍繞帶有兩列(setting_name 和 setting_value)的設(shè)置表構(gòu)建;其中 setting_name 是挖掘算法使用的屬性名,而 setting_value 是與該屬性相對應(yīng)的值。

DBMS_DATA_MINING 程序包包含若干過程,包括 CREATE_MODEL 和 APPLY。CREATE_MODEL 過程根據(jù)設(shè)置表(作為過程的參數(shù)之一提供)中的值為給定挖掘函數(shù)和數(shù)據(jù)集創(chuàng)建挖掘模型。該過程簡單且易于使用。實(shí)際上,由用戶來為要?jiǎng)?chuàng)建的模型、要使用的挖掘函數(shù)、包含要使用的數(shù)據(jù)的表、要建模的列以及設(shè)置表提供名稱。這一方法的優(yōu)點(diǎn)在于所有不同算法都可以類似的方法調(diào)用。每種算法的微調(diào)都整合至設(shè)置表中,但在很多情況下,各種設(shè)置系數(shù)可由算法本身自動(dòng)決定。設(shè)置表中條目的復(fù)雜性根據(jù)用戶的專業(yè)技術(shù)背景和算法而有所不同。許多專業(yè)用戶可能希望手動(dòng)設(shè)置所有可能的系數(shù),而我們中的多數(shù)人更可能樂意系統(tǒng)自動(dòng)給出適用設(shè)置。Oracle 提供了一個(gè)要用作設(shè)置鍵的常量列表,以及命名為常量或數(shù)字間隔的值。

表 1:algo_name(算法名)設(shè)置鍵的值

Oracle 的算法名 (algo_name) 鍵的常量值如上所示。對于其中的每一個(gè)值,使用了可能鍵和值的不同集等。以下(圖 2)顯示了向?qū)Ш瘮?shù)是如何將這些鍵映射到樹結(jié)構(gòu),并允許用戶通過操縱該設(shè)置樹定義設(shè)置表的。

作為 Oracle 數(shù)據(jù)庫中創(chuàng)建的挖掘模型,DBMS_DATA_MINING.APPLY 過程用于將該模型應(yīng)用到新數(shù)據(jù)集。而且,這是一個(gè)易于使用的過程,要求只輸入挖掘模型名、包含新數(shù)據(jù)集的表名、用于識別新數(shù)據(jù)集中行的列以及結(jié)果數(shù)據(jù)集名。Java 類 OracleMiningModel (below) 在調(diào)用預(yù)測、評分或 apply 方法時(shí),都會利用該 APPLY 過程。此外,DBMS_DATA_MINING 程序包包含若干根據(jù)類型將各個(gè)模型詳細(xì)信息作為結(jié)果集或以 XML 格式返回的函數(shù)。這些細(xì)節(jié)函數(shù)也可通過使用 OracleMiningModel 類的實(shí)例(代表數(shù)據(jù)庫中的不同模型)進(jìn)行訪問。

此處可通過創(chuàng)建一個(gè)稱為 OracleModelSettings 的 Java 類以 Java 打包 (PL/SQL) 設(shè)置概念,該類具有靈活的構(gòu)造函數(shù)和各種簽名,包括

public OracleModelSettings ( String modelSettingsName,
    Connection databaseConnection, 
    String[] keyToValueStringMap) 
  throws SQLException

keyToValueStringMap 只是表單“ -> ”的字符串?dāng)?shù)組。該數(shù)組詳細(xì)說明了設(shè)置表的行,以及負(fù)責(zé)在數(shù)據(jù)庫中維護(hù)設(shè)置表的類。

類似地,此處也可通過創(chuàng)建一個(gè)稱為 OracleMiningModel 的 Java 類以 Java 打包模型概念,該類具有構(gòu)造函數(shù)和各種簽名,包括

public OracleMiningModel ( String modelName,
   OracleModelSettings oms,
   String[] keyToValueStringMap) 
   boolean recreate)
  throws SQLException

此處使用 keyToValueMappings 數(shù)組來確定在 Oracle 數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)挖掘模型所需的算法以及其他命名屬性。該類的用途就是創(chuàng)建和維護(hù)數(shù)據(jù)挖掘模型。此外,OracleMiningModel 類還定義了用于檢索以及將該模型應(yīng)用到新數(shù)據(jù)集的方法。這些方法包括以下各項(xiàng),此處只顯示了一小部分。

public OracleResultSet infoAprioriAssociationRules(int topn)
public OracleResultSet infoAprioriFrequentItemsets(int topn)
public OracleResultSet infoAdaptiveBayesNetwork()
public OracleResultSet infoAIMinimumDescLength()
public OracleResultSet infoKMeans()
public OracleResultSet infoNaiveBayes()
public OracleResultSet infoNonnegativeMatrixFactorization()
public OracleResultSet infoOCluster()
public OracleResultSet infoSupportVectorMachines()
public XMLType infoDecisionTree()
public Object getPrediction(String[] signature, double[] doubleVal)
public HashMap score(String[] signature, double[] doubleVal)
public OracleResultSet apply( String dataTable, 
    String caseID, 
    String resultTable, 
    String schema, 
    boolean overwrite)

除了具有上述簽名外,所有的方法可能都會引發(fā) SQL 意外。一旦可以從兩個(gè)簡單類來管理數(shù)據(jù)挖掘功能后,就可調(diào)用該電子表格平臺來訪問任何可用的數(shù)據(jù)挖掘算法,以在 Oracle 數(shù)據(jù)庫中建模數(shù)據(jù)集。

#p#

數(shù)據(jù)挖掘示例

因此,來看一個(gè)在該系統(tǒng)中編寫的小數(shù)據(jù)挖掘模型,該模型可通過訪問 Oracle 數(shù)據(jù)庫創(chuàng)建并運(yùn)行 ODM (Oracle Data Mining) 回歸模型。該回歸模型的用途是根據(jù)輸入(例如血壓、高度和體重)預(yù)測心率。使用 J Cells 可直接訪問 Java API 以實(shí)例化對象并在對象上調(diào)用方法。首先,連接至 Oracle 數(shù)據(jù)庫。DataSource 對象可通過將以下公式

() = ~ OracleDataSource("agust","agust","dbVaio","vaioFS");

輸入到電子表格的單元格 b3 中進(jìn)行實(shí)例化。Tilde 符號 (~) 表示縮寫符號,允許 J Cells 將(右側(cè))語句轉(zhuǎn)換為構(gòu)造函數(shù)t“new cell.OracleDataSource( "agust", "agust", "dbVaio", "vaioFS");”,使系統(tǒng)能夠以用戶“agust”的身份訪問服務(wù)器“vaioFS”上的數(shù)據(jù)庫“dbVaio”。

現(xiàn)在,可通過在 DataSource 對象上調(diào)用正確的方法(例如在單元格 b4 和 b5 中分別輸入以下公式),獲得數(shù)據(jù)庫連接以及檢查數(shù)據(jù)庫中的源數(shù)據(jù):

(*) = b3.getConnection(); 
  (*) = b3.query("select * from pulse_clinical");

***個(gè)語句將向單元格 b4 中返回一個(gè) java.sql.Connection 對象,第二個(gè)語句將向單元格 b5 中返回一個(gè) java.sql.ResultSet 對象。只需通過雙擊單元格 (b5) 就可檢查結(jié)果集,該操作會將結(jié)果表顯示在表格框架中以便查看。

迄今為止,我只在該電子表格中創(chuàng)建了幾個(gè)簡單的數(shù)據(jù)對象。現(xiàn)在,可以調(diào)用數(shù)據(jù)挖掘 API 來定義一個(gè)設(shè)置對象,然后創(chuàng)建一個(gè)簡單的數(shù)據(jù)挖掘模型。首先,通過在單元格 b6 中輸入以下語句來創(chuàng)建一個(gè)設(shè)置對象:

(*) = new cell.odm.OracleModelSettings("xyz_settings", b4,
  new String[]{
   "algo_name -> algo_support_vector_machines",
   "svms_kernel_function -> svms_linear"} );

立刻我發(fā)現(xiàn)該公式中的問題是最終用戶友好的,因此,注冊一個(gè)帶有 J Cells 的向?qū)?,在提示用戶后自?dòng)生成該公式,可能是個(gè)不錯(cuò)的辦法。一般,電子表格在用戶創(chuàng)建復(fù)雜公式時(shí)都會給予幫助,因此用戶可以期望在實(shí)例化對象時(shí)獲得指導(dǎo)。

部署的向?qū)鐖D 2 所示。

 
圖 2:典型的向?qū)Ы缑?/SPAN>

同樣,數(shù)據(jù)挖掘模型通過使用向?qū)Щ蜉斎牍絹韯?chuàng)建,在這兩種情況中,結(jié)果模型都是在直接指定 API 調(diào)用的單元格 b7 中進(jìn)行實(shí)例化:

(*)= new cell.odm.OracleMiningModel("xyz_model", b6,
new String[]{
"data_table_name -> pulse_clinical",
"mining_function -> regression",
"target_column_name -> pulse",
"case_id_column_name -> subject"},
false );

使用該公式結(jié)果實(shí)例化數(shù)據(jù)挖掘模型將在 Oracle 數(shù)據(jù)庫中生成標(biāo)準(zhǔn)的 Oracle 數(shù)據(jù)挖掘模型。該模型可通過雙擊單元格 b7 進(jìn)行查看,模型的完整值如圖 3 所示。

 
圖 3:查看單元格 b7 中的模型

使用上述的 OracleMiningModel 方法,可將該模型應(yīng)用到 Oracle 數(shù)據(jù)庫中的數(shù)據(jù)集。作為一個(gè)簡單的交互式評分模型(一般適用于電子表格應(yīng)用程序),用戶可能希望輸入血壓、高度和體重值,讓數(shù)據(jù)庫使用剛才定義的模型預(yù)測心率。這個(gè)在模型對象上定義的 Java API 方法 getPrediction 非常適合這一用途。在單元格 e4、e5、e6 以及 e7 中(以單元格 b8 中簽名數(shù)組指定的順序)鍵入輸入值后,通過輸入以下公式可進(jìn)行評分:

(*) = b7.getPrediction(b8,new double[]{e4,e5,e6,e7});

同樣,該公式將直接訪問 Java API 以獲取并在單元格 e9 中顯示評分結(jié)果,如圖 4 所示。

 
圖 4:將模型應(yīng)用到輸入值

電子表格優(yōu)點(diǎn)

電子表格在最終用戶之間的流行多少有些令人費(fèi)解。一方面,當(dāng)今最常用的電子表格系統(tǒng)長期以來令許多開發(fā)人員氣餒,他們習(xí)慣于更為靈活、強(qiáng)大的系統(tǒng)。而另一方面,對于非開發(fā)人員而言,使用電子表格系統(tǒng)具有以下一些明顯優(yōu)點(diǎn):無須構(gòu)建圖形化用戶界面、單獨(dú)構(gòu)建和測試每個(gè)公式(代碼)以及隱藏公式,看到的是更為簡單的計(jì)算結(jié)果。這些優(yōu)點(diǎn)只存在于當(dāng)今流行的電子表格中,使用公式可將數(shù)字或文本返回到單元格,而許多系統(tǒng)主要受限于此。此處演示了如何移除這一限制并創(chuàng)建更為強(qiáng)大的工具。然后用它來直接訪問 Oracle 的數(shù)據(jù)挖掘模型功能以及其他 API。

結(jié)論

通過利用更為強(qiáng)大的電子表格,可以顯著縮短向最終用戶引入新技術(shù)版本(例如由發(fā)布的 Java API 和 PL/SQL API)的時(shí)間。事實(shí)上,使用此處的方法,直接將原始 Java API 交給非編程人員,以立即整合至決策制定流程或進(jìn)行預(yù)測和分析是切實(shí)可行的。

【編輯推薦】

  1. 將oracle 9i備份文件導(dǎo)入oracle 8i的方法簡介
  2. 淺析Oracle監(jiān)聽器安裝與配置
  3. Oracle數(shù)據(jù)庫編寫有效事務(wù)指導(dǎo)方針
責(zé)任編輯:楊鵬飛 來源: blog
相關(guān)推薦

2011-08-23 18:04:16

Oracle 10g數(shù)據(jù)泵

2011-08-16 13:17:29

2011-08-11 16:55:34

Oracle數(shù)據(jù)庫AWR

2011-05-19 13:25:14

Oracle數(shù)據(jù)庫

2011-07-25 16:54:52

Oracle數(shù)據(jù)庫注冊監(jiān)聽

2011-03-29 10:47:49

ORACLE數(shù)據(jù)庫

2009-05-13 10:28:30

OracleDUAL數(shù)據(jù)庫

2009-12-21 10:10:25

Oracle產(chǎn)品

2017-04-13 08:46:41

oracle數(shù)據(jù)挖掘

2017-10-31 11:55:46

sklearn數(shù)據(jù)挖掘自動(dòng)化

2010-04-02 13:59:08

Oracle數(shù)據(jù)庫

2009-07-03 09:44:30

Oracle Data

2010-04-14 15:14:11

Oracle數(shù)據(jù)庫

2011-08-11 17:56:00

Oracle數(shù)據(jù)庫decodesign

2011-08-19 16:20:14

Oracle數(shù)據(jù)庫查看工具LogMine

2010-03-09 09:49:01

Oracle跨平臺遷移

2009-10-29 15:56:12

Oracle用戶權(quán)限視

2009-10-22 17:17:54

Oracle給用戶解鎖

2009-10-26 14:37:03

Oracle如何解鎖用

2009-04-01 11:17:52

內(nèi)存分配調(diào)優(yōu)Oracle
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號