我正在使用svd算法,我在我的数据集(book crosing)中的建议系统中使用coldstart表单。
在我的表单中使用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转换为其他类型 或系统无效的CastExceptions