Exemple #1
0
            if e < 0.001:
                break

        return numpy.dot(UK, KI)

    def mae(self, k):
        snmf = numpy.array(self.matrix_factorization(k))
        self.test_matrix = numpy.zeros(shape=(943, 1682))
        result = 0
        count = 0
        for i in xrange(len(self.testdata_matrix)):
            for j in xrange(len(self.testdata_matrix[i])):
                if self.testdata_matrix[i][j] == 0:
                    continue
                else:
                    self.test_matrix[i][j] = snmf[i][j]
                    count += 1
                    result += abs(self.test_matrix[i][j] -
                                  self.testdata_matrix[i][j])
        return (result / count)


if __name__ == '__main__':
    nmf = NMF('/ml-100k/u.data')
    for k in [10, 20, 30, 40, 50, 60, 70, 80]:
        for m in [1, 2, 3, 4, 5, 6, 7, 8]:
            for seed in [40, 60, 80, 100]:
                nmf.shuffleData(m, seed)
                nmf.matrix_factorization(k)
                maerror += nmf.mae(k)
    print 'The mean absolute error is:', float(maerror / (32 * 8))