我正在使用 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