ML.NET-ML.NET從資料庫讀取資料(ML.NET load data from database)

原先看微軟的文件
MLContext mlContext = new MLContext(); DatabaseLoader loader = mlContext.Data.CreateDatabaseLoader<HouseData>();

這段code一直無法讀到DatabaseLoader,所以就找的別的方法讀取資料庫內的資料。

首先先為你要取的資料建一個類別
daily_model是日期與數值  ,daily_modelPrediction是預測值

public class daily_model
{
    [LoadColumn(0)]
    public string date;

    [LoadColumn(1)]
    public float  value;
}

public class daily_modelPrediction
{
    //vector to hold alert,score,p-value values
    [VectorType(3)]
    public double[] Prediction { get; set; }
}


SQL抓取資料function

    public DataTable GetData(string sql)
    {
        //連接字串
        String conString = System.Configuration.ConfigurationManager.AppSettings["ConnString"];
        //取得MySQLConnection
        MySqlConnection conn = new MySqlConnection();

        conn.ConnectionString = conString;
        DataTable dt = new DataTable();
        MySqlDataAdapter adapter = new MySqlDataAdapter(sql, conn);
        adapter.Fill(dt);
        return dt;
    }

主程式,建立一個list收datatable的資料,抓取資料庫內的資料再依序塞進data,最後再由MLContext讀取剛剛資料庫撈的資料。

var data = new List<geodaily_model>();
DataTable dt = dal.GetData("SELECT date,value FROM daily_average order by id desc limit 30");
foreach(DataRow dr in dt.Rows)
{
            data.Add(new geodaily_model { date = dr["date"].ToString(), net_p = Convert.ToSingle(dr["value"].ToString()) });
}
MLContext mlContext = new MLContext();
var mlData = mlContext.Data.LoadFromEnumerable(data);

下一篇我會介紹用SQL撈的資料去call微軟API做異常偵測。

留言

這個網誌中的熱門文章

Python-相關係數矩陣實作(python-correlation matrix )

ASP.NET-後端將值傳給javascript

ASP.NET-FileUpload上傳後自動觸發button click(FileUpload upload auto trigger button click)