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

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

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

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

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

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

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

電子表格平臺(tái)

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

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

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

#p#

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

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

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

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

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

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

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

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

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

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

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

此處使用 keyToValueMappings 數(shù)組來(lái)確定在 Oracle 數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)挖掘模型所需的算法以及其他命名屬性。該類(lèi)的用途就是創(chuàng)建和維護(hù)數(shù)據(jù)挖掘模型。此外,OracleMiningModel 類(lèi)還定義了用于檢索以及將該模型應(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)

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

#p#

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

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

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

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

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

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

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

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

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

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

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

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

同樣,數(shù)據(jù)挖掘模型通過(guò)使用向?qū)Щ蜉斎牍絹?lái)創(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ù)庫(kù)中生成標(biāo)準(zhǔn)的 Oracle 數(shù)據(jù)挖掘模型。該模型可通過(guò)雙擊單元格 b7 進(jìn)行查看,模型的完整值如圖 3 所示。

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

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

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

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

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

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

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

結(jié)論

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

【編輯推薦】

  1. 將oracle 9i備份文件導(dǎo)入oracle 8i的方法簡(jiǎn)介
  2. 淺析Oracle監(jiān)聽(tīng)器安裝與配置
  3. Oracle數(shù)據(jù)庫(kù)編寫(xiě)有效事務(wù)指導(dǎo)方針
責(zé)任編輯:楊鵬飛 來(lái)源: 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ù)庫(kù)AWR

2011-05-19 13:25:14

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

2011-07-25 16:54:52

Oracle數(shù)據(jù)庫(kù)注冊(cè)監(jiān)聽(tīng)

2011-03-29 10:47:49

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

2009-05-13 10:28:30

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

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ù)庫(kù)

2009-07-03 09:44:30

Oracle Data

2010-04-14 15:14:11

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

2011-08-11 17:56:00

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

2011-08-19 16:20:14

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

2010-03-09 09:49:01

Oracle跨平臺(tái)遷移

2009-10-29 15:56:12

Oracle用戶(hù)權(quán)限視

2009-10-22 17:17:54

Oracle給用戶(hù)解鎖

2009-10-26 14:37:03

Oracle如何解鎖用

2009-04-01 11:17:52

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

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

主站蜘蛛池模板: 亚洲国产一区二区在线 | 亚洲黄色国产 | 成年人的视频免费观看 | 国产精品久久久久久久久久 | h片免费看| 日本特黄a级高清免费大片 国产精品久久性 | 天天干视频 | 91福利在线观看 | 成人亚洲在线 | 亚洲精品一二区 | 国产在线一区二 | 日韩中文字幕区 | 国产一级淫片免费视频 | 亚洲成人福利在线观看 | 国产一极毛片 | 国产欧美日韩综合精品一区二区 | 一区二区三区四区视频 | 亚洲国产精品久久久 | 精品一二三区在线观看 | 国产日韩精品一区二区三区 | 欧美日韩理论 | 欧美精品一区二区三区在线 | 欧美一区二区三区国产 | 欧美日韩国产传媒 | 久久久精品一区二区三区 | 欧美久久一区二区 | 91精品久久久久久久久久 | 天天操夜夜拍 | 午夜电影一区 | 日本成人三级电影 | 在线观看视频一区二区三区 | 日本免费一区二区三区四区 | 久久久不卡网国产精品一区 | 精品免费在线 | 一区二区三区视频在线观看 | 久久国产精品-国产精品 | 成人午夜视频在线观看 | 国产日韩欧美在线观看 | 亚洲人成人一区二区在线观看 | 久久香蕉网| 亚洲国产欧美日韩 |