因?yàn)閠oad功能比較多,特別是新的版本,下面介紹一些有用的菜單,大家可以簡單看下,看有沒需要的功能點(diǎn)。
新版本 toad 軟件中, 比較有用的菜單
1、session 菜單
2、Database 菜單 (很多功能都是重復(fù)的)
administrator:
審計, 參數(shù), redo, tablespace 等
monitor:
~ top session finder(監(jiān)控session),
~ database browser : database 的全部內(nèi)容, 包括參數(shù), 表空間, 數(shù)據(jù)文件等
~ database monitor : 動態(tài)監(jiān)視, 包括 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 的使用情況, 詳細(xì)列出了所有的 sql list.
~ SQL Tracker : 打開這個, 你在toad中的所有操作, 都會有對應(yīng)的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 : 執(zhí)行計劃, 一般是先選擇一個SQL語句, 然后點(diǎn)工具欄上的小救護(hù)車(其實(shí)就是這項(xiàng)), 就可以只執(zhí)行plan.
~ Optimize Current SQL: 調(diào)優(yōu)當(dāng)前SQL, 貌似有用, 以后實(shí)驗(yàn).
~ Rebuild Multiple Objects : 重建對象, 比如重建索引, 重建表 等.
~ Rebulid table : 重建表, 很詳細(xì)的設(shè)置
3、File菜單
File: 保存, 打開, 打印等等; 文件比對功能
4、Edit 菜單
一些普通的修改選項(xiàng), 可以選擇Editor Options來修改字體等.
5、Grid:
主要是針對查詢出來的結(jié)果進(jìn)行另存, 過濾等.
6、SQL Editor
執(zhí)行編輯sql, 另外可以得到查詢語句中所使用的列的結(jié)構(gòu), control + F9 也可達(dá)到效果.
7、Create
create 數(shù)據(jù)庫中的對象.
8、SGA Trace/Optimization
某個用戶最近issue的sql語句.
9、其他功能:
Rebuild Table : 其實(shí)就是將整個表刪除了重建(數(shù)據(jù)還保留著)
Rebuild Multiple Objects : ( 將對象推到了重建 )
Multiple Object Privileges : 分配和收回權(quán)限.
Object Search : 能夠搜索出某個用戶的所有對象, 包括列column.
Data Subset Wizard: 可以生成腳本一個schema下的對象和數(shù)據(jù)復(fù)制到另外一個對象下, 我已經(jīng)測試將scott下的所有對象復(fù)制到LEON下, 很好用的工具.
HTML Schema Doc Generator: 生成某個Schema的整體的 html 文檔.
Tnsnames editor: 修改 tnsname 并且可以生成另一個文件.
ER Diagram : 生成ER圖, 可以打印, 可以生成sql語句
Single Object Comparison : 單一對象的比較, 其實(shí)就是對象的創(chuàng)建的script之間的比較.
Compare data : 數(shù)據(jù)比較, 比如兩個表的數(shù)據(jù)比較, 個人感覺用處小, 直接一個 minus 實(shí)現(xiàn)了.
Spool SQL : 導(dǎo)出 SQL 語句.
View: 主要是針對當(dāng)前的schema所有權(quán)限等, 顯示對應(yīng)視圖.
Session info : 有用, 顯示roles, grant情況等.
Reports : 可以生成對象的 report, 格式很漂亮.
Object Palette : 顯示當(dāng)前schema 下的對象
Code Snippets : 函數(shù)
SQL Command Recall : 剛才使用過的 sql 語句
Oracle Users List: 當(dāng)前數(shù)據(jù)庫中的用戶
Options: view的一些選項(xiàng)
DBA: 顧名思義, 肯定是針對一些數(shù)據(jù)庫管理方面的內(nèi)容.
Database Monitor: 各種數(shù)據(jù)庫監(jiān)視的內(nèi)容.
Database Probe: 數(shù)據(jù)庫的監(jiān)測
Health Check: 顯示當(dāng)前數(shù)據(jù)庫的運(yùn)行情況
Top Session Finder: 顯示當(dāng)前占用資源的一些session, 單擊餅狀圖時, 可以顯示 session 和 session 的操作系統(tǒng)的一些信息.
Session Browser: session 連接情況
oracle parameters: 當(dāng)前數(shù)據(jù)庫 parameter設(shè)置.
NLS parameters: NLS 參數(shù)設(shè)置.
OS Utilities: 操作系統(tǒng)監(jiān)控工具, 很好用.
Auditing: 針對用戶的權(quán)限進(jìn)行審計
Segment Management: 各種存儲空間的管理
Undo/Redo: redo 與 undo 的管理
? Data Import/Export: 這個工具應(yīng)該很有用, 需要再確認(rèn).
Server Statistics: server 的運(yùn)行情況
control files: 顯示control file 中的內(nèi)容及多路復(fù)用情況.
Pinned Code: shared pool 中關(guān)于鎖的控制.
Generate Schema Script: 生成某個用戶的所有的對象
Compare Schemas: 對比兩個schema
Compare Database: 對比兩個數(shù)據(jù)庫
Debug: 針對 pl/sql 的調(diào)試, 例如單步跟蹤等等.
Team Coding: 團(tuán)隊(duì)合作時使用, 比如某個source只能某個人先修改, 然后其他人再修改.
F2 顯示全屏還是顯示結(jié)果內(nèi)容
使用綁定變量, select * from EMPLOYEE WHERE employee_id=:EMPID
取消正在運(yùn)行的sql, 如果長時間運(yùn)行的話, 在菜單欄綠色運(yùn)行箭頭的右邊有個 Cancel 按鈕.
F8 SQL RECALL 功能
EDIT 編輯功能, edit tablename F9(運(yùn)行), 這時出現(xiàn)的結(jié)果集就可以編輯了.
desc objectname F9(運(yùn)行) 顯示這個object的定義等等.
像eclpise的alt+/一樣, 顯示提示信息, 這里提示的是列信息, tablename CTRL-T
format code, 標(biāo)準(zhǔn)格式化代碼, 右鍵->Formating Tools->Formatcode
注釋代碼, 鼠標(biāo)選中->右鍵->Comment block(Uncomment block取消)
Explain plans
explain plans : show how Oracle executes a statement (在執(zhí)行SQL以前就可以看到), 點(diǎn) “Run Explain Plan for current statement” button 在工具欄里.
另外, toad 會保存這個 explain plan 的結(jié)果, 以方便跟調(diào)整后的sql語句的explain plan的結(jié)果進(jìn)行比對. 在 view->explain里進(jìn)行比較. 不過你如果想使用此功能, 必須設(shè)置 view->options->oracle->general 打開 Save previous Explain Plan results
其他設(shè)備
其他的, 比如 SGA/Trace, session browser 等
AutoTrace
AutoTrace : 打開 autotrace, 在 SQL Editor->右鍵->AutoTrace, 注意: autotrace需要v$session支持, 這樣你就能打開autotrace, 關(guān)閉 autotrace 的地方也在這里.
SQL Trace
SQL Trace: (TKPROF) SQL Trace 比 Auto trace 功能更強(qiáng)大, 另外結(jié)果文件會保存在 服務(wù)器指定的 USER_DUMP_DESC參數(shù)所指定的位置. 總之, 這個設(shè)置起來可能稍微麻煩一點(diǎn), 如果真有需要, 再專題看吧.
SGA Trace Optimization
Tools->SGA Trace Optimization
可以通過這個查看已經(jīng)執(zhí)行過的sql語句的資源使用情況. 如果需要, 你可以將某個 sql 語句 copy到 SQL Editor 進(jìn)行編輯.
Session browser: 你可以看哪些session連接到服務(wù)器, 也可以 kill session.
主要是用來調(diào)試 plsql的
設(shè)置 debugger, view->options->procedure Editor->Debugging, 采用默認(rèn)的設(shè)置就可以了
在 procedure Editor->右鍵->Debug
當(dāng)你調(diào)試完以后, 要將toad上邊工具欄上的小昆蟲點(diǎn)掉(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 來進(jìn)行日常的dba管理.
database browser: The database browser reads your TNSNAMEs.ora file, 監(jiān)控數(shù)據(jù)庫的狀態(tài).
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找到對應(yīng)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, 然后可以查看細(xì)節(jié)等.
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
內(nèi)容比較多,這里主要做個備忘,是不是發(fā)現(xiàn)TOAD有很多實(shí)用的功能呢?大家有空可以深入研究下。后面會分享更多DBA方面的內(nèi)容,感興趣的朋友可以關(guān)注一下~
信貸評分卡中常用的兩個庫有scorecardpy和Toad。其中scorecardpy是由謝士晨博士開發(fā),Toad是由厚本金融風(fēng)控團(tuán)隊(duì)內(nèi)部孵化產(chǎn)生的標(biāo)準(zhǔn)評分卡庫。本文以Toad官方指導(dǎo)教程為例,講解如何運(yùn)用Toad庫進(jìn)行傻瓜式的評分卡開發(fā)。
參考自Toad庫中的Basic Tutorial for Toad.
Toad遵循信用風(fēng)險記分卡模型開發(fā)的一般流程: (1)EDA (2)特征的選擇與WOE分箱的結(jié)合 (3)模型選擇 (4)模型驗(yàn)證 (5)評分卡轉(zhuǎn)換
本文使用的數(shù)據(jù)是著名的德國信用卡數(shù)據(jù)集。數(shù)據(jù)預(yù)處理包括: (1)將target從'good' / 'bad'替換為0,1; (2)劃分訓(xùn)練集測試集; (3)增加一列表示訓(xùn)練和測試的特征。訓(xùn)練集將用于建模,而測試集將僅用于驗(yàn)證。
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()
? 劃分訓(xùn)練集和測試集:
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)
#增加一列區(qū)分訓(xùn)練/測試的特征
data_tr['type']='train'
data_ts=pd.concat([Xts,Yts],axis=1)
data_ts['type']='test'
? Toad支持常用的特征EDA分析,包括檢測缺失值和特征分布。
toad.detector.detect():返回每個特性的EDA報告,包括數(shù)據(jù)類型、分布、缺失率和惟一值。
toad.detector.detect(data_tr).head(10)
? Toad可以用來過濾大量的特征,如高缺失率、低iv和高度相關(guān)的特征。它還可以使用各種分箱技巧進(jìn)行分箱和實(shí)現(xiàn)WOE轉(zhuǎn)化。
toad.selection.select():用于根據(jù)缺失百分比、iv(20箱)和多重共線性(帶有VIF和/或自相關(guān))來過濾特征。
? 下面以缺失率大于0.5.IV值小于0.05或者相關(guān)性大于0.7(保留較高的特征)來進(jìn)行特征篩選。
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):返回每個特征的質(zhì)量,包括iv、基尼系數(shù)和熵。可以幫助我們發(fā)現(xiàn)更有用的潛在信息。
quality=toad.quality(data,'creditability')
quality.head(6)
第一步:分箱
toad.transform.Combiner():可以用來對數(shù)值型和類別型變量進(jìn)行分箱,支持決策樹分箱、卡方分箱、最優(yōu)分箱等。該行代碼生成一個Combiner類,這個類有以下方法: combiner().fit(data, y='target', method='chi', min_samples=None, n_bins=None ):分箱,支持卡方、決策樹、等頻和等寬。 combiner().set_rules(dict):設(shè)置箱號。 combiner().transform(data): 將特征的值轉(zhuǎn)化為分箱的箱號。
# 初始化一個combiner類
combiner=toad.transform.Combiner()
# 訓(xùn)練數(shù)據(jù)并指定分箱方法,其它參數(shù)可選
combiner.fit(selected_data,y='creditability',method='chi',min_samples=0.05,exclude='type')
# 以字典形式保存分箱結(jié)果
bins=combiner.export()
#查看每個特征的分箱結(jié)果
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): 畫出不同數(shù)據(jù)集的每一箱的bad_rate圖。這里可以是訓(xùn)練集測試集,也可以不同月份的對比。by后面是縱軸。x是需要對比的維度,比如訓(xùn)練集測試集、不同的月份。 toad.plot.proportion_plot(datacol): 畫出一個特征每一箱的比例。
# 根據(jù)bad_rate圖調(diào)整分箱
# 比如查看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'])
? 第一張圖是訓(xùn)練集和測試集下每一箱對應(yīng)的壞樣本率,第二張圖是每一箱的占比情況。可以看到第一張圖中的第一箱和第二箱的bad_rate存在倒掛,說明bad_rate不單調(diào),需要進(jìn)行調(diào)整。可以嘗試將第一箱和第二箱進(jìn)行合并。
# 假定將第一箱、第二箱合并
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']]}
? 調(diào)整之后可以看到分箱的bad_rate大致呈現(xiàn)單調(diào)的趨勢。
第三步:分箱轉(zhuǎn)化
toad.transform.WOETransformer():對分箱后的數(shù)據(jù)進(jìn)行WOE轉(zhuǎn)化 WOETransformer().fit_transform(data, y_true, exclude=None):
#設(shè)置分箱號
combiner.set_rules(adj_bin)
#將特征的值轉(zhuǎn)化為分箱的箱號。
binned_data=combiner.transform(selected_data)
#計算WOE
transer=toad.transform.WOETransformer()
#對WOE的值進(jìn)行轉(zhuǎn)化,映射到原數(shù)據(jù)集上。對訓(xùn)練集用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():可以通過向前、向后、雙向選擇來進(jìn)行特征選擇,使用AIC/BIC/KS/AUC作為選擇標(biāo)準(zhǔn)。
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)
? 可以看到經(jīng)過模型選擇,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,對基礎(chǔ)版中未提到的部分進(jìn)行補(bǔ)充。
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的數(shù)據(jù)必須是分箱轉(zhuǎn)化之后的
bin_plot(transformed,x='duration.in.month',target='creditability')
? 柱形圖表示每一箱的占比,折線圖表示每一箱的壞樣本率。一般折線圖要呈現(xiàn)出單調(diào)的趨勢。 ? 再看一個對類別型變量分箱進(jìn)行調(diào)整的例子。對類別型變量進(jìn)行分箱的時候,易出現(xiàn)某個類別只有好樣本/壞樣本,這樣對計算WOE值造成問題,所以需要將只有好/壞樣本的箱進(jìn)行合并。
#分箱合并
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')
總結(jié):Toad庫的出現(xiàn)使得評分卡建模越來越傻瓜式,技術(shù)是通用的,但是背后的業(yè)務(wù)理解需要在實(shí)踐中不斷加深理解。評分卡建模的代碼基本可以固化成一套,接下來就是根據(jù)業(yè)務(wù)理解去調(diào)整模型。總之,任何脫離業(yè)務(wù)的模型都是空中樓閣,只有帶來實(shí)際價值才是王道。
Toad庫相關(guān)的文檔:
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
【原創(chuàng)公眾號】:風(fēng)控獵人
【簡介】:某創(chuàng)業(yè)公司策略分析師,積極上進(jìn),努力提升。乾坤未定,你我都是黑馬。
【轉(zhuǎn)載說明】:轉(zhuǎn)載請說明出處,謝謝合作!~
網(wǎng)上有很多關(guān)于設(shè)置toad命令行補(bǔ)全的文章,發(fā)現(xiàn)根本不好使,下面分享一下可行的設(shè)置方法
1、到ORACLE 網(wǎng)站下載instantclient客戶端
https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
2、Oracle Instatnt Client解壓至指定目錄(自定義)如本例中放到如下目錄
D:\program\instantclient_18_5
3、配置系統(tǒng)變量
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、設(shè)置方法:
(1)view-->toad options-->editor-->Toad Insight-->Toad Insight(打勾),Delay pop-ups(值設(shè)置小些如100)
(2)在查查詢的對象前面加模式前綴
(3)體驗(yàn)toad的命令提示的快樂吧~
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。