然而,開發可以使用新發布的API的特殊工具需要花費大量精力,因此理想情況下,從發布API到推出使用該API的直觀最終用戶工具至少需要幾個月的時間。事實上,這種滯後時間通常是壹兩年。同時,使用API可能需要企業使用他們自己的工具,或者更常見的是,使用特別的解決方案,比如在報告生成器和電子表格中嵌入對API的調用。
壹種常見的方法是將API封裝在幾個腳本中,然後使用自定義按鈕和菜單從電子表格中訪問這些腳本。然而,這種方法的主要缺點是,今天的電子表格將單個單元格中的文本和數字視為值,因此它通常不是處理新功能的合適工具。
本文將介紹如何將分析和其他API快速集成到電子表格平臺中,最終用戶可以從該平臺輕松訪問新代碼,作為指導示例。它還將解釋如何使用Oracle數據挖掘(PL/SQL)。API重新打包成Java API以及如何從電子表格JCells調用的J Cells中訪問它,完全是用Oracle JDeveloper編寫的。它不僅可以將文本和數字視為單元格值,還可以將Java對象視為值,並且可以從其單元格中直接訪問任何Java API,以便立即部署。
電子表格平臺
我使用電子表格接口,但它允許用戶在壹個單元格中創建任何Java對象,並使用基本的Java類型。每個單元格都可以用作另壹個單元格的變量。用戶可以選擇直接在單元格中編寫Java代碼,或者使用其他格式來放置電子表格界面和對象(不僅僅是常規電子表格中的數字和文本)。使用J個單元格,組合是自動的,並且為適合該單元格的每個對象計算指示值。這個指示值為用戶提供了關於顯示對象的足夠線索,並且可以根據需要實現壹個完整的值系統(例如,當用戶雙擊壹個給定的單元格時)。以各種其他格式顯示對象,甚至在電子表格中,因為公式可能定義復雜,所以系統仍然需要識別要創建的對象是否具有相關向導。向導通常是特定於對象類型的圖形代碼生成器。稍後,這個示例將解釋如何在J單元格中使用向導。
圖顯示了這個例子的電子表格界面。
圖J單元格電子表格界面
數據挖掘API
Oracle支持兩種兼容的API來訪問數據庫中的數據挖掘功能。第壹個是PL/ SQL API,包含DBMS_DATA_MINING包,也是壹個Java API,叫做Oracle data mining Java API。因為J Cells是目前最適合訪問Java API的,所以需要封裝PL/SQL API的兩個主要Oracle數據挖掘概念是設置和模型設置,基本都是圍繞壹個設置表來構建的,設置表有兩列(setting_name和setting_value)。其中,設置名稱是挖掘算法使用的屬性名稱,設置值是對應於該屬性的值。
DBMS_DATA_MINING包包含幾個過程,包括CREATE_MODEL和APPLY CREATE_MODEL。根據表格(作為程序參數之壹提供)設置程序。為給定的挖掘函數和數據集創建挖掘模型的過程簡單易用。事實上,由用戶來為要創建的挖掘函數、包含要使用的數據的表、要建模的列和設置表提供名稱。這種方法的優點是所有不同的算法都可以用類似的方式調用,每個算法的微調都集成在整定表中,但很多情況下,各種整定系數都可以由算法自己自動確定。設置表中項目的復雜程度因用戶的專業技術背景和算法而異。許多專業用戶可能希望手動設置所有可能的系數,而我們大多數人更可能願意自動給出適用的設置。Oracle提供了壹個常量列表,用於設置名為常量或數字區間的鍵和值。
表algo_name(算法名)設置鍵值。
Oracle的算法名(algo_name)的鍵的常數值如上圖所示,每個可能的鍵和值使用不同的集合。下圖顯示了向導功能如何將這些鍵映射到樹結構,並允許用戶通過操作設置樹來定義設置表。
DBMS_DATA_MINING應用過程作為Oracle數據庫中創建的挖掘模型,用於將模型應用到新的數據集,是壹個簡單易用的過程。它只需要輸入挖掘模型名、包含新數據集的表名、用於標識新數據集中的行的列以及生成的數據集名,即Java類OracleMiningModel(如下)。此外,DBMS_DATA_MINING包包含幾個函數,這些函數根據類型以結果集或XML格式返回每個模型的詳細信息。這些詳細的功能也可以通過使用OracleMiningModel類的實例(代表數據庫中的不同模型)來訪問。
在這裏,您可以通過創建壹個名為OracleModelSettings的Java類來設置Java打包(PL/SQL)中的概念,該類具有靈活的構造函數和各種簽名,包括
公共OracleModelSettings(字符串modelSettingsName
連接數據庫連接
String[] keyToValueStringMap)
引發SQLException
KeyToValueStringMap只是壹個表單>這個數組詳細描述了設置表的行和負責維護數據庫中設置表的類。
類似地,您也可以通過創建壹個名為OracleMiningModel的Java類,將模型概念用Java打包,該類具有構造函數和各種簽名,包括
公共OracleMiningModel(字符串modelName
Oracle模型設置oms
String[] keyToValueStringMap)
布爾重建)
引發SQLException
這裏,keyToValueMappings數組用於確定在Oracle數據庫中創建數據挖掘模型所需的算法和其他命名屬性。該類的目的是創建和維護數據挖掘模型。此外,OracleMiningModel類還定義了用於檢索模型並將模型應用於新數據集的方法。這些方法包括以下幾種,這裏只展示壹小部分。
公共OracleResultSet info apriori association rules(int topn)
公共OracleResultSet infoapriariofrequentitemsets(int topn)
公共OracleResultSet infoAdaptiveBayesNeork()
public OracleResultSet infoAIMinimumDescLength()
公共OracleResultSet infoKMeans()
公共OracleResultSet infoNaiveBayes()
public OracleResultSet infononnegativematrix factorization()
公共OracleResultSet infoOCluster()
公共OracleResultSet infoSupportVectorMachines()
public XMLType infoDecisionTree()
公共對象get prediction(String[]signature double[]double val)
公共散列表分數(String[]signature double[]double val)
公共OracleResultSet應用(字符串數據表
字符串caseID
字符串結果表
字符串模式
布爾覆蓋)
除了上述簽名之外的所有方法都可能導致SQL意外。壹旦可以從兩個簡單的類中管理數據挖掘功能,就可以調用電子表格平臺來訪問任何可用的數據挖掘算法,以對Oracle數據庫中的數據集進行建模。
數據挖掘示例
那麽我們來看壹個在這個系統中編寫的小型數據挖掘模型。該模型可以通過訪問Oracle數據庫來創建和運行ODM (Oracle數據挖掘)回歸模型。這個回歸模型的目的是根據輸入(如血壓身高體重)來預測心率。使用J Cells,可以直接訪問Java API來實例化對象並調用對象上的方法。首先,您可以通過以下公式連接到Oracle數據庫DataSource對象。
()= ~ Oracle data source(agust agust db vaio va iofs);
在電子表格B單元格中輸入的用於實例化的波浪號(~)表示縮寫符號允許J單元格將(右)語句轉換為構造函數T New Cell Oracle data source(AgustAgustDB Vaio Vaio FS);使系統能夠以用戶agust的身份訪問服務器vaioFS上的數據庫dbVaio。
現在,您可以通過調用DataSource對象上的正確方法(例如,分別在單元格B and B中輸入以下公式)來獲得數據庫連接並檢查數據庫中的源數據。
(*)= b getConnection();
(*) = b查詢(select * from pulse _ clinical
第壹條語句將向單元格B返回壹個java sql連接對象。第二條語句將向單元格B返回壹個java sql ResultSet對象。您可以通過雙擊單元格(B)來檢查結果集。該操作將在表格框架中顯示結果表格以供查看。
到目前為止,我只在這個電子表格中創建了幾個簡單的數據對象。現在我可以調用數據挖掘API來定義壹個設置對象,然後創建壹個簡單的數據挖掘模型。首先,我通過在單元格b中輸入以下語句來創建壹個設置對象。
(*) =新單元ODM Oracle model settings(XYZ _ settings b
新字符串[]{
算法名稱& gt算法支持向量機
支持向量機內核函數& gtSVMs _ linear });
?馬上發現公式中的問題是用戶友好的,所以註冊壹個J單元格的向導,在提示用戶後自動生成公式,可能是個不錯的主意。通常,電子表格將在創建復雜公式時幫助用戶,因此用戶可以在實例化對象時獲得壹個向導來指導部署,如圖所示。
圖典型向導界面
同樣,數據挖掘模型是通過使用向導或輸入公式來創建的。在這兩種情況下,結果模型在直接指定API調用的單元格B中被實例化。
(*)=新單元ODM OracleMiningModel(XYZ _ model b
新字符串[]{
data _ table _ name & gt脈搏_臨床
挖掘功能& gt回歸
目標列名& gt脈搏
案例標識列名& gt主題}
假);
使用此公式的結果實例化數據挖掘模型將在Oracle數據庫中生成標準的Oracle數據挖掘模型。雙擊單元格B可以查看該模型,如圖所示。
圖查看單元格b中的模型。
使用上述OracleMiningModel方法,可以將模型作為簡單的交互式評分模型應用於Oracle數據庫中的數據集(壹般適用於電子表格應用)。用戶可能想要輸入血壓、身高和體重值,以讓數據庫使用剛剛定義的模型來預測心率。在模型對象上定義的Java API方法getPrediction非常適合這個目的。在單元格e e e和E中鍵入輸入值(按照單元格B中簽名數組指定的順序)後,可以通過輸入以下公式進行評分。
(*)= b get prediction(b new double[]{ e e e e });
同樣,公式將直接訪問Java API,在單元格E中獲取並顯示評分結果,如圖所示。
圖將模型應用於輸入值。
電子表格的優勢
電子表格在最終用戶中的流行有些令人費解。壹方面,最常用的電子表格系統長期以來讓許多開發人員望而卻步,他們習慣於更靈活和強大的系統。另壹方面,對於非開發人員來說,使用電子表格系統有以下明顯的優勢:不需要構建圖形用戶界面來單獨構建和測試每個公式(代碼)。而隱藏公式可以看到更簡單的計算結果。這些優勢只存在於今天流行的電子表格中。使用公式可以向單元格返回數字或文本,但很多系統主要局限於此。本文演示了如何消除這壹限制並創建壹個更強大的工具,然後使用它來直接訪問Oracle的數據挖掘模型函數和其他API。
結論
Lishi Xinzhi/Article/program/Oracle/201311/17437