[公告] 痞客邦新服務上線 每日星座運勢測算[公告] 痞客邦應用市集全新改版![公告] 痞客邦「應用市集」新 App 上架-iFontCloud Professional[公告] 痞客邦後台發表文章提供插入多張圖片新功能[公告]痞客邦新服務上線 部落客商店聚集就在《痞市集》

  我也不知道為什麼要分享這個小工具。

  大概是因為最近有瘋狂畢業論文潮所以大家也都瘋狂做實驗,常常需要做討人厭的Cross-validation吧。本月已經有兩個人向我要這隻切Fold的程式(還有可以吃LIBSVM格式的evaluate程式)了,所以既然寫論文很苦悶,我就乾脆把這個程式改好,包一包,分享在這裡好了。

  給不知道啥是Cross-validation的人:所謂的Cross-validation,用白話說就是,你在某個地方滾來滾去,看了很多正妹,慢慢學會辨識正妹的技能,進而發表了一篇「正妹自動辨識與特徵分析」的論文。有一天,可惡的和藹可親的口試委員心情大好,對你嗆聲:

  「齁!你看的正妹有我多嗎!」

  
如果我看到的正妹你沒有看到的話你是不是就不能判斷了啊這樣的話你的研究就有問題可能要畢業就很難有沒有考慮留下來唸博班還是博士後啊(下略一萬字)

  
這個時候為了證明自己的清白,你必須要把你所看過的人分成兩堆,假裝你只看過其中一堆,只在在這堆人裡面學習正妹的特徵,然後去判斷另外一堆,來評估看看在「面對你完全沒看過的樣本」的情況下,你是會心頭小鹿亂撞說不出話來,還是能夠依然帥氣地分辨誰是正妹誰是大叔誰是可怕的口試委員。

  但即使是這樣,口試委員肯定還是不會放過你,他們會說:

  「齁!你是不是都故意把很好判斷的超級正妹分在沒看過的那堆啊!」

  
這個時候為了取信於口試委員,你必須要做一件有點討厭的事:把你認識的所有人分成四堆。先把其中一堆用白布蓋起來假裝沒看到,在其他三堆裡學習正妹的特徵,然後再把白布打開,判斷白布下的人是不是正妹。接著再蓋住第二堆再蓋住第三堆。......

  等你已經覺得自己很蠢笨地做完四次以後,某種程度上就可以保證在「面對你完全沒看過的樣本」的情況下,你還是可以臨危不亂地判斷正妹的存在

  上面這整件事情就叫做Cross-validation。而把樣本分成幾堆,用死研究生的說法就是切成N-Fold;那個「幾」,就是N的大小。(比較常見的是4-fold, 5-fold, 10-fold)

  
說了這麼多我到底在幹嘛。總之切Fold(蓋白布)雖然很簡單,但是每次實驗都要弄來弄去還是有點討厭,所以我用java寫了一個切fold的小程式

 

FoldCreator.jar

Usage: java -jar FoldCreator.jar inputFile outputFolder outputFileName foldNum [-encode ENCODE] [-mode LINE/SENTENCE]

inputFile:輸入檔
outputFolder:輸出的資料夾(不可以與已存在的檔案或資料夾同名)
outputFileName:切出來的檔名(後面會接_trainN.txt, _testN.txt)
foldNum:要切幾個Fold

-mode:最小單位是一行(LINE,例如LIBSVM)還是一句(SENTENCE,很多行為一個單位、以空白行來分開句子,例如CRF++),預設是一行。
-encode:編碼(預設是BIG5)


  這個程式做的事情很簡單。就是產生一個outputFolder資料夾,裡面有fold_1fold_N資料夾,fold1裡面會有outputFileName_test1.txtoutputFileName_train1.txt兩個檔案,其中outputFileName_test1.txt檔案是「被白布蓋起來的那堆樣本」,outputFileName_train.txt1是「要在裡面學特徵、沒被蓋起來的、剩下的樣本」。

  程式的寫法是一行一行照mod的餘數來分。我有附原始碼,有興趣再看吧。如果你的實驗材料需要一堆一堆一起分甚至亂數分,那可能就沒辦法了。或者,你可以直接改我的程式(改完可自己發佈,只是煩請寄給我一份XD)。但有時候最小單位可能不是一行而是連在一起的好幾行,例如用CRF++訓練斷詞的時候,可以把參數設為SENTENCE。

  -encode參數是對某些有string的資料(而不只是數字),例如CRF++的data,有時可能需要下編碼,否則如果只有數字的話是沒差的(例如LIBSVM)。

  如果竟然真的對誰有用的話就拿去吧。

Posted by windx at 痞客邦 PIXNET 留言(10) 引用(0) 人氣()


open trackbacks list Trackbacks (0)

留言列表 (10)

Post Comment
  • 阿裕
  • 可以分享你的tool嗎

    你好.請問你的tool可以分享給我嗎?
    如果方便請給我載點,或email給我好嗎
    kyshiao@yahoo.com.tw
    謝謝你
  • 載點就在文章內,那個大大的「FoldCreator.jar」點下去就對了XD

    windx replied in 2009/05/16 15:27

  • 阿裕
  • 感恩蛤!!
  • 阿凱
  • 你好...可以給我SVM格式轉換程式嗎??
    如果方便請給我載點,或email給我好嗎
    信箱:ts2121@msn.com
    感謝你
  • 阿凱
  • 你好...可以給我SVM格式轉換程式嗎??
    如果方便請給我載點,或email給我好嗎
    信箱:ts2121@msn.com
    感謝你
  • SVM格式轉換程式是什麼意思?O_o

    windx replied in 2009/09/17 10:53

  • Elaine
  • 請問您有知道 CV的相關文獻嗎
    謝謝

    elaine.kuo.tw@gmail.com
  • jill
  • 我載了~但沒東西耶~~~~是不是移除了?
    我滿需要這好物的!!!!可否再重新放~~拜託了
  • 我剛剛測過了,有東西喲。

    windx replied in 2010/05/30 15:10

  • 阿雜
  • 不好意思 請問可以給我SVM格式轉換程式嗎 感謝
  • 到底「SVM格式轉換程式」是什麼,怎麼大家都來要......有誰可以跟我清楚講一下。不然我也不知道我有沒有啊 =   =

    windx replied in 2010/07/29 19:13

  • 訪客
  • 真是言簡意賅^^~~謝謝你的解釋~
  • 訪客
  • 真是感謝你的分享~!
  • 訪客
  • +1 1:0.708333 2:1 3:1 4:-0.320755 5:-0.105023 6:-1 7:1 8:-0.419847 9:-1
    -1 1:0.583333 2:-1 3:0.333333 4:-0.603774 5:1 6:-1 7:1 8:0.358779 9:-1
    +1 1:0.166667 2:1 3:-0.333333 4:-0.433962 5:-0.383562 6:-1 7:-1
    -1 1:0.458333 2:1 3:1 4:-0.358491 5:-0.374429 6:-1 7:-1 8:-0.480916 9:1
    -1 1:0.875 2:-1 3:-0.333333 4:-0.509434 5:-0.347032 6:-1 7:1 8:-0.236641 9:1 10:-0.935484 11:-1 12:-0.333333 13:-1
    -1 1:0.5 2:1 3:1 4:-0.509434 5:-0.767123 6:-1 7:-1 8:0.0534351 9:-1
    +1 1:0.125 2:1 3:0.333333 4:-0.320755 5:-0.406393 6:1 7:1 8:0.0839695
    +1 1:0.25 2:1 3:1 4:-0.698113 5:-0.484018 6:-1 7:1 8:0.0839695 9:1
    +1 1:0.291667 2:1 3:1 4:-0.132075 5:-0.237443 6:-1 7:1 8:0.51145 9:-1
    +1 1:0.416667 2:-1 3:1 4:0.0566038 5:0.283105 6:-1 7:1 8:0.267176 9:-1 10:0.290323 12:1 13:1
    -1 1:0.25 2:1 3:1 4:-0.226415 5:-0.506849 6:-1 7:-1 8:0.374046 9:-1
    -1 2:1 3:1 4:-0.0943396 5:-0.543379 6:-1 7:1 8:-0.389313 9:1 10:-1 11:-1
    -1 1:-0.375 2:1 3:0.333333 4:-0.132075 5:-0.502283 6:-1 7:1 8:0.664122
    +1 1:0.333333 2:1 3:-1 4:-0.245283 5:-0.506849 6:-1 7:-1 8:0.129771
    -1 1:0.166667 2:-1 3:1 4:-0.358491 5:-0.191781 6:-1 7:1 8:0.343511 9:-1
    -1 1:0.75 2:-1 3:1 4:-0.660377 5:-0.894977 6:-1 7:-1 8:-0.175573 9:-1
    [類別] [feature1] [feature2] [feature3] [feature4] [feature5] .......?

You haven’t logged in yet, please use guest status to leave message. You can also log in with above service account and leave message

other options