原创 貝葉斯優化原理及應用[附XGBoost、LightGBM超參數調優代碼][scikit-optimize]

近年來機器學習和深度學習算法被越來越廣泛的應用於解決對未知數據的預測問題。由於超參數的選擇對模型最終的效果可能有極大的影響,爲了使模型達到更好的效果,通常會面臨超參數調優問題。但如何選擇合適的超參數並沒有一個明確的指導,並且同一模型面對隨

原创 競賽常用集成學習框架Boosting算法總結(XGBoost、LightGBM)(附代碼)

Boosting類算法簡介 Boosting是一類可將弱學習器提升爲強學習器的算法,這類算法的工作機制如下:先從初始訓練集訓練出一個基學習器,再根據基學習器的表現對訓練樣本分佈進行調整,使得先前基學習器做錯的訓練樣本在後續受到更多關注,然

原创 使用cohen kappa係數衡量分類精度

在診斷試驗中,研究者希望考察不同診斷方法在診斷結果上是否具有一致性。如評價兩個醫務工作者對同一組病人的診斷結論的一致性、同一醫務工作者對同一組病人前後進行兩次觀察作出診斷的一致性。1960年Cohen等提出用Kappa值作爲評價判斷的一致

原创 leetcode樹總結

面試中對樹的考察多爲二叉樹、二叉查找樹等。常見的二叉樹操作有: 前序遍歷、中序遍歷、後續遍歷(遞歸、迭代) 層序遍歷 樹的高度 樹的路徑 二叉搜索樹 二叉樹遍歷 94.二叉樹的中序遍歷 中序遍歷定義:先左子樹,後根節點,再右子樹。首先給出

原创 面試常用排序算法+LeetCode排序算法應用

排序算法也是面試中常常提及的內容,問的最多的應該是快速排序、堆排序、歸併排序。這些排序算法很基礎,很可能知道其思想,但在寫代碼時細節上出錯。因此本文的書寫主要參考了十大經典排序算法動畫與解析,看我就夠了!(配代碼完全版),對基於比較的排序

原创 leetcode二分查找算法總結

二分查找(binary search)是一種在有序數組中查找某一特定元素的搜索算法。搜索過程從數組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結束;如果某一特定元素大於或者小於中間元素,則在數組大於或小於中間元素的那一半中查

原创 leetcode拓撲排序算法總結

在圖論中,拓撲排序(Topological Sorting)是一個有向無環圖(DAG, Directed Acyclic Graph)的所有頂點的線性序列。所以可以通過有向圖是否存在拓撲排序來確定該有向圖是否有環。計算有向圖拓撲排序的常見

原创 [leetcode]買賣股票的最佳時機

121.買賣股票的最佳時機 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個算法來計算你所能獲取的最大利潤。 注意你不能在買入股票前賣出股票。 輸入: [7,

原创 [leetcode][dfs]深度優先搜索算法總結

dfs算法通常使用遞歸實現,邏輯清晰。在遞歸開頭寫一個跳出條件,然後繼續向下遞歸遍歷即可。要用一個額外的空間記錄節點訪問情況,遍歷過的地方不再遍歷,防止陷入循環,或者在原空間上進行修改。下面給出圖上的dfs算法實現,與樹有關的算法在樹的博

原创 leetcode單調棧總結

單調棧是在棧的先進後出基礎之上額外添加一個特性:從棧頂到棧底的元素是嚴格遞增(or遞減)。動畫:什麼是單調棧?一文很直觀的解釋了單調棧並給出了單調遞減棧的一個例子,但是上文中誤寫爲單調遞增棧。當遇到的問題,和前後元素之間的大小關係有關係時

原创 [leetcode][DP] 動態規劃總結

當優化問題可分爲多個子問題,子問題相互關聯,子問題的解被重複使用時,考慮使用動態規劃求解。     使用動態規劃的條件包括以下兩點 優化子結構:問題的和優化解包含子問題優化解,通過求解子問題使得我們可以自上而下的完成求解過程。 重疊子問題

原创 面試中的字符串算法

本文提到的題目部分來自《程序員算法面試指南》一書,這本書的題目可以在牛客網進行在線編程練習。部分來自LeetCode。 KMP算法 提到字符串問題,首先想到的就是KMP算法,它用於解決字符串匹配問題,在字符串str(長度爲N)中查找子串m

原创 解決ubuntu安裝python-igraph時出現的Could not download and compile the C core of igraph問題

pip install python-igraph     在使用pip安裝igraph時遇到了Could not download and compile the C core of igraph,在網上查閱並嘗試了多種解決方法,很多

原创 使用spark mllib協同過濾進行圖書推薦(Java版)

0. 協同過濾算法簡介     協同過濾(Collaborative Filtering),簡單來說是利用某興趣相投、擁有共同經驗之羣體的喜好來推薦用戶感興趣的信息。根據關注內容的不同,協同過濾算法分爲三類: 以用戶爲基礎(User-ba

原创 leetcode排序總結

leetcode上的排序題大多基於排序的應用,幾乎不涉及對經典排序算法的實現,類似147鏈表插入排序。下面就對排序算法稍微做一點總結。排序分爲基於比較的排序和非比較排序。比較排序主要有:冒泡排序,選擇排序,