本文整理汇总了C#中Matrix.get方法的典型用法代码示例。如果您正苦于以下问题:C# Matrix.get方法的具体用法?C# Matrix.get怎么用?C# Matrix.get使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix
的用法示例。
在下文中一共展示了Matrix.get方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: multiply
public void multiply(Matrix multipliedMatrix)
{
if (multipliedMatrix.getLength(0) != matrix.GetLength(1))
{
throw new IndexOutOfRangeException();
}
Matrix newMatrix = new Matrix(matrix.GetLength(0), multipliedMatrix.getLength(1));
for (int row = 0; row < matrix.GetLength(0); row++)
{
for (int col = 0; col < multipliedMatrix.getLength(1); col++)
{
int result = 0;
for (int multipliedRow = 0; multipliedRow < matrix.GetLength(1); multipliedRow++)
{
result += matrix[row, multipliedRow] * multipliedMatrix.get(multipliedRow, col);
}
newMatrix.set(row, col, result);
}
}
matrix = newMatrix.getMatrix();
}
示例2: add
public void add(Matrix addedMatrix)
{
if (addedMatrix.getLength(0) != matrix.GetLength(0) &&
addedMatrix.getLength(1) != matrix.GetLength(1))
{
throw new IndexOutOfRangeException();
}
for (int row = 0; row < matrix.GetLength(0); row++)
{
for (int col = 0; col < matrix.GetLength(1); col++)
{
matrix[row, col] += addedMatrix.get(row, col);
}
}
}
示例3: recomputeIntentAdCtr
private static double recomputeIntentAdCtr(int ad, int user, Matrix ad_muid_click, Matrix ad_muid_view, Matrix intent_muid, CF filter)
{
int principalIntent = 0;
double principalScore = double.MinValue;
foreach (int intent in intent_muid.hashMap[user].Keys)
{
double score = intent_muid.get(intent, user);
if (score > principalScore)
{
principalScore = score;
principalIntent = intent;
}
}
double view = 0;
double click = 0;
foreach (int muid in intent_muid.hashMap.Keys)
if (intent_muid.hashMap[muid].ContainsKey(principalIntent))
if (ad_muid_click.contains(ad, muid))
{
view += ad_muid_view.get(ad, muid);
click += ad_muid_click.get(ad, muid);
}
return click / view;
}
示例4: predictUserAdCtr
private static double predictUserAdCtr(int user, int ad, Matrix intent_muid, CF filter)
{
int principalIntent = 0;
double principalScore = double.MinValue;
double ctrSum = 0;
double denom = 0;
foreach (int intent in intent_muid.hashMap[user].Keys)
{
double score = intent_muid.get(intent, user);
//double ctr = filter.predict(intent, ad);
//ctrSum += score * ctr;
//denom += score;
if (score > principalScore)
{
principalScore = score;
principalIntent = intent;
}
}
double rtn = filter.predict(principalIntent, ad);
return rtn;
}
示例5: testFixedBlock
public static double testFixedBlock(int numUsr, int numAd, Matrix ad_muid_click, Matrix ad_muid_view, Matrix intent_muid, CF filter, StreamWriter writer, string outputFile = "C:\\Users\\t-chexia\\Desktop\\blocktest\\blockTestOutput.txt")
{
//StreamWriter writer = new StreamWriter(outputFile, true);
int tries = 10;
double[] apes = new double[tries];
for (int i = 0; i < tries; i++)
{
HashSet<int> userSample = ad_muid_click.randomSubset(numUsr, 1);
HashSet<int> adSample = ad_muid_click.randomSubset(numAd, 0);
double numClick = 0;
double numView = 0;
double numPredictedView = 0;
double numPredictedClick = 0;
foreach (int user in userSample)
{
foreach (int ad in adSample)
{
if (!ad_muid_click.contains(ad, user) || !intent_muid.hashMap.ContainsKey(user))
continue;
numClick += ad_muid_click.get(ad, user);
numView += ad_muid_view.get(ad, user);
double ctr = predictUserAdCtr(user, ad, intent_muid, filter);
if (double.IsNaN(ctr))
continue;
double xview = ad_muid_view.get(ad, user);
double xclick = ad_muid_click.get(ad, user);
numPredictedView += ad_muid_view.get(ad, user);
numPredictedClick += ctr * ad_muid_view.get(ad, user);
//double dummy = recomputeIntentAdCtr(ad, user, ad_muid_click, ad_muid_view, intent_muid, filter);
//if (ad_muid_click.get(ad, user) != 0)
// dummy += 0;
}
}
double trueCTR = numClick / numView;
if (trueCTR == 0)
{
apes[i] = 1;
continue;
}
double predictedCTR = numPredictedClick / numPredictedView;
apes[i] = Math.Abs(trueCTR - predictedCTR) / trueCTR;
if (double.IsNaN(apes[i]))
apes[i] = 1;
Console.WriteLine("iteration:{0}\t trueCTR:{1}\t predictedCTR:{2}\tnumUser:\tnumAd:{4}", i, trueCTR, predictedCTR, numUsr, numAd);
lock (writer)
{
writer.WriteLine("iteration:{0}\t trueCTR:{1}\t predictedCTR:{2}\tnumUser:{3}\tnumAd:{4}", i, trueCTR, predictedCTR, numUsr, numAd);
}
}
double sum = 0;
foreach (double i in apes)
sum += i;
double avg = sum / tries;
Console.WriteLine("avg:{0}\tnumUser:{1}\tnumAd:{2}", avg, numUsr, numAd);
//if (double.IsNaN(avg))
// return 0;
lock (writer)
{
writer.WriteLine("avg:{0}\tnumUser:{1}\tnumAd:{2}", avg, numUsr, numAd);
}
//writer.Close();
return avg;
}
示例6: compSigMatEntries
/* produces signature matrix from original matrix, for compression purposes
* @arguments: takes in the original matrix
*/
private void compSigMatEntries(Matrix utilMat)
{
int[] bandArr = new int[b];
for (int i=0;i<b;i++)
bandArr[i]=i;
Parallel.For<Dictionary<int, Dictionary<int, int>>>(0, b,
() => new Dictionary<int, Dictionary<int, int>>(),
(bandInd, foo, sigMatLocal) =>
{
sigMatLocal[bandInd] = new Dictionary<int, int>();
int[][] currBand = compRandVec(utilMat.GetLength(0));
for (int col = 0; col < this.numSets; col++)
{
string tmpHash = "";
for (int vecInd = 0; vecInd < r; vecInd++)
{
double result = 0;
for (int row = 0; row < utilMat.GetLength(0); row++)
{
if (utilMat.get(row, col) == -1)
continue;
result += currBand[vecInd][row] * utilMat.get(row, col);
}
if (result >= 0)
tmpHash += 1;
else
tmpHash += 0;
}
int hashCode = Convert.ToInt32(tmpHash, 2);
sigMatLocal[bandInd].Add(col, hashCode);
}
return sigMatLocal;
},
(sigMatLocal) =>
{
foreach (int bandInd in sigMatLocal.Keys)
{
foreach (int colInd in sigMatLocal[bandInd].Keys)
{
lock(this.sigMat){
this.sigMat[bandInd].Add(colInd, sigMatLocal[bandInd][colInd]);
}
lock(this.revSigMat){
this.revSigMat[bandInd].Add(sigMatLocal[bandInd][colInd], colInd);
}
}
}
});
}