確定建模的目標:是分類問題還是回歸問題或是無監督學習問題
對資料進行分析
資料探勘之特徵工程
特徵工程的意義
資料採集
資料清洗
資料取樣
正負樣本不均衡處理辦法
特徵處理
特徵處理之數值型
特徵處理之類別型
特徵處理之時間型
離散值
特徵選擇主要有兩個功能:
單變數特徵選擇
單變數特徵選擇能夠對每乙個特徵進行測試,衡量該特徵和響應變數之間的關係,根據得分扔掉不好的特徵。對於回歸和分類問題可以採用卡方檢驗等方式對特徵進行測試
import numpy as np
from scipy.stats import pearsonr
np.random.seed(0)
size = 300
x = np.random.normal(0, 1, size)
print "lower noise", pearsonr(x, x + np.random.normal(0, 1, size))
print "higher noise", pearsonr(x, x + np.random.normal(0, 10, size))
當雜訊資料較小的時候,相關性很強,p-value很低。
但是pearson相關係數的乙個明顯缺陷是,它只對線性關係敏感,如果關係是非線性的,即便兩個變數具有一一對應的關係,相關性也可能會接近0
x = np.random
.uniform(-1, 1, 100000)
print pearsonr(x, x**2)[0]
mutual information,縮寫為mi,表示兩個變數x與y是否有關係,以及關係的強弱,互資訊的公式:
百科介紹:
使用隨機森林對單變數進行選擇:
from sklearn.cross_validation import cross_val_score, shufflesplit
from sklearn.datasets import load_boston
from sklearn.ensemble import randomforestregressor
#load boston housing dataset as an example
boston = load_boston()
x = boston["data"]
y = boston["target"]
names = boston["feature_names"]
rf = randomforestregressor(n_estimators=20, max_depth=4)
scores =
for i in range(x.shape[1]):
score = cross_val_score(rf, x[:, i:i+1], y, scoring="r2",
cv=shufflesplit(len(x), 3, .3))
print sorted(scores, reverse=true)
正則化就是把額外的約束或者懲罰項加到已有模型損失函式上,以防止過擬合併提高泛化能力。當用線性模型上時,l1正則化和l2正則化也稱為lasso 和ridge
from sklearn.linear_model import linearregression
import numpy as np
from sklearn.linear_model import lasso
from sklearn.preprocessing import standardscaler
from sklearn.datasets import load_boston
boston = load_boston()
scaler = standardscaler()
x = scaler.fit_transform(boston["data"])
y = boston["target"]
names = boston["feature_names"]
defpretty_print_linear
(coefs, names = none, sort = false):
if names == none:
names = ["x%s" % x for x in range(len(coefs))]
lst = zip(coefs, names)
if sort:
lst = sorted(lst, key = lambda x:-np.abs(x[0]))
return
" + ".join("%s * %s" % (round(coef, 3), name)
for coef, name in lst)
lasso = lasso(alpha=.3)
lasso.fit(x, y)
print
"lasso model: ", pretty_print_linear(lasso.coef_, names, sort = true)
可以看到,很多特徵的係數都是 0 ,如果繼續增加alpha的值,得到的模型就會越來越稀疏
隨機森林具有準確率高、魯棒性強、易於使用等優點,隨機森林提供了兩種特徵選擇的方法:mean decrease impurity和mean decrease accuracy
from sklearn.datasets import load_boston
from sklearn.ensemble import randomforestregressor
import numpy as np
#load boston housing dataset as an example
boston = load_boston()
x = boston["data"]
y = boston["target"]
names = boston["feature_names"]
rf = randomforestregressor()
rf.fit(x, y)
print
"features sorted by their score:"
print sorted(zip(map(lambda x: round(x, 4), rf.feature_importances_), names),
reverse=true)
參考:
XML建模整個流程
一 包名命名規範 網域名稱反寫 專案名稱 模組名稱 例如 二 怎樣去建模呢?1.需要將xml中所有的標籤都要進行建模 有多少個標籤就建多少個實體類 2.在建模時,從裡到外建,原因是外層依賴內層 三 命名規範 forwardmodel 帕斯卡 作用 於類名 forwardmodel 駝峰 作用於 屬性...
一 TensorFlow的建模流程
儘管tensorflow設計上足夠靈活,可以用於進行各種複雜的數值計算。但通常人們使用tensorflow來實現機器學習模型,尤其常用於實現神經網路模型。從原理上說可以使用張量構建計算圖來定義神經網路,並通過自動微分機制訓練模型。但為簡潔起見,一般推薦使用tensorflow的高層次keras介面來...
風控建模整體流程
1.確定建模目的 在信貸領域中建立風控模型是為了找出可能會逾期的客戶,根據逾期的可能性和資金的鬆緊程度選擇是否放貸。在支付領域建立風控模型是為了找出可能存在非法經營的商戶,保證商戶沒有違法經營。2.確定好壞樣本邏輯 在信貸領域中逾期大於x期 不同公司取值不同 的客戶定義為壞客戶 1 從未逾期的客戶定...