def test_train(): """ Test that the classifier correctly extracts all observations from the test dataset. """ #train the classifier data = load_dataset(data_file) cls = TemporalEvidencesClassifier(data.features, data.target_names) cls = cls.fit(data.data, data.target) #load expected sources and their observations from json file expected_sources = sources_from_json(sources_file) #compare expected with actual sources assert_array_equal(sorted(cls.sources.keys()), sorted(expected_sources.keys()),) for name in expected_sources.keys(): assert_source_equal(cls.sources[name], expected_sources[name])
def test_recommend(): """ Test that the classifier generates the correct recommendations for the test dataset. """ #train the classifier and calculate recommendations data = load_dataset(data_file) cls = TemporalEvidencesClassifier(data.features, data.target_names) cls = cls.fit(data.data, data.target) actual_recommendations = cls.predict(data.data, include_conflict_theta=True) #load expected results from json file with open(recommendations_file, 'r') as infile: expected_recommendations = json.load(infile) #compare expected with actual results for actual, expected in zip(actual_recommendations, expected_recommendations): assert_recommendations_equal(actual, expected)
def test_train(): """ Test that the classifier correctly extracts all observations from the test dataset. """ #train the classifier data = load_dataset(data_file) cls = TemporalEvidencesClassifier(data.features, data.target_names) cls = cls.fit(data.data, data.target) #load expected sources and their observations from json file expected_sources = sources_from_json(sources_file) #compare expected with actual sources assert_array_equal( sorted(cls.sources.keys()), sorted(expected_sources.keys()), ) for name in expected_sources.keys(): assert_source_equal(cls.sources[name], expected_sources[name])
import pandas from recsys.classifiers.temporal import TemporalEvidencesClassifier from recsys.dataset import load_dataset from evaluation.metrics import results_as_dataframe from evaluation import plot import config #configuration data = load_dataset("../datasets/houseA.csv", "../datasets/houseA.config") #run the classifier on the whole dataset cls = TemporalEvidencesClassifier(data.features, data.target_names) cls = cls.fit(data.data, data.target) results = cls.predict(data.data, include_conflict_theta=True) #extract conflict and uncertainty and convert recommendations to pandas representation recommendations, conflict, uncertainty = zip(*results) results = results_as_dataframe(data.target, list(recommendations)) #for each row, mark correct recommendations with "1", false recommendations with "0" find_matches_in_row = lambda row: [1 if col == row.name else 0 for col in row] results = results.apply(find_matches_in_row, axis=1) #set uncertainty and conflict as multi-index results.index = pandas.MultiIndex.from_tuples(zip(conflict, uncertainty), names=["Conflict", "Uncertainty"]) #found_within: the correct service was found within X recommendations
sys.path.append("..") import pandas from recsys.classifiers.temporal import TemporalEvidencesClassifier from recsys.classifiers.binning import initialize_bins from recsys.dataset import load_dataset from evaluation import plot import config #configuration data = load_dataset("../datasets/houseA.csv", "../datasets/houseA.config") #fit classifier to dataset cls = TemporalEvidencesClassifier(data.features, data.target_names, bins=initialize_bins(0, 300, 10)) cls = cls.fit(data.data, data.target) #create visualizations of habits around each user action plot_conf = plot.plot_config(config.plot_directory, sub_dirs=[data.name, "habits"], img_type=config.img_type) for source in cls.sources.values(): observations = pandas.DataFrame(source.temporal_counts) observations.columns = data.target_names observations.index = cls.bins plot.plot_observations(source.name(), observations, plot_conf) print "Results can be found in the \"%s\" directory" % config.plot_directory