Return-Path: Delivered-To: apmail-lucene-mahout-commits-archive@locus.apache.org Received: (qmail 25164 invoked from network); 9 May 2008 21:36:12 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 9 May 2008 21:36:12 -0000 Received: (qmail 73341 invoked by uid 500); 9 May 2008 21:36:14 -0000 Delivered-To: apmail-lucene-mahout-commits-archive@lucene.apache.org Received: (qmail 73317 invoked by uid 500); 9 May 2008 21:36:14 -0000 Mailing-List: contact mahout-commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: mahout-dev@lucene.apache.org Delivered-To: mailing list mahout-commits@lucene.apache.org Received: (qmail 73306 invoked by uid 99); 9 May 2008 21:36:14 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 09 May 2008 14:36:14 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 09 May 2008 21:35:26 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 8C8702388AA8; Fri, 9 May 2008 14:35:22 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r654943 [9/9] - in /lucene/mahout/trunk/core: ./ lib/ src/main/examples/org/ src/main/examples/org/apache/ src/main/examples/org/apache/mahout/ src/main/examples/org/apache/mahout/cf/ src/main/examples/org/apache/mahout/cf/taste/ src/main/e... Date: Fri, 09 May 2008 21:35:17 -0000 To: mahout-commits@lucene.apache.org From: srowen@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080509213522.8C8702388AA8@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Added: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommenderTest.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommenderTest.java?rev=654943&view=auto ============================================================================== --- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommenderTest.java (added) +++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/recommender/TreeClusteringRecommenderTest.java Fri May 9 14:35:12 2008 @@ -0,0 +1,123 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.mahout.cf.taste.impl.recommender; + +import org.apache.mahout.cf.taste.correlation.UserCorrelation; +import org.apache.mahout.cf.taste.impl.correlation.PearsonCorrelation; +import org.apache.mahout.cf.taste.impl.model.GenericDataModel; +import org.apache.mahout.cf.taste.impl.model.GenericItem; +import org.apache.mahout.cf.taste.impl.TasteTestCase; +import org.apache.mahout.cf.taste.model.DataModel; +import org.apache.mahout.cf.taste.model.Item; +import org.apache.mahout.cf.taste.model.User; +import org.apache.mahout.cf.taste.recommender.RecommendedItem; +import org.apache.mahout.cf.taste.recommender.Recommender; + +import java.util.ArrayList; +import java.util.List; + +/** + *

Tests {@link TreeClusteringRecommender}.

+ */ +public final class TreeClusteringRecommenderTest extends TasteTestCase { + + public void testNoRecommendations() throws Exception { + List users = new ArrayList(3); + users.add(getUser("test1", 0.1)); + users.add(getUser("test2", 0.2, 0.6)); + users.add(getUser("test3", 0.4, 0.9)); + DataModel dataModel = new GenericDataModel(users); + UserCorrelation correlation = new PearsonCorrelation(dataModel); + ClusterSimilarity similarity = new FarthestNeighborClusterSimilarity(correlation); + Recommender recommender = new TreeClusteringRecommender(dataModel, similarity, 2); + List recommended = recommender.recommend("test1", 1); + assertNotNull(recommended); + assertEquals(0, recommended.size()); + } + + public void testHowMany() throws Exception { + List users = new ArrayList(3); + users.add(getUser("test1", 0.1, 0.2)); + users.add(getUser("test2", 0.2, 0.3, 0.3, 0.6)); + users.add(getUser("test3", 0.4, 0.4, 0.5, 0.9)); + users.add(getUser("test4", 0.1, 0.4, 0.5, 0.8, 0.9, 1.0)); + users.add(getUser("test5", 0.2, 0.3, 0.6, 0.7, 0.1, 0.2)); + DataModel dataModel = new GenericDataModel(users); + UserCorrelation correlation = new PearsonCorrelation(dataModel); + ClusterSimilarity similarity = new FarthestNeighborClusterSimilarity(correlation); + Recommender recommender = new TreeClusteringRecommender(dataModel, similarity, 2); + List fewRecommended = recommender.recommend("test1", 2); + List moreRecommended = recommender.recommend("test1", 4); + for (int i = 0; i < fewRecommended.size(); i++) { + assertEquals(fewRecommended.get(i).getItem(), moreRecommended.get(i).getItem()); + } + } + + public void testRescorer() throws Exception { + List users = new ArrayList(3); + users.add(getUser("test1", 0.1, 0.2)); + users.add(getUser("test2", 0.2, 0.3, 0.3, 0.6)); + users.add(getUser("test3", 0.4, 0.4, 0.5, 0.9)); + DataModel dataModel = new GenericDataModel(users); + UserCorrelation correlation = new PearsonCorrelation(dataModel); + ClusterSimilarity similarity = new FarthestNeighborClusterSimilarity(correlation); + Recommender recommender = new TreeClusteringRecommender(dataModel, similarity, 2); + List originalRecommended = recommender.recommend("test1", 2); + List rescoredRecommended = + recommender.recommend("test1", 2, new ReversingRescorer()); + assertNotNull(originalRecommended); + assertNotNull(rescoredRecommended); + assertEquals(2, originalRecommended.size()); + assertEquals(2, rescoredRecommended.size()); + assertEquals(originalRecommended.get(0).getItem(), rescoredRecommended.get(1).getItem()); + assertEquals(originalRecommended.get(1).getItem(), rescoredRecommended.get(0).getItem()); + } + + public void testEstimatePref() throws Exception { + List users = new ArrayList(4); + users.add(getUser("test1", 0.1, 0.3)); + users.add(getUser("test2", 0.2, 0.3, 0.3)); + users.add(getUser("test3", 0.4, 0.3, 0.5)); + users.add(getUser("test4", 0.7, 0.3, 0.8, 0.9)); + DataModel dataModel = new GenericDataModel(users); + UserCorrelation correlation = new PearsonCorrelation(dataModel); + ClusterSimilarity similarity = new FarthestNeighborClusterSimilarity(correlation); + Recommender recommender = new TreeClusteringRecommender(dataModel, similarity, 2); + assertEquals(0.9, recommender.estimatePreference("test3", "3")); + } + + public void testBestRating() throws Exception { + List users = new ArrayList(4); + users.add(getUser("test1", 0.1, 0.3)); + users.add(getUser("test2", 0.2, 0.3, 0.3)); + users.add(getUser("test3", 0.4, 0.3, 0.5)); + users.add(getUser("test4", 0.7, 0.3, 0.8)); + DataModel dataModel = new GenericDataModel(users); + UserCorrelation correlation = new PearsonCorrelation(dataModel); + ClusterSimilarity similarity = new FarthestNeighborClusterSimilarity(correlation); + Recommender recommender = new TreeClusteringRecommender(dataModel, similarity, 2); + List recommended = recommender.recommend("test1", 1); + assertNotNull(recommended); + assertEquals(1, recommended.size()); + RecommendedItem firstRecommended = recommended.get(0); + // item one should be recommended because it has a greater rating/score + assertEquals(new GenericItem("2"), firstRecommended.getItem()); + assertEquals(0.3, firstRecommended.getValue(), EPSILON); + } + +} Added: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/SlopeOneRecommenderTest.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/SlopeOneRecommenderTest.java?rev=654943&view=auto ============================================================================== --- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/SlopeOneRecommenderTest.java (added) +++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/recommender/slopeone/SlopeOneRecommenderTest.java Fri May 9 14:35:12 2008 @@ -0,0 +1,118 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.mahout.cf.taste.impl.recommender.slopeone; + +import org.apache.mahout.cf.taste.common.TasteException; +import org.apache.mahout.cf.taste.impl.model.GenericDataModel; +import org.apache.mahout.cf.taste.impl.model.GenericItem; +import org.apache.mahout.cf.taste.impl.recommender.ReversingRescorer; +import org.apache.mahout.cf.taste.impl.TasteTestCase; +import org.apache.mahout.cf.taste.model.DataModel; +import org.apache.mahout.cf.taste.model.Item; +import org.apache.mahout.cf.taste.model.User; +import org.apache.mahout.cf.taste.recommender.RecommendedItem; +import org.apache.mahout.cf.taste.recommender.Recommender; + +import java.util.ArrayList; +import java.util.List; + +/** + *

Tests {@link SlopeOneRecommender}.

+ */ +public final class SlopeOneRecommenderTest extends TasteTestCase { + + public void testRecommender() throws Exception { + Recommender recommender = buildRecommender(); + List recommended = recommender.recommend("test1", 1); + assertNotNull(recommended); + assertEquals(1, recommended.size()); + RecommendedItem firstRecommended = recommended.get(0); + assertEquals(new GenericItem("2"), firstRecommended.getItem()); + assertEquals(0.34803885284992736, firstRecommended.getValue(), EPSILON); + } + + public void testHowMany() throws Exception { + List users = new ArrayList(3); + users.add(getUser("test1", 0.1, 0.2)); + users.add(getUser("test2", 0.2, 0.3, 0.3, 0.6)); + users.add(getUser("test3", 0.4, 0.4, 0.5, 0.9)); + users.add(getUser("test4", 0.1, 0.4, 0.5, 0.8, 0.9, 1.0)); + users.add(getUser("test5", 0.2, 0.3, 0.6, 0.7, 0.1, 0.2)); + DataModel dataModel = new GenericDataModel(users); + Recommender recommender = new SlopeOneRecommender(dataModel); + List fewRecommended = recommender.recommend("test1", 2); + List moreRecommended = recommender.recommend("test1", 4); + for (int i = 0; i < fewRecommended.size(); i++) { + assertEquals(fewRecommended.get(i).getItem(), moreRecommended.get(i).getItem()); + } + } + + public void testRescorer() throws Exception { + List users = new ArrayList(3); + users.add(getUser("test1", 0.1, 0.2)); + users.add(getUser("test2", 0.2, 0.3, 0.3, 0.6)); + users.add(getUser("test3", 0.4, 0.4, 0.5, 0.9)); + DataModel dataModel = new GenericDataModel(users); + Recommender recommender = new SlopeOneRecommender(dataModel); + List originalRecommended = recommender.recommend("test1", 2); + List rescoredRecommended = + recommender.recommend("test1", 2, new ReversingRescorer()); + assertNotNull(originalRecommended); + assertNotNull(rescoredRecommended); + assertEquals(2, originalRecommended.size()); + assertEquals(2, rescoredRecommended.size()); + assertEquals(originalRecommended.get(0).getItem(), rescoredRecommended.get(1).getItem()); + assertEquals(originalRecommended.get(1).getItem(), rescoredRecommended.get(0).getItem()); + } + + public void testEstimatePref() throws Exception { + Recommender recommender = buildRecommender(); + assertEquals(0.34803885284992736, recommender.estimatePreference("test1", "2"), EPSILON); + } + + public void testBestRating() throws Exception { + List users = new ArrayList(3); + users.add(getUser("test1", 0.0, 0.3)); + users.add(getUser("test2", 0.2, 0.3, 0.3)); + users.add(getUser("test3", 0.4, 0.3, 0.5)); + DataModel dataModel = new GenericDataModel(users); + Recommender recommender = new SlopeOneRecommender(dataModel); + List recommended = recommender.recommend("test1", 1); + assertNotNull(recommended); + assertEquals(1, recommended.size()); + RecommendedItem firstRecommended = recommended.get(0); + // item one should be recommended because it has a greater rating/score + assertEquals(new GenericItem("2"), firstRecommended.getItem()); + assertEquals(0.2400938676203033, firstRecommended.getValue(), EPSILON); + } + + public void testDiffStdevBehavior() throws Exception { + List users = new ArrayList(3); + users.add(getUser("test1", 0.1, 0.2)); + users.add(getUser("test2", 0.2, 0.3, 0.6)); + DataModel dataModel = new GenericDataModel(users); + Recommender recommender = new SlopeOneRecommender(dataModel); + assertEquals(0.5, recommender.estimatePreference("test1", "2"), EPSILON); + } + + private static Recommender buildRecommender() throws TasteException { + DataModel dataModel = new GenericDataModel(getMockUsers()); + return new SlopeOneRecommender(dataModel); + } + +} Added: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/CaseAmplificationTest.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/CaseAmplificationTest.java?rev=654943&view=auto ============================================================================== --- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/CaseAmplificationTest.java (added) +++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/CaseAmplificationTest.java Fri May 9 14:35:12 2008 @@ -0,0 +1,35 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.mahout.cf.taste.impl.transforms; + +/** + *

Tests {@link CaseAmplification}.

+ */ +public final class CaseAmplificationTest extends TransformTestCase { + + public void testOneValue() { + assertEquals(2.0, new CaseAmplification(0.5).transformCorrelation(null, null, 4.0), EPSILON); + assertEquals(-2.0, new CaseAmplification(0.5).transformCorrelation(null, null, -4.0), EPSILON); + } + + public void testRefresh() { + // Make sure this doesn't throw an exception + new CaseAmplification(1.0).refresh(); + } + +} Added: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/InverseUserFrequencyTest.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/InverseUserFrequencyTest.java?rev=654943&view=auto ============================================================================== --- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/InverseUserFrequencyTest.java (added) +++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/InverseUserFrequencyTest.java Fri May 9 14:35:12 2008 @@ -0,0 +1,55 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.mahout.cf.taste.impl.transforms; + +import org.apache.mahout.cf.taste.impl.model.GenericDataModel; +import org.apache.mahout.cf.taste.model.Preference; +import org.apache.mahout.cf.taste.model.User; + +import java.util.ArrayList; +import java.util.List; + +/** + *

Tests {@link InverseUserFrequency}.

+ */ +public final class InverseUserFrequencyTest extends TransformTestCase { + + public void testIUF() { + List users = new ArrayList(5); + users.add(getUser("test1", 0.1)); + users.add(getUser("test2", 0.2, 0.3)); + users.add(getUser("test3", 0.4, 0.5, 0.6)); + users.add(getUser("test4", 0.7, 0.8, 0.9, 1.0)); + users.add(getUser("test5", 1.0, 1.0, 1.0, 1.0, 1.0)); + GenericDataModel dummy = new GenericDataModel(users); + InverseUserFrequency iuf = new InverseUserFrequency(dummy, 10.0); + + User user = dummy.getUser("test5"); + for (int i = 0; i < 5; i++) { + Preference pref = user.getPreferenceFor(String.valueOf(i)); + assertNotNull(pref); + assertEquals(Math.log(5.0 / (double) (5 - i)) / Math.log(iuf.getLogBase()), + iuf.getTransformedValue(pref), + EPSILON); + } + + // Make sure this doesn't throw an exception + iuf.refresh(); + } + +} Added: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/TransformTestCase.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/TransformTestCase.java?rev=654943&view=auto ============================================================================== --- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/TransformTestCase.java (added) +++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/TransformTestCase.java Fri May 9 14:35:12 2008 @@ -0,0 +1,34 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.mahout.cf.taste.impl.transforms; + +import org.apache.mahout.cf.taste.impl.TasteTestCase; +import org.apache.mahout.cf.taste.model.Preference; +import org.apache.mahout.cf.taste.model.User; + +abstract class TransformTestCase extends TasteTestCase { + + static void assertPrefsEquals(User user, double... expected) { + int i = 0; + for (Preference pref : user.getPreferences()) { + assertEquals(expected[i], pref.getValue()); + i++; + } + assertEquals(expected.length, i); + } +} Added: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/ZScoreTest.java URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/ZScoreTest.java?rev=654943&view=auto ============================================================================== --- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/ZScoreTest.java (added) +++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/transforms/ZScoreTest.java Fri May 9 14:35:12 2008 @@ -0,0 +1,62 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.mahout.cf.taste.impl.transforms; + +import org.apache.mahout.cf.taste.model.User; +import org.apache.mahout.cf.taste.transforms.PreferenceTransform2; + +/** + *

Tests {@link ZScore}.

+ */ +public final class ZScoreTest extends TransformTestCase { + + public void testOnePref() throws Exception { + User user = getUser("test", 1.0); + PreferenceTransform2 zScore = new ZScore(); + assertEquals(0.0, zScore.getTransformedValue(user.getPreferenceFor("0")), EPSILON); + } + + public void testAllSame() throws Exception { + User user = getUser("test", 1.0, 1.0, 1.0); + PreferenceTransform2 zScore = new ZScore(); + assertEquals(0.0, zScore.getTransformedValue(user.getPreferenceFor("0")), EPSILON); + assertEquals(0.0, zScore.getTransformedValue(user.getPreferenceFor("1")), EPSILON); + assertEquals(0.0, zScore.getTransformedValue(user.getPreferenceFor("2")), EPSILON); + } + + public void testStdev() throws Exception { + User user = getUser("test", -1.0, -2.0); + PreferenceTransform2 zScore = new ZScore(); + assertEquals(0.707107, zScore.getTransformedValue(user.getPreferenceFor("0")), EPSILON); + assertEquals(-0.707107, zScore.getTransformedValue(user.getPreferenceFor("1")), EPSILON); + } + + public void testExample() throws Exception { + User user = getUser("test", 5.0, 7.0, 9.0); + PreferenceTransform2 zScore = new ZScore(); + assertEquals(-1.0, zScore.getTransformedValue(user.getPreferenceFor("0")), EPSILON); + assertEquals(0.0, zScore.getTransformedValue(user.getPreferenceFor("1")), EPSILON); + assertEquals(1.0, zScore.getTransformedValue(user.getPreferenceFor("2")), EPSILON); + } + + public void testRefresh() { + // Make sure this doesn't throw an exception + new ZScore().refresh(); + } + +} Added: lucene/mahout/trunk/core/taste-build.properties URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/taste-build.properties?rev=654943&view=auto ============================================================================== --- lucene/mahout/trunk/core/taste-build.properties (added) +++ lucene/mahout/trunk/core/taste-build.properties Fri May 9 14:35:12 2008 @@ -0,0 +1,23 @@ +# Temporarily, this ex-Taste build file is separate. Next step is to integrate it. + +version=2.0 + +junit.jar=lib/junit-3.8.2.jar +ejb.jar=lib/ejb-2_1-api.jar +servlet.jar=lib/servlet-api.jar +dbcp.jar=lib/commons-dbcp-1.2.2.jar +pool.jar=lib/commons-pool-1.4.jar + +# These .jars aren't included with the distribution and must be +# manually added +mysql.jar=lib/mysql-connector-java-5.1.6-bin.jar +proguard.jar=lib/proguard.jar +# Should contains Axis2 1.3 or later .jars +axis.jars=lib/axis/ + +# Uncomment this line to disable JDBC tests. +# Alternatively, add "-Dnotestjdbc=true" to your ant command +#notestjdbc=true +# Uncomment this line to disable load tests. +# Alternatively, add "-Dnotestload=true" to your ant command +#notestload=true Added: lucene/mahout/trunk/core/taste-build.xml URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/taste-build.xml?rev=654943&view=auto ============================================================================== --- lucene/mahout/trunk/core/taste-build.xml (added) +++ lucene/mahout/trunk/core/taste-build.xml Fri May 9 14:35:12 2008 @@ -0,0 +1,347 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +