這學期修了一門課,機器學習,交了一個期末專題
在實作部分有幾個小tips,整理一下來寫這篇文
是這樣的,期末專題要作一個利用實價登錄的資料作房價預測
因此需要作到讀檔、分析、計算,基本上就這麼簡單
介面:dropdownlist,textbox,datetimepicker
功能:讀檔、判斷訓練區域、作多變量回歸、預測房價、計算訓練時間、以及錯誤率
參考資料:C#泛型列表List實現二維數組的功能(令附C#泛型列表List基本用法總結)
用List<T>取代一維陣列便可以動態配置,解決陣列需要配置記憶體大小的問題
二維則是List<List<T>>,這麼好用可惜不能跟matlab的MWArray互通,得轉成矩陣才行。
參考資料:Add Dictionary/Hash Table Object to Combo Box
指定ComboBox的項目值(ComboBox item value)
這一段主要是在作讀檔,以逗號分割字串放入array_str
我的array_str[0]是分類的依據,例如我讀進的各個鄉鎮的交易資料
有些交易資料的鄉鎮是一樣的,我需要取得這些鄉鎮,但不重複
最簡單就是跑雙迴圈,但很浪費時間,因此使用Hashtable存放已讀的鄉鎮(而且不重複)
主要是用ContainValue(object o)判斷Hashtable內有沒有重複的鄉鎮
不用再跑一次迴圈,java似乎有更好的形態可以用,Hashmap與ListArray
跟List一樣Hashtable用add加入key與value。
另外town_cbB是ComboBox,我需要用這些資料新增下拉式選單的資料
將鄉鎮存入Hashtable用BindingSource放入ComboBox的DataSource即可
現在回頭看,這裡似乎不需要用到Hashtable,因為key是無意義的
用List會比較好,聽說List也有ContainValue函式。
using System.Collections; Hashtable ht = new Hashtable(); Boolean firstline = true; while ((line = sr.ReadLine()) != null) continue; if (!ht.ContainsValue(array_str[0])) town_cbB.ValueMember = "Key"; town_cbB.DataSource = new BindingSource(ht,null); |
參考資料:C#中最簡單的分隔線
新增label元件,將BorderStyle改成Fixed3D,AutoSize改成false,更改BackColor即可。
參考資料:C# 計算程式執行時間
using System.Diagnostics; Stopwatch sw = new Stopwatch(); string showtime= sw.ElapsedMilliseconds.ToString() + "ms"; |