這學期修了一門課,機器學習,交了一個期末專題

在實作部分有幾個小tips,整理一下來寫這篇文

是這樣的,期末專題要作一個利用實價登錄的資料作房價預測

因此需要作到讀檔、分析、計算,基本上就這麼簡單

介面:dropdownlist,textbox,datetimepicker

功能:讀檔、判斷訓練區域、作多變量回歸、預測房價、計算訓練時間、以及錯誤率

Interface

參考資料:C#泛型列表Lis​​t實現二維數組的功能(令附C#泛型列表Lis​​t基本用法總結)

用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)
{
      if (firstline)
      {
            firstline = false;

            continue;
      }
      array_str = line.Split(',');

      if (!ht.ContainsValue(array_str[0]))
      {
            ht.Add(cnt++, array_str[0]);
      }
}
town_cbB.DisplayMember = "Value";

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();
sw.Reset();
sw.Start();
// Run your code
sw.Stop();

string showtime= sw.ElapsedMilliseconds.ToString() + "ms";

arrow
arrow

    glitterHsin 發表在 痞客邦 留言(0) 人氣()