㈠ GBDT 如何實現特徵組合提取
以python調用sklearn為例,在你建立GBDT對象並作fit之後,可以使用如下代碼獲得你要的規則代碼:
dot_data = tree.export_graphviz(model_tree, out_file=None,
max_depth=5, feature_names=names_list, filled=True, rounded=True) # 將決策樹規則生成dot對象
其中tree就是你的數對象,如果你的out_file後面是一個文件名,那麼你的規則會輸出到文件中;如果是None(就像上面代碼),那麼值會保存在dot_data中。
無論哪種方法,你都能獲得規則文本。然後剩下的就是普通的文本解析的事情了。
在決策樹演算法對象的tree_屬性中,存儲了所有有關決策樹規則的信息(示例中的決策樹規則存儲在model_tree.tree_中)。最主要的幾個屬性:
children_left:子級左側分類節點
children_right:子級右側分類節點
feature:子節點上用來做分裂的特徵
threshold:子節點上對應特徵的分裂閥值
values:子節點中包含正例和負例的樣本數量
上述屬性配合節點ID、節點層級便迭代能得到如下的規則信息:
1 [label="rfm_score <= 7.8375
gini = 0.1135
samples =
14581
value = [13700, 881]", fillcolor="#e58139ef"] ;
其中規則開始的1代表節點ID,rfm_score是變數名稱,rfm_score
<= 7.8375是分裂閥值,gini = 0.1135是在當前規則下的基尼指數,nsamples是當前節點下的總樣本量,nvalue為正例和負例的樣本數量。
來源:知乎
㈡ 大數據開發工程師需要具備哪些技能
可以根據招聘要求學習:
1、
o展示構建大數據解決方案的經驗。Hadoop生態圈體驗:Hadoop、Spark、MapRece、Hive/Pig、Yarn、HBase等
o有使用RDBMS和NoSQL棧的經驗(ElasticSearch, HBase, Cassandra)
o具備良好的Python統計和科學編程能力
o有數據可視化工具使用經驗:Hue, Kibana, Qlikview, Tableau優先
對數據科學概念有良好的理解,並強調機器學習技術的優先考慮
o能夠獨立解決問題,積極主動,自我指導
o敏捷/Scrum開發方法經驗
o軟體測試知識,包括黑盒測試和白盒測試方法,以及功能測試和非功能測試
2、熟練Java/Scala/Python/go等一種或多種編程語言
熟練SparkStructuredStreaming和Flink等流計算引擎,有實際項目經驗者優先
熟悉kafka,hadoop,zk,HBase,elasticsearch,clickhouse,Druid等大數據技術,有實際項目經驗者優先
了解並行計算或者分布式計算原理,了解數據倉庫相關知識優先
了解常見的機器學習演算法,了解CNN/RNN/LSTM/GBDT等演算法者優先
㈢ python gbdt測試集誤差竟然逐漸上升是怎麼回事
是否是因為過擬合了?
隨著訓練集誤差的下降,測試集誤差一般應該是先下降後上升的。
㈣ python sklearn 怎麼根據gbdt apply函數 和原來特徵加起來
跟版本沒關系。函數需要的傳參類型不一致。明顯已經說需要 字元串 和數字類型的參數了。而不是 一個字元串 和數字類型的 zip包
㈤ 如何給python載入科學計算庫
1.安裝
安裝Python2.7:hownloads/release/python-2712/根據電腦配置選擇合適版本下載安裝。
安裝過python之後,Python27Scripts有pip.exe,在Python27Scripts文件夾下運行cmd(點擊Shift+右鍵),可以用pip安裝其他包。
1. 安裝科學計算庫
pip installjupyter
pip installpandas
pip installnumpy
pip installmatplotlib
pip installseaborn
pip installscikit-learn
2. 用上述方式安裝scipy不成功,可以這樣:在ci.e/~gohlke/pythonlibs/下載合適的whl包,pip install <拖入下載到的scipy包>。安裝後import scipy若提示缺少numpy+MKL,可以pip uninstall numpy,再下載numpy+MKL的whl包,pip install *.whl。
檢測安裝是否成功,打開Python的shell,輸入:
import matplotlib
import numpy
import scipy等,若不報錯,就安裝成功。
比如生成一個y=x的直線:
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.ylabel('some numbers')
plt.show()1234
上述是我採用的安裝方式,過程比較順利,除了pip,還有其他的方式哈:
1. 用easy_install安裝,但是這種方法卸載不方便,不推薦。
2. 用anaconda的conda命令,好像也很常用,因為conda會安裝或者更新一些依賴庫,但是pip未必。有興趣的可以試試。
2. 科學計算庫的使用
綜合:
1.遇到Numpy陌生函數,查詢用法
2.pandas教程及API
pandas讀取csv文件,提供了大量能使我們快速便捷地處理數據的函數和方法。
3.Matplotlib Tutorial(譯)
是python最著名的繪圖庫,它提供了一整套和matlab相似的命令API,十分適合互動式地進行制圖。
數據可視化:
1.Seaborn tutorial
Seaborn模塊自帶許多定製的主題和高級的介面,來控制matplotlib圖表的外觀。
機器演算法:
1.scikit-learn
scikit-learn的基本功能主要被分為六個部分,分類,回歸,聚類,數據降維,模型選擇,數據預處理,機器學習模型非常豐富,包括SVM,決策樹,GBDT,KNN等等,可以根據問題的類型選擇合適的模型,具體可以參考官方網站上的文檔。
㈥ python gradientboostingregressor可以做預測嗎
可以
最近項目中涉及基於Gradient Boosting Regression 演算法擬合時間序列曲線的內容,利用python機器學習包scikit-learn 中的GradientBoostingRegressor完成
因此就學習了下Gradient Boosting演算法,在這里分享下我的理解
Boosting 演算法簡介
Boosting演算法,我理解的就是兩個思想:
1)「三個臭皮匠頂個諸葛亮」,一堆弱分類器的組合就可以成為一個強分類器;
2)「知錯能改,善莫大焉」,不斷地在錯誤中學習,迭代來降低犯錯概率
當然,要理解好Boosting的思想,首先還是從弱學習演算法和強學習演算法來引入:
1)強學習演算法:存在一個多項式時間的學習演算法以識別一組概念,且識別的正確率很高;
2)弱學習演算法:識別一組概念的正確率僅比隨機猜測略好;
Kearns & Valiant證明了弱學習演算法與強學習演算法的等價問題,如果兩者等價,只需找到一個比隨機猜測略好的學習演算法,就可以將其提升為強學習演算法。
那麼是怎麼實現「知錯就改」的呢?
Boosting演算法,通過一系列的迭代來優化分類結果,每迭代一次引入一個弱分類器,來克服現在已經存在的弱分類器組合的shortcomings
在Adaboost演算法中,這個shortcomings的表徵就是權值高的樣本點
而在Gradient Boosting演算法中,這個shortcomings的表徵就是梯度
無論是Adaboost還是Gradient Boosting,都是通過這個shortcomings來告訴學習器怎麼去提升模型,也就是「Boosting」這個名字的由來吧
Adaboost演算法
Adaboost是由Freund 和 Schapire在1997年提出的,在整個訓練集上維護一個分布權值向量W,用賦予權重的訓練集通過弱分類演算法產生分類假設(基學習器)y(x),然後計算錯誤率,用得到的錯誤率去更新分布權值向量w,對錯誤分類的樣本分配更大的權值,正確分類的樣本賦予更小的權值。每次更新後用相同的弱分類演算法產生新的分類假設,這些分類假設的序列構成多分類器。對這些多分類器用加權的方法進行聯合,最後得到決策結果。
其結構如下圖所示:
可以發現,如果要用Gradient Boosting 演算法的話,在sklearn包里調用還是非常方便的,幾行代碼即可完成,大部分的工作應該是在特徵提取上。
感覺目前做數據挖掘的工作,特徵設計是最重要的,據說現在kaggle競賽基本是GBDT的天下,優劣其實還是特徵上,感覺做項目也是,不斷的在研究數據中培養對數據的敏感度。
㈦ python數據挖掘是什麼
數據挖掘(data mining,簡稱DM),是指從大量的數據中,通過統計學、人工智慧、機器學習等方法,挖掘出未知的、且有價值的信
息和知識的過程。
python數據挖掘常用模塊
numpy模塊:用於矩陣運算、隨機數的生成等
pandas模塊:用於數據的讀取、清洗、整理、運算、可視化等
matplotlib模塊:專用於數據可視化,當然含有統計類的seaborn模塊
statsmodels模塊:用於構建統計模型,如線性回歸、嶺回歸、邏輯回歸、主成分分析等
scipy模塊:專用於統計中的各種假設檢驗,如卡方檢驗、相關系數檢驗、正態性檢驗、t檢驗、F檢驗等
sklearn模塊:專用於機器學習,包含了常規的數據挖掘演算法,如決策樹、森林樹、提升樹、貝葉斯、K近鄰、SVM、GBDT、Kmeans等
數據分析和挖掘推薦的入門方式是?小公司如何利用數據分析和挖掘?
關於數據分析與挖掘的入門方式是先實現代碼和Python語法的落地(前期也需要你了解一些統計學知識、數學知識等),這個過程需要
你多閱讀相關的數據和查閱社區、論壇。然後你在代碼落地的過程中一定會對演算法中的參數或結果產生疑問,此時再去查看統計學和數據
挖掘方面的理論知識。這樣就形成了問題為導向的學習方法,如果將入門順序搞反了,可能在硬著頭皮研究理論演算法的過程中就打退堂鼓
了。
對於小公司來說,你得清楚的知道自己的痛點是什麼,這些痛點是否能夠體現在數據上,公司內部的交易數據、營銷數據、倉儲數據等是
否比較齊全。在這些數據的基礎上搭建核心KPI作為每日或每周的經營健康度衡量,數據分析側重於歷史的描述,數據挖掘則側重於未來
的預測。
差異在於對數據的敏感度和對數據的個性化理解。換句話說,就是懂分析的人能夠從數據中看出破綻,解決問題,甚至用數據創造價值;
不懂分析的人,做不到這些,更多的是描述數據。
更多技術請關注python視頻教程。
㈧ python3.5做分類時,混淆矩陣加在哪一步
preface:做著最近的任務,對數據處理,做些簡單的提特徵,用機器學習演算法跑下程序得出結果,看看哪些特徵的組合較好,這一系列流程必然要用到很多函數,故將自己常用函數記錄上。應該說這些函數基本上都會用到,像是數據預處理,處理完了後特徵提取、降維、訓練預測、通過混淆矩陣看分類效果,得出報告。
1.輸入
從數據集開始,提取特徵轉化為有標簽的數據集,轉為向量。拆分成訓練集和測試集,這里不多講,在上一篇博客中談到用StratifiedKFold()函數即可。在訓練集中有data和target開始。
2.處理
[python]view plain
defmy_preprocessing(train_data):
X_normalized=preprocessing.normalize(train_data,norm="l2",axis=0)#使用l2範式,對特徵列進行正則
returnX_normalized
defmy_feature_selection(data,target):
fromsklearn.feature_selectionimportSelectKBest
fromsklearn.feature_selectionimportchi2
data_new=SelectKBest(chi2,k=50).fit_transform(data,target)
returndata_new
defmy_PCA(data):#datawithouttarget,justtraindata,withoutraintarget.
pca_sklearn=decomposition.PCA()
pca_sklearn.fit(data)
main_var=pca_sklearn.explained_variance_
printsum(main_var)*0.9
importmatplotlib.pyplotasplt
n=15
plt.plot(main_var[:n])
plt.show()
defclf_train(data,target):
fromsklearnimportsvm
#fromsklearn.linear_modelimportLogisticRegression
clf=svm.SVC(C=100,kernel="rbf",gamma=0.001)
clf.fit(data,target)
#clf_LR=LogisticRegression()
#clf_LR.fit(x_train,y_train)
#y_pred_LR=clf_LR.predict(x_test)
returnclf
defmy_confusion_matrix(y_true,y_pred):
fromsklearn.metricsimportconfusion_matrix
labels=list(set(y_true))
conf_mat=confusion_matrix(y_true,y_pred,labels=labels)
print"confusion_matrix(leftlabels:y_true,uplabels:y_pred):"
print"labels ",
foriinrange(len(labels)):
printlabels[i]," ",
foriinrange(len(conf_mat)):
printi," ",
forjinrange(len(conf_mat[i])):
printconf_mat[i][j],' ',
defmy_classification_report(y_true,y_pred):
fromsklearn.metricsimportclassification_report
print"classification_report(left:labels):"
printclassification_report(y_true,y_pred)
主要使用sklearn的preprocessing函數中的normalize()函數,默認參數為l2範式,對特徵列進行正則處理。即每一個樣例,處理標簽,每行的平方和為1.
my_feature_selection()函數:
使用sklearn的feature_selection函數中SelectKBest()函數和chi2()函數,若是用詞袋提取了很多維的稀疏特徵,有必要使用卡方選取前k個有效的特徵。
my_PCA()函數:
主要用來觀察前多少個特徵是主要特徵,並且畫圖。看看前多少個特徵佔據主要部分。
clf_train()函數:
可用多種機器學習演算法,如SVM, LR, RF, GBDT等等很多,其中像SVM需要調參數的,有專門調試參數的函數如StratifiedKFold()(見前幾篇博客)。以達到最優。
my_confusion_matrix()函數:
主要是針對預測出來的結果,和原來的結果對比,算出混淆矩陣,不必自己計算。其對每個類別的混淆矩陣都計算出來了,並且labels參數默認是排序了的。
my_classification_report()函數:
主要通過sklearn.metrics函數中的classification_report()函數,針對每個類別給出詳細的准確率、召回率和F-值這三個參數和宏平均值,用來評價演算法好壞。另外ROC曲線的話,需要是對二分類才可以。多類別似乎不行。
㈨ 初學matlab中的圖像處理,求大蝦們推薦幾本教程
//================================//分割線//================================//
2012.12.12(上海,***,周三 )
岡薩雷斯的數字圖像處理(有課本和MATLAB兩個版本,建議兩本都買,我當初是看完課本再看MATLAB版本,MATLAB邊看邊上機實驗,這樣會帶來樂趣,其實怎麼說有人說兩本一塊看,看個人習慣了,我課本後來又看了一遍,但還是有很多地方看不懂,小波真心看不懂,還有就是如果不做編碼這一塊的話,第8章的圖像壓縮可以不看,個人認為分割和形態學兩章重要,特別是分割這章),看完岡薩大牛的書然後就可以學習OPENCV(必學,這個好比你在戰場上的機關槍,圖像開發利器,個人看法是買老外寫的翻譯過來的那本,上面圖中紅色的那本,劉瑞禎寫的本人看不習慣)C(++)語言要學好。論文要多看,跟導師有項目就做項目,進入課題,還有就是實習經驗,實習項目經驗,當然是做開發了,打醬油的不算,這個對找工作非常重要,還有就是小論文研二下學期差不多要投出去,到時候找工作了一堆的事在一塊,沒心思弄,那時候還有大論文,還有一本《圖像處理、分析與機器視覺》的書很好,上面黑色的,這到後面慢慢看,加油啊。
//================================//分割線//================================//
2016.11.21(上海,陰,周一)
轉眼這回答都過去四年了,上班也快四年了,依然在做圖像開發,機器學習,看到又有同學點贊,所以就想再寫寫,寫得不好多多包涵,寫點工作後得到的一點個人愚見:
1、OPENCV一定要熟練,C,C++一樣要熟練,MATLAB不會用沒關系,工作上一般不用。
2、人工智慧很火,現在大家都搞深度學習,本人還沒怎麼接觸,是個方向,我還在搞傳統的監督學習,SVM,隨機森林,GBDT(傳統演算法GBDT在大部分數據都是最佳性能,網上大家都這么說)等等。機器學習一定要會搞,演算法寫不來,但一定要會用。
3、特徵工程,樣本工程一樣重要,提取特徵的演算法什麼HOG,LBP,GABOR,SURF等等,都是成熟的經典演算法,網上資料很多。
4、反正就是多看吧,互聯網方便,不懂就搜著看。
//================================//分割線//================================//
暫時就想到這些,斷續上班賺首付。
//================================//分割線//================================//
2019.08.26(上海,陰,周一)
一轉眼這回答又快過去三年,上班也六年半,依然在做圖像開發,深度學習,這三年學到很多,認識很多,所以就想再寫寫,寫得不好多多包涵,這三年的主要體會:
1、深度學習啊,現在沒有比這個更時髦的了,caffe做圖像最普遍,不過現在pytorch慢慢好像要勝出,github上最新的資源多是pytorch。
2、python啊,不必多說。
3、做為一個畢業有些年的人,這些東西都是上班後學的,沒辦法,不學跟不上時代——學無止境,活到老學到老!
4、我現在主要做目標檢測,從早期的faster rcnn,yolov1,v3到現在的centernet,真是技術更新換代的速度比年齡增長的速度還快!三十多了,馬上有35歲的年齡危機,路在何方,猶未知!
//================================//分割線//================================//
對了,提醒一句,努力重要,選擇更重要,能買房早買房,我這些年最大的失敗就在於買房太晚!