1. 程式人生 > >工作中的那些坑(2)——語法解析器

工作中的那些坑(2)——語法解析器

波蘭表達式 png 其中 新增 commons 表達式 http cal fine

工作項目裏用到線性回歸算法,用於計算賬戶的分值,表明某賬戶是否是有風險的賬戶。其中參數都配好了,代碼裏直接用逆波蘭表達式解析即可。本來事情到這裏已經結束,突然來了新的需求:賬戶算出來的分數較為無序,於是考慮用sigmoid函數將其映射到(0,1)區間內,在乘以系數使其顯示更為直觀。為了使整個表達式更將通用,要求做到同時能解析sigmoid函數,即:原來單純解析常量、變量、運算符的逆波蘭表達式已經不能直接解析新增的sigmoid函數(即表達式),另外對嵌套的情況也沒做處理,所以需要重新設計一個更為通用的語法解析器。

先介紹下sigmoid函數,按照wiki上的解釋:A sigmoid function is a mathematical function having a characteristic "S"-shaped curve or sigmoid curve. Often, sigmoid function refers to the special case of the logistic function shown in the first figure and defined by the formula

技術分享

其曲線如圖

技術分享

簡單來說,該函數將一個區間平滑的映射到(0,1)區間內,是不是聯想到了概率呢?

工作中的那些坑(2)——語法解析器