0

我正在使用 svd 算法,并且在我的数据集(书籍交叉)的建议系统中使用冷启动形式。

为了在我的表单中使用 svD 之前利用 MathNet.Numeric 的稀疏性,我在评级表中使用此代码,但我的代码没有读取数据集。

这是我的代码

var arrayOfDoubles = DenseMatrix.OfArray(To2D<double>
(dt1_rating.AsEnumerable().Select(x => new[] { 
 Convert.ToDouble(x[0]) }).ToArray()));
        //Select(x => new[] { Convert.ToDouble(x[0]), 
      Convert.ToDouble(x[1]) }).ToArray()));

        var S = arrayOfDoubles.Svd();
        DataTable dt = new DataTable();
        dt.Clear();
        dt.Columns.Add("USERID");
        dt.Columns.Add("ISBn");
        dt.Columns.Add("BOOKRATING");

        double[,] U = S.VT.ToArray();

        for (int outerIndex = 0; outerIndex < S.VT.RowCount; outerIndex++)
        {


            for (int innerIndex = 0; innerIndex < S.VT.ColumnCount; innerIndex++)
            {
                DataRow newRow = dt.NewRow();
                newRow["USERID"] = U[outerIndex, innerIndex];
                newRow["ISBN"] = U[outerIndex, innerIndex];
                newRow["BOOKRATING"] = U[outerIndex, innerIndex];
                dt.Rows.Add(newRow);

            }

        }
        dt1_rating = dt;///////////////////تا این جا

这是我的错误

对象不能从 DbNull 转换为其他类型或 System Invalid CastExceptions

4

0 回答 0