Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
因為toad功能比較多,特別是新的版本,下面介紹一些有用的菜單,大家可以簡單看下,看有沒需要的功能點。
新版本 toad 軟件中, 比較有用的菜單
1、session 菜單
2、Database 菜單 (很多功能都是重復的)
administrator:
審計, 參數, redo, tablespace 等
monitor:
~ top session finder(監控session),
~ database browser : database 的全部內容, 包括參數, 表空間, 數據文件等
~ database monitor : 動態監視, 包括 logical I/O, session, sga, physical IO, call rates, shared pool, waitevent 等等.
~ server statistics: 包括, waits, latches, sessions 等等
~ session browser : 可以用來 kill session, 另外還有針對 session 的 wait event 等.
~ SGA Trace : 針對 SGA 的使用情況, 詳細列出了所有的 sql list.
~ SQL Tracker : 打開這個, 你在toad中的所有操作, 都會有對應的SQL語句被輸出.
diagnose:
alert log file, db health_check, log switch frequent, tablespace map
順便演示下logminer怎么用:
optimize:
~ analyze all objects : 類似 SYS.DBMS_STATS.GATHER_TABLE_STATS 的作用.
~ Explain plan : 執行計劃, 一般是先選擇一個SQL語句, 然后點工具欄上的小救護車(其實就是這項), 就可以只執行plan.
~ Optimize Current SQL: 調優當前SQL, 貌似有用, 以后實驗.
~ Rebuild Multiple Objects : 重建對象, 比如重建索引, 重建表 等.
~ Rebulid table : 重建表, 很詳細的設置
3、File菜單
File: 保存, 打開, 打印等等; 文件比對功能
4、Edit 菜單
一些普通的修改選項, 可以選擇Editor Options來修改字體等.
5、Grid:
主要是針對查詢出來的結果進行另存, 過濾等.
6、SQL Editor
執行編輯sql, 另外可以得到查詢語句中所使用的列的結構, control + F9 也可達到效果.
7、Create
create 數據庫中的對象.
8、SGA Trace/Optimization
某個用戶最近issue的sql語句.
9、其他功能:
Rebuild Table : 其實就是將整個表刪除了重建(數據還保留著)
Rebuild Multiple Objects : ( 將對象推到了重建 )
Multiple Object Privileges : 分配和收回權限.
Object Search : 能夠搜索出某個用戶的所有對象, 包括列column.
Data Subset Wizard: 可以生成腳本一個schema下的對象和數據復制到另外一個對象下, 我已經測試將scott下的所有對象復制到LEON下, 很好用的工具.
HTML Schema Doc Generator: 生成某個Schema的整體的 html 文檔.
Tnsnames editor: 修改 tnsname 并且可以生成另一個文件.
ER Diagram : 生成ER圖, 可以打印, 可以生成sql語句
Single Object Comparison : 單一對象的比較, 其實就是對象的創建的script之間的比較.
Compare data : 數據比較, 比如兩個表的數據比較, 個人感覺用處小, 直接一個 minus 實現了.
Spool SQL : 導出 SQL 語句.
View: 主要是針對當前的schema所有權限等, 顯示對應視圖.
Session info : 有用, 顯示roles, grant情況等.
Reports : 可以生成對象的 report, 格式很漂亮.
Object Palette : 顯示當前schema 下的對象
Code Snippets : 函數
SQL Command Recall : 剛才使用過的 sql 語句
Oracle Users List: 當前數據庫中的用戶
Options: view的一些選項
DBA: 顧名思義, 肯定是針對一些數據庫管理方面的內容.
Database Monitor: 各種數據庫監視的內容.
Database Probe: 數據庫的監測
Health Check: 顯示當前數據庫的運行情況
Top Session Finder: 顯示當前占用資源的一些session, 單擊餅狀圖時, 可以顯示 session 和 session 的操作系統的一些信息.
Session Browser: session 連接情況
oracle parameters: 當前數據庫 parameter設置.
NLS parameters: NLS 參數設置.
OS Utilities: 操作系統監控工具, 很好用.
Auditing: 針對用戶的權限進行審計
Segment Management: 各種存儲空間的管理
Undo/Redo: redo 與 undo 的管理
? Data Import/Export: 這個工具應該很有用, 需要再確認.
Server Statistics: server 的運行情況
control files: 顯示control file 中的內容及多路復用情況.
Pinned Code: shared pool 中關于鎖的控制.
Generate Schema Script: 生成某個用戶的所有的對象
Compare Schemas: 對比兩個schema
Compare Database: 對比兩個數據庫
Debug: 針對 pl/sql 的調試, 例如單步跟蹤等等.
Team Coding: 團隊合作時使用, 比如某個source只能某個人先修改, 然后其他人再修改.
F2 顯示全屏還是顯示結果內容
使用綁定變量, select * from EMPLOYEE WHERE employee_id=:EMPID
取消正在運行的sql, 如果長時間運行的話, 在菜單欄綠色運行箭頭的右邊有個 Cancel 按鈕.
F8 SQL RECALL 功能
EDIT 編輯功能, edit tablename F9(運行), 這時出現的結果集就可以編輯了.
desc objectname F9(運行) 顯示這個object的定義等等.
像eclpise的alt+/一樣, 顯示提示信息, 這里提示的是列信息, tablename CTRL-T
format code, 標準格式化代碼, 右鍵->Formating Tools->Formatcode
注釋代碼, 鼠標選中->右鍵->Comment block(Uncomment block取消)
Explain plans
explain plans : show how Oracle executes a statement (在執行SQL以前就可以看到), 點 “Run Explain Plan for current statement” button 在工具欄里.
另外, toad 會保存這個 explain plan 的結果, 以方便跟調整后的sql語句的explain plan的結果進行比對. 在 view->explain里進行比較. 不過你如果想使用此功能, 必須設置 view->options->oracle->general 打開 Save previous Explain Plan results
其他設備
其他的, 比如 SGA/Trace, session browser 等
AutoTrace
AutoTrace : 打開 autotrace, 在 SQL Editor->右鍵->AutoTrace, 注意: autotrace需要v$session支持, 這樣你就能打開autotrace, 關閉 autotrace 的地方也在這里.
SQL Trace
SQL Trace: (TKPROF) SQL Trace 比 Auto trace 功能更強大, 另外結果文件會保存在 服務器指定的 USER_DUMP_DESC參數所指定的位置. 總之, 這個設置起來可能稍微麻煩一點, 如果真有需要, 再專題看吧.
SGA Trace Optimization
Tools->SGA Trace Optimization
可以通過這個查看已經執行過的sql語句的資源使用情況. 如果需要, 你可以將某個 sql 語句 copy到 SQL Editor 進行編輯.
Session browser: 你可以看哪些session連接到服務器, 也可以 kill session.
主要是用來調試 plsql的
設置 debugger, view->options->procedure Editor->Debugging, 采用默認的設置就可以了
在 procedure Editor->右鍵->Debug
當你調試完以后, 要將toad上邊工具欄上的小昆蟲點掉(Toggle compiling with debug) 然后再重新編譯一遍.
Toad provides a powerful but easy-to-use interface for managing the many ongoing tasks associated with Oracle database administration. 你可以用 toad 來進行日常的dba管理.
database browser: The database browser reads your TNSNAMEs.ora file, 監控數據庫的狀態.
Managing Sessions
DBA->Top Session Finder, 這個是按照使用資源的情況來排序.
Managing Tablespaces
3個主要的windows管理 tablespace
dba->segment management->tablespaces
dba->segment Management->Tablespace Map
SchemaBrowser->Tablespace Tab
Checking Extents
dba->segment management->extents
Using Import/Export Tools
dba->data import/export->export/import utility wizards
dba->data import/export->export/data pump export/import utility wizards
Performing SGA Trace Optimization
Tools->SGA Trace Optimization
Schema Browser->Users
Schema Browser->Roles
Schema Browser->Resource Groups & Resource Plans
Schema Browser->Policies & PolicyGroups
Schema Browser->Sys Prives
DBA->Auditing->Audit SQL/SYS Privs
DBA->Auditing->Audit Object
Managing Users
Create User and Alter User: 在 create 模板里邊有, Schema broswer 選擇到user找到對應user, 右鍵alter就可以修改. 而且還可以克隆這個 user.
On the Tablespace tab, Toad has an option to set your selections for the user’s default and temporary tabespaces as defaults for all future Create user sessions in Toad for the current database.
Compare users
在 schema browser 中找到一個user 右鍵-> “Compare with another user”
Managing Roles
Schema Browser 找到 role, 然后可以查看細節等.
Managing Resource Groups and Resouorce Plans
Sechema Browser for managing your database’s resource consumer groups nad resource plans.
Managing Policies and Policy Groups
Sechema Browser for managing your database’s policies and policy groups.
Auditing
DBA->Auditing->Audit SQL/SYS Privs
Database->Auditing->Audit Objects
內容比較多,這里主要做個備忘,是不是發現TOAD有很多實用的功能呢?大家有空可以深入研究下。后面會分享更多DBA方面的內容,感興趣的朋友可以關注一下~
信貸評分卡中常用的兩個庫有scorecardpy和Toad。其中scorecardpy是由謝士晨博士開發,Toad是由厚本金融風控團隊內部孵化產生的標準評分卡庫。本文以Toad官方指導教程為例,講解如何運用Toad庫進行傻瓜式的評分卡開發。
參考自Toad庫中的Basic Tutorial for Toad.
Toad遵循信用風險記分卡模型開發的一般流程: (1)EDA (2)特征的選擇與WOE分箱的結合 (3)模型選擇 (4)模型驗證 (5)評分卡轉換
本文使用的數據是著名的德國信用卡數據集。數據預處理包括: (1)將target從'good' / 'bad'替換為0,1; (2)劃分訓練集測試集; (3)增加一列表示訓練和測試的特征。訓練集將用于建模,而測試集將僅用于驗證。
import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
import toad
data=pd.read_csv('germancredit.csv')
data.replace({'good':0,'bad':1},inplace=True)
print(data.shape) # 1000 data and 20 features
data.head()
? 劃分訓練集和測試集:
Xtr,Xts,Ytr,Yts=train_test_split(data.drop('creditability',axis=1),data['creditability'],test_size=0.25,random_state=450)
data_tr=pd.concat([Xtr,Ytr],axis=1)
#增加一列區分訓練/測試的特征
data_tr['type']='train'
data_ts=pd.concat([Xts,Yts],axis=1)
data_ts['type']='test'
? Toad支持常用的特征EDA分析,包括檢測缺失值和特征分布。
toad.detector.detect():返回每個特性的EDA報告,包括數據類型、分布、缺失率和惟一值。
toad.detector.detect(data_tr).head(10)
? Toad可以用來過濾大量的特征,如高缺失率、低iv和高度相關的特征。它還可以使用各種分箱技巧進行分箱和實現WOE轉化。
toad.selection.select():用于根據缺失百分比、iv(20箱)和多重共線性(帶有VIF和/或自相關)來過濾特征。
? 下面以缺失率大于0.5.IV值小于0.05或者相關性大于0.7(保留較高的特征)來進行特征篩選。
selected_data, drop_lst=toad.selection.select(data_tr,target='creditability', empty=0.5, iv=0.05, corr=0.7, return_drop=True, exclude=['type'])
selected_test=data_ts[selected_data.columns]
print(selected_data.shape)
drop_lst
? 可以看到,8個特征由于IV值過低被剔除。
toad.quality(dataframe, target):返回每個特征的質量,包括iv、基尼系數和熵。可以幫助我們發現更有用的潛在信息。
quality=toad.quality(data,'creditability')
quality.head(6)
第一步:分箱
toad.transform.Combiner():可以用來對數值型和類別型變量進行分箱,支持決策樹分箱、卡方分箱、最優分箱等。該行代碼生成一個Combiner類,這個類有以下方法: combiner().fit(data, y='target', method='chi', min_samples=None, n_bins=None ):分箱,支持卡方、決策樹、等頻和等寬。 combiner().set_rules(dict):設置箱號。 combiner().transform(data): 將特征的值轉化為分箱的箱號。
# 初始化一個combiner類
combiner=toad.transform.Combiner()
# 訓練數據并指定分箱方法,其它參數可選
combiner.fit(selected_data,y='creditability',method='chi',min_samples=0.05,exclude='type')
# 以字典形式保存分箱結果
bins=combiner.export()
#查看每個特征的分箱結果
print('status.of.existing.checking.account:',bins['status.of.existing.checking.account'])
print('credit.amount:',bins['credit.amount'])
print('duration.in.month:', bins['duration.in.month'])
第二步:WOE分箱可視化
toad.plot.badrate_plot(data,target='target', x=None, by=None): 畫出不同數據集的每一箱的bad_rate圖。這里可以是訓練集測試集,也可以不同月份的對比。by后面是縱軸。x是需要對比的維度,比如訓練集測試集、不同的月份。 toad.plot.proportion_plot(datacol): 畫出一個特征每一箱的比例。
# 根據bad_rate圖調整分箱
# 比如查看duration.in.month這個變量的分箱情況
adj_bin={'duration.in.month': [9, 12, 18, 33]}
c2=toad.transform.Combiner()
c2.set_rules(adj_bin)
data_=pd.concat([data_tr,data_ts],axis=0)
temp_data=c2.transform(data_[['duration.in.month','creditability','type']])
from toad.plot import badrate_plot, proportion_plot
badrate_plot(temp_data, target='creditability', x='type', by='duration.in.month')
proportion_plot(temp_data['duration.in.month'])
? 第一張圖是訓練集和測試集下每一箱對應的壞樣本率,第二張圖是每一箱的占比情況。可以看到第一張圖中的第一箱和第二箱的bad_rate存在倒掛,說明bad_rate不單調,需要進行調整。可以嘗試將第一箱和第二箱進行合并。
# 假定將第一箱、第二箱合并
adj_bin={'duration.in.month': [9, 18,33]}
c2.set_rules(adj_bin)
temp_data=c2.transform(data_[['duration.in.month','creditability','type']])
badrate_plot(temp_data, target='creditability', x='type', by='duration.in.month')
adj_bin={'duration.in.month': [9, 18,33],'foreign.worker': [['no'], ['yes']]}
? 調整之后可以看到分箱的bad_rate大致呈現單調的趨勢。
第三步:分箱轉化
toad.transform.WOETransformer():對分箱后的數據進行WOE轉化 WOETransformer().fit_transform(data, y_true, exclude=None):
#設置分箱號
combiner.set_rules(adj_bin)
#將特征的值轉化為分箱的箱號。
binned_data=combiner.transform(selected_data)
#計算WOE
transer=toad.transform.WOETransformer()
#對WOE的值進行轉化,映射到原數據集上。對訓練集用fit_transform,測試集用transform.
data_tr_woe=transer.fit_transform(binned_data, binned_data['creditability'], exclude=['creditability','type'])
data_ts_woe=transer.transform(combiner.transform(selected_test))
toad.selection.stepwise():可以通過向前、向后、雙向選擇來進行特征選擇,使用AIC/BIC/KS/AUC作為選擇標準。
final_data=toad.selection.stepwise(data_tr_woe.drop('type',axis=1),target='creditability',direction='both', criterion='aic')
final_test=data_ts_woe[final_data.columns]
print(final_data.shape)
print(final_data.columns)
? 可以看到經過模型選擇,15個特征減少為8個特征。
Xtr=final_data.drop('creditability',axis=1)
Ytr=final_data['creditability']
Xts=final_test.drop('creditability',axis=1)
Yts=final_test['creditability']
lr=LogisticRegression()
lr.fit(Xtr, Ytr)
from toad.metrics import KS, F1, AUC
EYtr_proba=lr.predict_proba(Xtr)[:,1]
EYtr=lr.predict(Xtr)
print('Training error')
print('F1:', F1(EYtr_proba,Ytr))
print('KS:', KS(EYtr_proba,Ytr))
print('AUC:', AUC(EYtr_proba,Ytr))
EYts_proba=lr.predict_proba(Xts)[:,1]
EYts=lr.predict(Xts)
print('\nTest error')
print('F1:', F1(EYts_proba,Yts))
print('KS:', KS(EYts_proba,Yts))
print('AUC:', AUC(EYts_proba,Yts))
psi=toad.metrics.PSI(final_data,final_test)
psi.sort_values(0,ascending=False) # Further tune the unstable feature if any
tr_bucket=toad.metrics.KS_bucket(EYtr_proba,Ytr,bucket=10,method='quantile')
tr_bucket
card=toad.scorecard.ScoreCard(combiner=combiner, transer=transer , C=0.1)
card.fit(Xtr, Ytr)
card.export(to_frame=True,).head(10)
? 可以輸出每個變量的得分情況。
? 以下參考自A complete tutorial,對基礎版中未提到的部分進行補充。
combiner=toad.transform.Combiner()
combiner.fit(data_tr2,y='creditability',method='chi',min_samples=0.05)
combiner.export()
from toad.plot import bin_plot
transformed=combiner.transform(data_tr2,labels=True)
#傳給bin_plot的數據必須是分箱轉化之后的
bin_plot(transformed,x='duration.in.month',target='creditability')
? 柱形圖表示每一箱的占比,折線圖表示每一箱的壞樣本率。一般折線圖要呈現出單調的趨勢。 ? 再看一個對類別型變量分箱進行調整的例子。對類別型變量進行分箱的時候,易出現某個類別只有好樣本/壞樣本,這樣對計算WOE值造成問題,所以需要將只有好/壞樣本的箱進行合并。
#分箱合并
c2.set_rules({'purpose': [['domestic appliances','retraining','car (used)'], ['radio/television'], ['furniture/equipment','repairs','business','car (new)'], ['education','others']]})
bin_plot(c2.transform(data_tr2[['purpose','creditability']],labels=True),x='purpose',target='creditability')
總結:Toad庫的出現使得評分卡建模越來越傻瓜式,技術是通用的,但是背后的業務理解需要在實踐中不斷加深理解。評分卡建模的代碼基本可以固化成一套,接下來就是根據業務理解去調整模型。總之,任何脫離業務的模型都是空中樓閣,只有帶來實際價值才是王道。
Toad庫相關的文檔:
github主頁: https://github.com/amphibian-dev/toad 文檔: https://toad.readthedocs.io 中文文檔: https://toad.readthedocs.io/en/dev/tutorial_chinese.html 演示: https://toad.readthedocs.io/en/latest/tutorial.html whl下載地址: https://pypi.org/simple/toad/
【作者】:Labryant
【原創公眾號】:風控獵人
【簡介】:某創業公司策略分析師,積極上進,努力提升。乾坤未定,你我都是黑馬。
【轉載說明】:轉載請說明出處,謝謝合作!~
網上有很多關于設置toad命令行補全的文章,發現根本不好使,下面分享一下可行的設置方法
1、到ORACLE 網站下載instantclient客戶端
https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
2、Oracle Instatnt Client解壓至指定目錄(自定義)如本例中放到如下目錄
D:\program\instantclient_18_5
3、配置系統變量
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
TNS_ADMIN=D:\program\instantclient_18_5\
LD_LIBRARY_PATH=D:\program\instantclient_18_5
SQLPATH=D:\program\instantclient_18_5
ORACLE_HOME=D:\program\instantclient_18_5
Path(在變量中加入) D:\program\instantclient_18_5
5、添加配置文件sqlnet.ora和tnsnames.ora
sqlnet.ora代碼如下:
# sqlnet.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
?
NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT)
?
ADR_BASE=D:\program\instantclient_18_5
tnsnames.ora代碼如下:
ORCL=(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=xx.xx.xx.xx)(PORT=1521))
(CONNECT_DATA= (SERVER=DEDICATED)
(SERVICE_NAME=orcl)
)
)
1、設置方法:
(1)view-->toad options-->editor-->Toad Insight-->Toad Insight(打勾),Delay pop-ups(值設置小些如100)
(2)在查查詢的對象前面加模式前綴
(3)體驗toad的命令提示的快樂吧~
*請認真填寫需求信息,我們會在24小時內與您取得聯系。