summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Dyer <cdyer@cs.cmu.edu>2012-05-13 22:20:06 -0700
committerChris Dyer <cdyer@cs.cmu.edu>2012-05-13 22:20:06 -0700
commit076d48d459ecbf366b0a59ab6afe68af99bdcff2 (patch)
treedec0135699d4944ed8f51a9477e0c33a54ff64f5
parent7001792f10cb17d88ed2d4c58364b6304bbd0816 (diff)
eval stuff for creg, test data from ark regression
-rw-r--r--Makefile.am2
-rw-r--r--configure.ac2
-rw-r--r--creg/README18
-rw-r--r--creg/creg.cc60
-rw-r--r--creg/json_feature_map_lexer.ll2
-rw-r--r--creg/test_data/auto-mpg.testfeat93
-rw-r--r--creg/test_data/auto-mpg.testresp93
-rw-r--r--creg/test_data/auto-mpg.trainfeat300
-rw-r--r--creg/test_data/auto-mpg.trainresp300
9 files changed, 858 insertions, 12 deletions
diff --git a/Makefile.am b/Makefile.am
index ea5e2b3f..0e08ee72 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,7 @@
# warning - the subdirectories in the following list should
# be kept in topologically sorted order. Also, DO NOT introduce
# cyclic dependencies between these directories!
-SUBDIRS = utils mteval klm/util klm/lm decoder phrasinator training training/liblbfgs mira dtrain dpmert pro-train rampion extools gi/pf gi/markov_al rst_parser
+SUBDIRS = utils mteval klm/util klm/lm decoder phrasinator training training/liblbfgs creg mira dtrain dpmert pro-train rampion extools gi/pf gi/markov_al rst_parser
#gi/pyp-topics/src gi/clda/src gi/posterior-regularisation/prjava
diff --git a/configure.ac b/configure.ac
index 849b100b..1e853fb6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -130,4 +130,4 @@ then
AM_CONDITIONAL([GLC], true)
fi
-AC_OUTPUT(Makefile rst_parser/Makefile utils/Makefile mteval/Makefile extools/Makefile decoder/Makefile phrasinator/Makefile training/Makefile training/liblbfgs/Makefile dpmert/Makefile pro-train/Makefile rampion/Makefile klm/util/Makefile klm/lm/Makefile mira/Makefile dtrain/Makefile gi/pyp-topics/src/Makefile gi/clda/src/Makefile gi/pf/Makefile gi/markov_al/Makefile)
+AC_OUTPUT(Makefile rst_parser/Makefile utils/Makefile mteval/Makefile extools/Makefile decoder/Makefile phrasinator/Makefile training/Makefile training/liblbfgs/Makefile creg/Makefile dpmert/Makefile pro-train/Makefile rampion/Makefile klm/util/Makefile klm/lm/Makefile mira/Makefile dtrain/Makefile gi/pyp-topics/src/Makefile gi/clda/src/Makefile gi/pf/Makefile gi/markov_al/Makefile)
diff --git a/creg/README b/creg/README
index 2c04c83b..28a71d11 100644
--- a/creg/README
+++ b/creg/README
@@ -1,7 +1,17 @@
creg is a fast tool for training linear and logistic regression models with
-l_1 and l_2 regularization. Its data (feature and response) format is compatible
-with ARKRegression.
+l_1 and l_2 regularization. Its data (feature and response) format is
+compatible with ARKRegression.
-Example invokation:
-$ ./creg -x test_data/iris.trainfeat -y test_data/iris.trainresp --l2 100
+EXAMPLES
+
+Logistic regression example (training only):
+ $ ./creg -x test_data/iris.trainfeat -y test_data/iris.trainresp --l1 1.0 > weights.txt
+
+Logistic regression example (training and testing):
+ $ ./creg -x test_data/iris.trainfeat -y test_data/iris.trainresp --l1 1.0 \
+ -t test_data/iris.testfeat -s test_data/iris.testresp > weights.txt
+
+Linear regression example (training and testing):
+ $ ./creg -n -x test_data/auto-mpg.trainfeat -y test_data/auto-mpg.trainresp --l2 1000 \
+ -t test_data/auto-mpg.testfeat -s test_data/auto-mpg.testresp > weights.txt
diff --git a/creg/creg.cc b/creg/creg.cc
index 43f01bc4..005ec9ac 100644
--- a/creg/creg.cc
+++ b/creg/creg.cc
@@ -2,6 +2,8 @@
#include <iostream>
#include <vector>
#include <tr1/unordered_map>
+#include <limits>
+#include <cmath>
#include <boost/program_options.hpp>
#include <boost/program_options/variables_map.hpp>
@@ -25,6 +27,8 @@ void InitCommandLine(int argc, char** argv, po::variables_map* conf) {
("linear,n", "Linear (rather than logistic) regression")
("l1",po::value<double>()->default_value(0.0), "l_1 regularization strength")
("l2",po::value<double>()->default_value(0.0), "l_2 regularization strength")
+ ("test_features,t", po::value<string>(), "File containing training instance features (ARKRegression format)")
+ ("test_responses,s", po::value<string>(), "File containing training response features (ARKRegression format)")
("weights,w", po::value<string>(), "Initial weights")
("epsilon,e", po::value<double>()->default_value(1e-4), "Epsilon for convergence test. Terminates when ||g|| < epsilon * max(1, ||w||)")
("memory_buffers,m",po::value<unsigned>()->default_value(40), "Number of memory buffers for LBFGS")
@@ -77,7 +81,7 @@ void ReadLabeledInstances(const string& ffeats,
int lc = 0;
ReaderHelper rh(xy_pairs);
unordered_map<string, unsigned> label2id;
- cerr << "Reading training responses from " << fresp << " ..." << endl;
+ cerr << "Reading responses from " << fresp << " ..." << endl;
ReadFile fr(fresp);
for (unsigned i = 0; i < labels->size(); ++i)
label2id[(*labels)[i]] = i;
@@ -116,7 +120,7 @@ void ReadLabeledInstances(const string& ffeats,
cerr << " " << (*labels)[j];
cerr << endl;
}
- cerr << "Reading training features from " << ffeats << " ..." << endl;
+ cerr << "Reading features from " << ffeats << " ..." << endl;
ReadFile ff(ffeats);
JSONFeatureMapLexer::ReadRules(ff.stream(), ReaderCB, &rh);
if (rh.flag) cerr << endl;
@@ -204,6 +208,23 @@ struct UnivariateSquaredLoss : public BaseLoss {
double reg = ApplyRegularizationTerms(x, g);
return cll + reg;
}
+
+ // return root mse
+ double Evaluate(const vector<TrainingInstance>& test,
+ const vector<double>& w) const {
+ vector<double> dotprods(1); // K-1 degrees of freedom
+ double mse = 0;
+ for (unsigned i = 0; i < test.size(); ++i) {
+ const SparseVector<float>& fmapx = test[i].x;
+ const float refy = test[i].y.value;
+ ComputeDotProducts(fmapx, w, &dotprods);
+ double diff = dotprods[0] - refy;
+ cerr << "line=" << (i+1) << " true=" << refy << " pred=" << dotprods[0] << endl;
+ mse += diff * diff;
+ }
+ mse /= test.size();
+ return sqrt(mse);
+ }
};
struct MulticlassLogLoss : public BaseLoss {
@@ -243,6 +264,23 @@ struct MulticlassLogLoss : public BaseLoss {
double reg = ApplyRegularizationTerms(x, g);
return cll + reg;
}
+
+ double Evaluate(const vector<TrainingInstance>& test,
+ const vector<double>& w) const {
+ vector<double> dotprods(K - 1); // K-1 degrees of freedom
+ double correct = 0;
+ for (unsigned i = 0; i < test.size(); ++i) {
+ const SparseVector<float>& fmapx = test[i].x;
+ const unsigned refy = test[i].y.label;
+ ComputeDotProducts(fmapx, w, &dotprods);
+ double best = 0;
+ unsigned besty = dotprods.size();
+ for (unsigned y = 0; y < dotprods.size(); ++y)
+ if (dotprods[y] > best) { best = dotprods[y]; besty = y; }
+ if (refy == besty) { ++correct; }
+ }
+ return correct / test.size();
+ }
};
template <class LossFunction>
@@ -261,9 +299,6 @@ int main(int argc, char** argv) {
po::variables_map conf;
InitCommandLine(argc, argv, &conf);
string line;
- vector<TrainingInstance> training;
- const string xfile = conf["training_features"].as<string>();
- const string yfile = conf["training_responses"].as<string>();
double l1 = conf["l1"].as<double>();
double l2 = conf["l2"].as<double>();
const unsigned memory_buffers = conf["memory_buffers"].as<unsigned>();
@@ -278,8 +313,16 @@ int main(int argc, char** argv) {
}
const bool is_continuous = conf.count("linear");
+ const string xfile = conf["training_features"].as<string>();
+ const string yfile = conf["training_responses"].as<string>();
vector<string> labels; // only populated for non-continuous models
+ vector<TrainingInstance> training, test;
ReadLabeledInstances(xfile, yfile, is_continuous, &training, &labels);
+ if (conf.count("test_features")) {
+ const string txfile = conf["test_features"].as<string>();
+ const string tyfile = conf["test_responses"].as<string>();
+ ReadLabeledInstances(txfile, tyfile, is_continuous, &test, &labels);
+ }
if (conf.count("weights")) {
cerr << "Initial weights are not implemented, please implement." << endl;
@@ -298,6 +341,10 @@ int main(int argc, char** argv) {
cerr << " Number of parameters: " << weights.size() << endl;
UnivariateSquaredLoss loss(training, p, l2);
LearnParameters(loss, l1, 1, memory_buffers, epsilon, &weights);
+
+ if (test.size())
+ cerr << "Held-out root MSE: " << loss.Evaluate(test, weights) << endl;
+
cout << p << "\t***CONTINUOUS***" << endl;
cout << "***BIAS***\t" << weights[0] << endl;
for (unsigned f = 0; f < p; ++f) {
@@ -314,6 +361,9 @@ int main(int argc, char** argv) {
MulticlassLogLoss loss(training, K, p, l2);
LearnParameters(loss, l1, km1, memory_buffers, epsilon, &weights);
+ if (test.size())
+ cerr << "Held-out accuracy: " << loss.Evaluate(test, weights) << endl;
+
cout << p << "\t***CATEGORICAL***";
for (unsigned y = 0; y < K; ++y)
cout << '\t' << labels[y];
diff --git a/creg/json_feature_map_lexer.ll b/creg/json_feature_map_lexer.ll
index 372b52f5..cbb6d9a9 100644
--- a/creg/json_feature_map_lexer.ll
+++ b/creg/json_feature_map_lexer.ll
@@ -61,7 +61,7 @@ inline unsigned unicode_escape_to_utf8(uint16_t w1, uint16_t w2, char* putf8) {
%}
-ID [A-Za-z_0-9]+
+ID [^ \t\n\r]+
HEX_D [a-fA-F0-9]
INT [-]?[0-9]+
DOUBLE {INT}((\.[0-9]+)?([eE][-+]?[0-9]+)?)
diff --git a/creg/test_data/auto-mpg.testfeat b/creg/test_data/auto-mpg.testfeat
new file mode 100644
index 00000000..91c21e99
--- /dev/null
+++ b/creg/test_data/auto-mpg.testfeat
@@ -0,0 +1,93 @@
+test1_fiat_124b {"horsepower": 76.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 88.0, "weight": 2065.0}
+test2_dodge_aspen {"horsepower": 110.0, "acceleration": 18.7, "cylinders": 6.0, "displacement": 225.0, "weight": 3620.0}
+test3_toyota_celica_gt_liftback {"horsepower": 95.0, "acceleration": 14.8, "cylinders": 4.0, "displacement": 134.0, "weight": 2515.0}
+test4_amc_matador {"horsepower": 110.0, "acceleration": 18.0, "cylinders": 6.0, "displacement": 258.0, "weight": 3632.0}
+test5_audi_5000s_(diesel) {"horsepower": 67.0, "acceleration": 19.9, "cylinders": 5.0, "displacement": 121.0, "weight": 2950.0}
+test6_datsun_310 {"horsepower": 65.0, "acceleration": 16.4, "cylinders": 4.0, "displacement": 86.0, "weight": 2019.0}
+test7_chevrolet_woody {"horsepower": 60.0, "acceleration": 22.1, "cylinders": 4.0, "displacement": 98.0, "weight": 2164.0}
+test8_volkswagen_1131_deluxe_sedan {"horsepower": 46.0, "acceleration": 20.5, "cylinders": 4.0, "displacement": 97.0, "weight": 1835.0}
+test9_plymouth_satellite_sebring {"horsepower": 105.0, "acceleration": 16.5, "cylinders": 6.0, "displacement": 225.0, "weight": 3613.0}
+test10_amc_matador {"horsepower": 120.0, "acceleration": 13.9, "cylinders": 8.0, "displacement": 304.0, "weight": 3962.0}
+test11_chevrolet_chevette {"horsepower": 52.0, "acceleration": 22.2, "cylinders": 4.0, "displacement": 85.0, "weight": 2035.0}
+test12_buick_century_special {"horsepower": 105.0, "acceleration": 15.8, "cylinders": 6.0, "displacement": 231.0, "weight": 3380.0}
+test13_ford_escort_2h {"horsepower": 65.0, "acceleration": 20.7, "cylinders": 4.0, "displacement": 98.0, "weight": 2380.0}
+test14_ford_torino_500 {"horsepower": 88.0, "acceleration": 15.5, "cylinders": 6.0, "displacement": 250.0, "weight": 3302.0}
+test15_dodge_aries_wagon_(sw) {"horsepower": 92.0, "acceleration": 14.4, "cylinders": 4.0, "displacement": 156.0, "weight": 2620.0}
+test16_plymouth_valiant {"horsepower": 105.0, "acceleration": 16.5, "cylinders": 6.0, "displacement": 225.0, "weight": 3121.0}
+test17_amc_pacer {"horsepower": 90.0, "acceleration": 17.0, "cylinders": 6.0, "displacement": 232.0, "weight": 3211.0}
+test18_honda_civic {"horsepower": 97.0, "acceleration": 15.0, "cylinders": 4.0, "displacement": 120.0, "weight": 2489.0}
+test19_ford_ltd {"horsepower": 148.0, "acceleration": 13.5, "cylinders": 8.0, "displacement": 351.0, "weight": 4657.0}
+test20_volkswagen_rabbit {"horsepower": 70.0, "acceleration": 14.0, "cylinders": 4.0, "displacement": 90.0, "weight": 1937.0}
+test21_honda_civic_1500_gl {"horsepower": 67.0, "acceleration": 13.8, "cylinders": 4.0, "displacement": 91.0, "weight": 1850.0}
+test22_chevrolet_impala {"horsepower": 165.0, "acceleration": 12.0, "cylinders": 8.0, "displacement": 350.0, "weight": 4209.0}
+test23_chevrolet_chevette {"horsepower": 63.0, "acceleration": 17.0, "cylinders": 4.0, "displacement": 98.0, "weight": 2051.0}
+test24_amc_concord {"horsepower": 90.0, "acceleration": 17.2, "cylinders": 6.0, "displacement": 232.0, "weight": 3210.0}
+test25_ford_pinto {"horsepower": 83.0, "acceleration": 17.0, "cylinders": 4.0, "displacement": 140.0, "weight": 2639.0}
+test26_ford_country_squire_(sw) {"horsepower": 142.0, "acceleration": 14.3, "cylinders": 8.0, "displacement": 351.0, "weight": 4054.0}
+test27_plymouth_valiant_custom {"horsepower": 95.0, "acceleration": 16.0, "cylinders": 6.0, "displacement": 225.0, "weight": 3264.0}
+test28_chevy_s-10 {"horsepower": 82.0, "acceleration": 19.4, "cylinders": 4.0, "displacement": 119.0, "weight": 2720.0}
+test29_maxda_rx3 {"horsepower": 90.0, "acceleration": 13.5, "cylinders": 3.0, "displacement": 70.0, "weight": 2124.0}
+test30_plymouth_sapporo {"horsepower": 105.0, "acceleration": 16.7, "cylinders": 4.0, "displacement": 156.0, "weight": 2745.0}
+test31_amc_hornet {"horsepower": 90.0, "acceleration": 17.6, "cylinders": 6.0, "displacement": 232.0, "weight": 3085.0}
+test32_chevrolet_caprice_classic {"horsepower": 145.0, "acceleration": 12.5, "cylinders": 8.0, "displacement": 305.0, "weight": 3880.0}
+test33_pontiac_sunbird_coupe {"horsepower": 88.0, "acceleration": 16.0, "cylinders": 4.0, "displacement": 151.0, "weight": 2740.0}
+test34_mercury_marquis_brougham {"horsepower": 198.0, "acceleration": 11.5, "cylinders": 8.0, "displacement": 429.0, "weight": 4952.0}
+test35_mercury_monarch_ghia {"horsepower": 139.0, "acceleration": 12.8, "cylinders": 8.0, "displacement": 302.0, "weight": 3570.0}
+test36_ford_country_squire_(sw) {"horsepower": 170.0, "acceleration": 12.0, "cylinders": 8.0, "displacement": 400.0, "weight": 4746.0}
+test37_audi_fox {"horsepower": 83.0, "acceleration": 16.5, "cylinders": 4.0, "displacement": 98.0, "weight": 2219.0}
+test38_triumph_tr7_coupe {"horsepower": 88.0, "acceleration": 15.1, "cylinders": 4.0, "displacement": 122.0, "weight": 2500.0}
+test39_dodge_d100 {"horsepower": 150.0, "acceleration": 14.0, "cylinders": 8.0, "displacement": 318.0, "weight": 3755.0}
+test40_mercury_cougar_brougham {"horsepower": 130.0, "acceleration": 14.9, "cylinders": 8.0, "displacement": 302.0, "weight": 4295.0}
+test41_pontiac_phoenix_lj {"horsepower": 105.0, "acceleration": 19.2, "cylinders": 6.0, "displacement": 231.0, "weight": 3535.0}
+test42_vw_rabbit_custom {"horsepower": 71.0, "acceleration": 14.0, "cylinders": 4.0, "displacement": 89.0, "weight": 1925.0}
+test43_peugeot_504 {"horsepower": 87.0, "acceleration": 17.5, "cylinders": 4.0, "displacement": 110.0, "weight": 2672.0}
+test44_datsun_310_gx {"horsepower": 67.0, "acceleration": 16.2, "cylinders": 4.0, "displacement": 91.0, "weight": 1995.0}
+test45_dodge_monaco_(sw) {"horsepower": 180.0, "acceleration": 11.5, "cylinders": 8.0, "displacement": 383.0, "weight": 4955.0}
+test46_chevrolet_monza_2+2 {"horsepower": 110.0, "acceleration": 13.5, "cylinders": 8.0, "displacement": 262.0, "weight": 3221.0}
+test47_capri_ii {"horsepower": 92.0, "acceleration": 14.9, "cylinders": 4.0, "displacement": 140.0, "weight": 2572.0}
+test48_mazda_rx2_coupe {"horsepower": 97.0, "acceleration": 13.5, "cylinders": 3.0, "displacement": 70.0, "weight": 2330.0}
+test49_plymouth_fury {"horsepower": 95.0, "acceleration": 19.0, "cylinders": 6.0, "displacement": 225.0, "weight": 3785.0}
+test50_plymouth_fury_iii {"horsepower": 215.0, "acceleration": 8.5, "cylinders": 8.0, "displacement": 440.0, "weight": 4312.0}
+test51_dodge_st._regis {"horsepower": 135.0, "acceleration": 15.2, "cylinders": 8.0, "displacement": 318.0, "weight": 3830.0}
+test52_amc_spirit_dl {"horsepower": 80.0, "acceleration": 15.0, "cylinders": 4.0, "displacement": 121.0, "weight": 2670.0}
+test53_peugeot_504_(sw) {"horsepower": 87.0, "acceleration": 19.5, "cylinders": 4.0, "displacement": 120.0, "weight": 2979.0}
+test54_chevroelt_chevelle_malibu {"horsepower": 105.0, "acceleration": 18.5, "cylinders": 6.0, "displacement": 250.0, "weight": 3897.0}
+test55_opel_1900 {"horsepower": 90.0, "acceleration": 14.0, "cylinders": 4.0, "displacement": 116.0, "weight": 2123.0}
+test56_dodge_challenger_se {"horsepower": 170.0, "acceleration": 10.0, "cylinders": 8.0, "displacement": 383.0, "weight": 3563.0}
+test57_vw_pickup {"horsepower": 52.0, "acceleration": 24.6, "cylinders": 4.0, "displacement": 97.0, "weight": 2130.0}
+test58_peugeot_604sl {"horsepower": 133.0, "acceleration": 15.8, "cylinders": 6.0, "displacement": 163.0, "weight": 3410.0}
+test59_mazda_glc_4 {"horsepower": 68.0, "acceleration": 16.0, "cylinders": 4.0, "displacement": 91.0, "weight": 1985.0}
+test60_audi_4000 {"horsepower": 78.0, "acceleration": 15.8, "cylinders": 4.0, "displacement": 97.0, "weight": 2188.0}
+test61_plymouth_duster {"horsepower": 95.0, "acceleration": 16.5, "cylinders": 6.0, "displacement": 198.0, "weight": 3102.0}
+test62_dodge_magnum_xe {"horsepower": 140.0, "acceleration": 13.7, "cylinders": 8.0, "displacement": 318.0, "weight": 4080.0}
+test63_buick_century_limited {"horsepower": 110.0, "acceleration": 16.4, "cylinders": 6.0, "displacement": 181.0, "weight": 2945.0}
+test64_chevrolet_monte_carlo_s {"horsepower": 145.0, "acceleration": 13.0, "cylinders": 8.0, "displacement": 350.0, "weight": 4082.0}
+test65_amc_matador {"horsepower": 150.0, "acceleration": 11.5, "cylinders": 8.0, "displacement": 304.0, "weight": 3672.0}
+test66_honda_accord {"horsepower": 75.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 107.0, "weight": 2205.0}
+test67_plymouth_volare {"horsepower": 100.0, "acceleration": 17.2, "cylinders": 6.0, "displacement": 225.0, "weight": 3430.0}
+test68_ford_galaxie_500 {"horsepower": 198.0, "acceleration": 10.0, "cylinders": 8.0, "displacement": 429.0, "weight": 4341.0}
+test69_chevrolet_citation {"horsepower": 110.0, "acceleration": 12.6, "cylinders": 6.0, "displacement": 173.0, "weight": 2725.0}
+test70_amc_ambassador_sst {"horsepower": 150.0, "acceleration": 11.5, "cylinders": 8.0, "displacement": 304.0, "weight": 3672.0}
+test71_ford_thunderbird {"horsepower": 149.0, "acceleration": 14.5, "cylinders": 8.0, "displacement": 351.0, "weight": 4335.0}
+test72_pontiac_phoenix {"horsepower": 90.0, "acceleration": 13.2, "cylinders": 4.0, "displacement": 151.0, "weight": 2556.0}
+test73_vw_rabbit {"horsepower": 76.0, "acceleration": 14.7, "cylinders": 4.0, "displacement": 98.0, "weight": 2144.0}
+test74_bmw_2002 {"horsepower": 113.0, "acceleration": 12.5, "cylinders": 4.0, "displacement": 121.0, "weight": 2234.0}
+test75_dodge_colt {"horsepower": 105.0, "acceleration": 14.4, "cylinders": 4.0, "displacement": 156.0, "weight": 2800.0}
+test76_mercury_capri_2000 {"horsepower": 86.0, "acceleration": 14.0, "cylinders": 4.0, "displacement": 122.0, "weight": 2220.0}
+test77_ford_galaxie_500 {"horsepower": 153.0, "acceleration": 13.5, "cylinders": 8.0, "displacement": 351.0, "weight": 4154.0}
+test78_volkswagen_rabbit_custom_diesel {"horsepower": 48.0, "acceleration": 21.5, "cylinders": 4.0, "displacement": 90.0, "weight": 1985.0}
+test79_dodge_aspen_se {"horsepower": 100.0, "acceleration": 17.7, "cylinders": 6.0, "displacement": 225.0, "weight": 3651.0}
+test80_mazda_glc_deluxe {"horsepower": 52.0, "acceleration": 19.4, "cylinders": 4.0, "displacement": 78.0, "weight": 1985.0}
+test81_mazda_glc_custom {"horsepower": 68.0, "acceleration": 17.6, "cylinders": 4.0, "displacement": 91.0, "weight": 1970.0}
+test82_audi_100ls {"horsepower": 91.0, "acceleration": 14.0, "cylinders": 4.0, "displacement": 114.0, "weight": 2582.0}
+test83_oldsmobile_delta_88_royale {"horsepower": 160.0, "acceleration": 13.5, "cylinders": 8.0, "displacement": 350.0, "weight": 4456.0}
+test84_ford_gran_torino {"horsepower": 137.0, "acceleration": 14.5, "cylinders": 8.0, "displacement": 302.0, "weight": 4042.0}
+test85_plymouth_cricket {"horsepower": 70.0, "acceleration": 20.5, "cylinders": 4.0, "displacement": 91.0, "weight": 1955.0}
+test86_plymouth_fury_iii {"horsepower": 150.0, "acceleration": 13.0, "cylinders": 8.0, "displacement": 318.0, "weight": 4096.0}
+test87_plymouth_horizon {"horsepower": 70.0, "acceleration": 13.2, "cylinders": 4.0, "displacement": 105.0, "weight": 2200.0}
+test88_peugeot_504 {"horsepower": 88.0, "acceleration": 21.9, "cylinders": 4.0, "displacement": 120.0, "weight": 3270.0}
+test89_dodge_dart_custom {"horsepower": 150.0, "acceleration": 11.0, "cylinders": 8.0, "displacement": 318.0, "weight": 3399.0}
+test90_pontiac_j2000_se_hatchback {"horsepower": 85.0, "acceleration": 16.2, "cylinders": 4.0, "displacement": 112.0, "weight": 2575.0}
+test91_toyota_starlet {"horsepower": 58.0, "acceleration": 16.9, "cylinders": 4.0, "displacement": 79.0, "weight": 1755.0}
+test92_mazda_glc_custom_l {"horsepower": 68.0, "acceleration": 18.2, "cylinders": 4.0, "displacement": 91.0, "weight": 2025.0}
+test93_fiat_124_tc {"horsepower": 75.0, "acceleration": 14.0, "cylinders": 4.0, "displacement": 116.0, "weight": 2246.0}
diff --git a/creg/test_data/auto-mpg.testresp b/creg/test_data/auto-mpg.testresp
new file mode 100644
index 00000000..4f2cad37
--- /dev/null
+++ b/creg/test_data/auto-mpg.testresp
@@ -0,0 +1,93 @@
+test1_fiat_124b 30.0
+test2_dodge_aspen 18.6
+test3_toyota_celica_gt_liftback 21.1
+test4_amc_matador 16.0
+test5_audi_5000s_(diesel) 36.4
+test6_datsun_310 37.2
+test7_chevrolet_woody 24.5
+test8_volkswagen_1131_deluxe_sedan 26.0
+test9_plymouth_satellite_sebring 18.0
+test10_amc_matador 15.5
+test11_chevrolet_chevette 29.0
+test12_buick_century_special 20.6
+test13_ford_escort_2h 29.9
+test14_ford_torino_500 19.0
+test15_dodge_aries_wagon_(sw) 25.8
+test16_plymouth_valiant 18.0
+test17_amc_pacer 19.0
+test18_honda_civic 24.0
+test19_ford_ltd 14.0
+test20_volkswagen_rabbit 29.0
+test21_honda_civic_1500_gl 44.6
+test22_chevrolet_impala 14.0
+test23_chevrolet_chevette 30.5
+test24_amc_concord 19.4
+test25_ford_pinto 23.0
+test26_ford_country_squire_(sw) 15.5
+test27_plymouth_valiant_custom 19.0
+test28_chevy_s-10 31.0
+test29_maxda_rx3 18.0
+test30_plymouth_sapporo 23.2
+test31_amc_hornet 22.5
+test32_chevrolet_caprice_classic 17.5
+test33_pontiac_sunbird_coupe 24.5
+test34_mercury_marquis_brougham 12.0
+test35_mercury_monarch_ghia 20.2
+test36_ford_country_squire_(sw) 13.0
+test37_audi_fox 29.0
+test38_triumph_tr7_coupe 35.0
+test39_dodge_d100 13.0
+test40_mercury_cougar_brougham 15.0
+test41_pontiac_phoenix_lj 19.2
+test42_vw_rabbit_custom 31.9
+test43_peugeot_504 25.0
+test44_datsun_310_gx 38.0
+test45_dodge_monaco_(sw) 12.0
+test46_chevrolet_monza_2+2 20.0
+test47_capri_ii 25.0
+test48_mazda_rx2_coupe 19.0
+test49_plymouth_fury 18.0
+test50_plymouth_fury_iii 14.0
+test51_dodge_st._regis 18.2
+test52_amc_spirit_dl 27.4
+test53_peugeot_504_(sw) 21.0
+test54_chevroelt_chevelle_malibu 16.0
+test55_opel_1900 28.0
+test56_dodge_challenger_se 15.0
+test57_vw_pickup 44.0
+test58_peugeot_604sl 16.2
+test59_mazda_glc_4 34.1
+test60_audi_4000 34.3
+test61_plymouth_duster 20.0
+test62_dodge_magnum_xe 17.5
+test63_buick_century_limited 25.0
+test64_chevrolet_monte_carlo_s 15.0
+test65_amc_matador 14.0
+test66_honda_accord 36.0
+test67_plymouth_volare 20.5
+test68_ford_galaxie_500 15.0
+test69_chevrolet_citation 23.5
+test70_amc_ambassador_sst 17.0
+test71_ford_thunderbird 16.0
+test72_pontiac_phoenix 33.5
+test73_vw_rabbit 41.5
+test74_bmw_2002 26.0
+test75_dodge_colt 27.9
+test76_mercury_capri_2000 23.0
+test77_ford_galaxie_500 14.0
+test78_volkswagen_rabbit_custom_diesel 43.1
+test79_dodge_aspen_se 20.0
+test80_mazda_glc_deluxe 32.8
+test81_mazda_glc_custom 31.0
+test82_audi_100ls 20.0
+test83_oldsmobile_delta_88_royale 12.0
+test84_ford_gran_torino 14.0
+test85_plymouth_cricket 26.0
+test86_plymouth_fury_iii 14.0
+test87_plymouth_horizon 34.2
+test88_peugeot_504 19.0
+test89_dodge_dart_custom 15.0
+test90_pontiac_j2000_se_hatchback 31.0
+test91_toyota_starlet 39.1
+test92_mazda_glc_custom_l 37.0
+test93_fiat_124_tc 26.0
diff --git a/creg/test_data/auto-mpg.trainfeat b/creg/test_data/auto-mpg.trainfeat
new file mode 100644
index 00000000..20b87d3f
--- /dev/null
+++ b/creg/test_data/auto-mpg.trainfeat
@@ -0,0 +1,300 @@
+train1_buick_century_350 {"horsepower": 175.0, "acceleration": 13.0, "cylinders": 8.0, "displacement": 350.0, "weight": 4100.0}
+train2_audi_100_ls {"horsepower": 90.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 107.0, "weight": 2430.0}
+train3_chrysler_newport_royal {"horsepower": 190.0, "acceleration": 12.5, "cylinders": 8.0, "displacement": 400.0, "weight": 4422.0}
+train4_mercury_zephyr_6 {"horsepower": 85.0, "acceleration": 18.2, "cylinders": 6.0, "displacement": 200.0, "weight": 2990.0}
+train5_volkswagen_model_111 {"horsepower": 60.0, "acceleration": 19.0, "cylinders": 4.0, "displacement": 97.0, "weight": 1834.0}
+train6_dodge_monaco_brougham {"horsepower": 145.0, "acceleration": 13.7, "cylinders": 8.0, "displacement": 318.0, "weight": 4140.0}
+train7_mercedes-benz_240d {"horsepower": 67.0, "acceleration": 21.8, "cylinders": 4.0, "displacement": 146.0, "weight": 3250.0}
+train8_datsun_510_(sw) {"horsepower": 92.0, "acceleration": 17.0, "cylinders": 4.0, "displacement": 97.0, "weight": 2288.0}
+train9_opel_manta {"horsepower": 75.0, "acceleration": 15.5, "cylinders": 4.0, "displacement": 116.0, "weight": 2158.0}
+train10_renault_12_(sw) {"horsepower": 69.0, "acceleration": 18.0, "cylinders": 4.0, "displacement": 96.0, "weight": 2189.0}
+train11_chevrolet_nova {"horsepower": 100.0, "acceleration": 17.0, "cylinders": 6.0, "displacement": 250.0, "weight": 3336.0}
+train12_plymouth_arrow_gs {"horsepower": 96.0, "acceleration": 15.5, "cylinders": 4.0, "displacement": 122.0, "weight": 2300.0}
+train13_toyota_mark_ii {"horsepower": 108.0, "acceleration": 15.5, "cylinders": 6.0, "displacement": 156.0, "weight": 2930.0}
+train14_chevrolet_caprice_classic {"horsepower": 150.0, "acceleration": 12.0, "cylinders": 8.0, "displacement": 400.0, "weight": 4464.0}
+train15_ford_maverick {"horsepower": 88.0, "acceleration": 16.5, "cylinders": 6.0, "displacement": 250.0, "weight": 3021.0}
+train16_pontiac_lemans_v6 {"horsepower": 115.0, "acceleration": 15.4, "cylinders": 6.0, "displacement": 231.0, "weight": 3245.0}
+train17_ford_granada_gl {"horsepower": 88.0, "acceleration": 17.1, "cylinders": 6.0, "displacement": 200.0, "weight": 3060.0}
+train18_chevrolet_monte_carlo_landau {"horsepower": 170.0, "acceleration": 11.4, "cylinders": 8.0, "displacement": 350.0, "weight": 4165.0}
+train19_subaru {"horsepower": 93.0, "acceleration": 15.5, "cylinders": 4.0, "displacement": 108.0, "weight": 2391.0}
+train20_volkswagen_411_(sw) {"horsepower": 76.0, "acceleration": 18.0, "cylinders": 4.0, "displacement": 121.0, "weight": 2511.0}
+train21_chrysler_lebaron_salon {"horsepower": 85.0, "acceleration": 16.6, "cylinders": 6.0, "displacement": 225.0, "weight": 3465.0}
+train22_volkswagen_jetta {"horsepower": 74.0, "acceleration": 14.2, "cylinders": 4.0, "displacement": 105.0, "weight": 2190.0}
+train23_dodge_coronet_brougham {"horsepower": 150.0, "acceleration": 13.0, "cylinders": 8.0, "displacement": 318.0, "weight": 4190.0}
+train24_pontiac_safari_(sw) {"horsepower": 175.0, "acceleration": 12.0, "cylinders": 8.0, "displacement": 400.0, "weight": 5140.0}
+train25_mazda_rx-7_gs {"horsepower": 100.0, "acceleration": 12.5, "cylinders": 3.0, "displacement": 70.0, "weight": 2420.0}
+train26_datsun_210 {"horsepower": 65.0, "acceleration": 19.2, "cylinders": 4.0, "displacement": 85.0, "weight": 2110.0}
+train27_vw_rabbit_c_(diesel) {"horsepower": 48.0, "acceleration": 21.7, "cylinders": 4.0, "displacement": 90.0, "weight": 2085.0}
+train28_nissan_stanza_xe {"horsepower": 88.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 120.0, "weight": 2160.0}
+train29_audi_5000 {"horsepower": 103.0, "acceleration": 15.9, "cylinders": 5.0, "displacement": 131.0, "weight": 2830.0}
+train30_chevrolet_malibu {"horsepower": 145.0, "acceleration": 13.0, "cylinders": 8.0, "displacement": 350.0, "weight": 3988.0}
+train31_mercury_capri_v6 {"horsepower": 107.0, "acceleration": 14.0, "cylinders": 6.0, "displacement": 155.0, "weight": 2472.0}
+train32_datsun_b210_gx {"horsepower": 70.0, "acceleration": 18.6, "cylinders": 4.0, "displacement": 85.0, "weight": 2070.0}
+train33_volkswagen_dasher {"horsepower": 67.0, "acceleration": 15.5, "cylinders": 4.0, "displacement": 79.0, "weight": 1963.0}
+train34_volvo_145e_(sw) {"horsepower": 112.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 121.0, "weight": 2933.0}
+train35_chrysler_lebaron_medallion {"horsepower": 92.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 156.0, "weight": 2585.0}
+train36_pontiac_catalina {"horsepower": 170.0, "acceleration": 11.5, "cylinders": 8.0, "displacement": 400.0, "weight": 4668.0}
+train37_toyota_tercel {"horsepower": 62.0, "acceleration": 17.3, "cylinders": 4.0, "displacement": 89.0, "weight": 2050.0}
+train38_datsun_f-10_hatchback {"horsepower": 70.0, "acceleration": 16.8, "cylinders": 4.0, "displacement": 85.0, "weight": 1945.0}
+train39_chrysler_lebaron_town_@_country_(sw) {"horsepower": 150.0, "acceleration": 13.0, "cylinders": 8.0, "displacement": 360.0, "weight": 3940.0}
+train40_buick_century {"horsepower": 110.0, "acceleration": 15.8, "cylinders": 6.0, "displacement": 231.0, "weight": 3415.0}
+train41_amc_matador_(sw) {"horsepower": 150.0, "acceleration": 12.5, "cylinders": 8.0, "displacement": 304.0, "weight": 3892.0}
+train42_honda_civic {"horsepower": 67.0, "acceleration": 15.0, "cylinders": 4.0, "displacement": 91.0, "weight": 1965.0}
+train43_dodge_coronet_custom_(sw) {"horsepower": 150.0, "acceleration": 13.5, "cylinders": 8.0, "displacement": 318.0, "weight": 4457.0}
+train44_bmw_320i {"horsepower": 110.0, "acceleration": 12.8, "cylinders": 4.0, "displacement": 121.0, "weight": 2600.0}
+train45_mercury_marquis {"horsepower": 208.0, "acceleration": 11.0, "cylinders": 8.0, "displacement": 429.0, "weight": 4633.0}
+train46_amc_matador_(sw) {"horsepower": 150.0, "acceleration": 15.5, "cylinders": 8.0, "displacement": 304.0, "weight": 4257.0}
+train47_ford_ltd {"horsepower": 158.0, "acceleration": 13.0, "cylinders": 8.0, "displacement": 351.0, "weight": 4363.0}
+train48_toyota_corolla_1200 {"horsepower": 65.0, "acceleration": 19.0, "cylinders": 4.0, "displacement": 71.0, "weight": 1773.0}
+train49_amc_ambassador_brougham {"horsepower": 175.0, "acceleration": 11.0, "cylinders": 8.0, "displacement": 360.0, "weight": 3821.0}
+train50_ford_galaxie_500 {"horsepower": 153.0, "acceleration": 13.0, "cylinders": 8.0, "displacement": 351.0, "weight": 4129.0}
+train51_amc_concord_d/l {"horsepower": 120.0, "acceleration": 15.1, "cylinders": 6.0, "displacement": 258.0, "weight": 3410.0}
+train52_amc_matador {"horsepower": 100.0, "acceleration": 15.5, "cylinders": 6.0, "displacement": 232.0, "weight": 3288.0}
+train53_toyota_corona {"horsepower": 96.0, "acceleration": 13.5, "cylinders": 4.0, "displacement": 134.0, "weight": 2702.0}
+train54_plymouth_reliant {"horsepower": 84.0, "acceleration": 15.7, "cylinders": 4.0, "displacement": 135.0, "weight": 2490.0}
+train55_ford_pinto {"horsepower": 97.0, "acceleration": 14.5, "cylinders": 6.0, "displacement": 171.0, "weight": 2984.0}
+train56_datsun_810 {"horsepower": 97.0, "acceleration": 14.5, "cylinders": 6.0, "displacement": 146.0, "weight": 2815.0}
+train57_fiat_x1.9 {"horsepower": 67.0, "acceleration": 16.0, "cylinders": 4.0, "displacement": 79.0, "weight": 2000.0}
+train58_mercury_zephyr {"horsepower": 85.0, "acceleration": 16.7, "cylinders": 6.0, "displacement": 200.0, "weight": 3070.0}
+train59_toyota_corolla_1600_(sw) {"horsepower": 88.0, "acceleration": 16.5, "cylinders": 4.0, "displacement": 97.0, "weight": 2100.0}
+train60_chevrolet_chevette {"horsepower": 68.0, "acceleration": 16.5, "cylinders": 4.0, "displacement": 98.0, "weight": 2155.0}
+train61_toyota_cressida {"horsepower": 116.0, "acceleration": 12.6, "cylinders": 6.0, "displacement": 168.0, "weight": 2900.0}
+train62_toyota_corolla {"horsepower": 70.0, "acceleration": 16.9, "cylinders": 4.0, "displacement": 108.0, "weight": 2245.0}
+train63_datsun_710 {"horsepower": 97.0, "acceleration": 17.0, "cylinders": 4.0, "displacement": 119.0, "weight": 2545.0}
+train64_mercury_grand_marquis {"horsepower": 138.0, "acceleration": 13.2, "cylinders": 8.0, "displacement": 351.0, "weight": 3955.0}
+train65_plymouth_champ {"horsepower": 64.0, "acceleration": 16.4, "cylinders": 4.0, "displacement": 86.0, "weight": 1875.0}
+train66_datsun_200-sx {"horsepower": 97.0, "acceleration": 14.9, "cylinders": 4.0, "displacement": 119.0, "weight": 2405.0}
+train67_chevrolet_nova {"horsepower": 105.0, "acceleration": 16.0, "cylinders": 6.0, "displacement": 250.0, "weight": 3459.0}
+train68_hi_1200d {"horsepower": 193.0, "acceleration": 18.5, "cylinders": 8.0, "displacement": 304.0, "weight": 4732.0}
+train69_ford_country {"horsepower": 167.0, "acceleration": 12.5, "cylinders": 8.0, "displacement": 400.0, "weight": 4906.0}
+train70_plymouth_valiant {"horsepower": 100.0, "acceleration": 15.4, "cylinders": 6.0, "displacement": 225.0, "weight": 3233.0}
+train71_amc_gremlin {"horsepower": 100.0, "acceleration": 16.0, "cylinders": 6.0, "displacement": 232.0, "weight": 2914.0}
+train72_ford_pinto_runabout {"horsepower": 86.0, "acceleration": 16.5, "cylinders": 4.0, "displacement": 122.0, "weight": 2226.0}
+train73_chevrolet_monte_carlo_landau {"horsepower": 145.0, "acceleration": 13.2, "cylinders": 8.0, "displacement": 305.0, "weight": 3425.0}
+train74_amc_concord_dl_6 {"horsepower": 90.0, "acceleration": 18.2, "cylinders": 6.0, "displacement": 232.0, "weight": 3265.0}
+train75_pontiac_firebird {"horsepower": 100.0, "acceleration": 15.0, "cylinders": 6.0, "displacement": 250.0, "weight": 3282.0}
+train76_chevrolet_cavalier_2-door {"horsepower": 88.0, "acceleration": 18.0, "cylinders": 4.0, "displacement": 112.0, "weight": 2395.0}
+train77_mercedes-benz_280s {"horsepower": 120.0, "acceleration": 16.7, "cylinders": 6.0, "displacement": 168.0, "weight": 3820.0}
+train78_dodge_d200 {"horsepower": 210.0, "acceleration": 13.5, "cylinders": 8.0, "displacement": 318.0, "weight": 4382.0}
+train79_amc_hornet {"horsepower": 97.0, "acceleration": 15.5, "cylinders": 6.0, "displacement": 199.0, "weight": 2774.0}
+train80_plymouth_reliant {"horsepower": 84.0, "acceleration": 12.9, "cylinders": 4.0, "displacement": 135.0, "weight": 2385.0}
+train81_amc_hornet {"horsepower": 100.0, "acceleration": 16.0, "cylinders": 6.0, "displacement": 232.0, "weight": 2901.0}
+train82_toyota_corona_liftback {"horsepower": 90.0, "acceleration": 15.5, "cylinders": 4.0, "displacement": 134.0, "weight": 2711.0}
+train83_ford_maverick {"horsepower": 72.0, "acceleration": 19.5, "cylinders": 6.0, "displacement": 250.0, "weight": 3158.0}
+train84_cadillac_eldorado {"horsepower": 125.0, "acceleration": 17.4, "cylinders": 8.0, "displacement": 350.0, "weight": 3900.0}
+train85_mercury_monarch {"horsepower": 72.0, "acceleration": 21.0, "cylinders": 6.0, "displacement": 250.0, "weight": 3432.0}
+train86_buick_skylark {"horsepower": 105.0, "acceleration": 16.9, "cylinders": 6.0, "displacement": 231.0, "weight": 3425.0}
+train87_chevrolet_cavalier {"horsepower": 88.0, "acceleration": 19.6, "cylinders": 4.0, "displacement": 112.0, "weight": 2605.0}
+train88_chevrolet_vega {"horsepower": 90.0, "acceleration": 19.5, "cylinders": 4.0, "displacement": 140.0, "weight": 2408.0}
+train89_ford_torino {"horsepower": 140.0, "acceleration": 10.5, "cylinders": 8.0, "displacement": 302.0, "weight": 3449.0}
+train90_chevrolet_chevelle_malibu {"horsepower": 130.0, "acceleration": 12.0, "cylinders": 8.0, "displacement": 307.0, "weight": 3504.0}
+train91_toyota_corona {"horsepower": 52.0, "acceleration": 16.5, "cylinders": 4.0, "displacement": 76.0, "weight": 1649.0}
+train92_buick_opel_isuzu_deluxe {"horsepower": 80.0, "acceleration": 14.8, "cylinders": 4.0, "displacement": 111.0, "weight": 2155.0}
+train93_volvo_244dl {"horsepower": 98.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 121.0, "weight": 2945.0}
+train94_opel_1900 {"horsepower": 81.0, "acceleration": 16.9, "cylinders": 4.0, "displacement": 116.0, "weight": 2220.0}
+train95_peugeot_304 {"horsepower": 70.0, "acceleration": 19.5, "cylinders": 4.0, "displacement": 79.0, "weight": 2074.0}
+train96_toyota_celica_gt {"horsepower": 96.0, "acceleration": 13.9, "cylinders": 4.0, "displacement": 144.0, "weight": 2665.0}
+train97_buick_estate_wagon_(sw) {"horsepower": 155.0, "acceleration": 14.9, "cylinders": 8.0, "displacement": 350.0, "weight": 4360.0}
+train98_volvo_245 {"horsepower": 102.0, "acceleration": 15.7, "cylinders": 4.0, "displacement": 130.0, "weight": 3150.0}
+train99_chevrolet_impala {"horsepower": 150.0, "acceleration": 14.0, "cylinders": 8.0, "displacement": 400.0, "weight": 4997.0}
+train100_chevrolet_bel_air {"horsepower": 145.0, "acceleration": 14.0, "cylinders": 8.0, "displacement": 350.0, "weight": 4440.0}
+train101_datsun_pl510 {"horsepower": 88.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 97.0, "weight": 2130.0}
+train102_saab_99gle {"horsepower": 115.0, "acceleration": 15.7, "cylinders": 4.0, "displacement": 121.0, "weight": 2795.0}
+train103_renault_12tl {"horsepower": 83.0, "acceleration": 15.3, "cylinders": 4.0, "displacement": 101.0, "weight": 2202.0}
+train104_pontiac_catalina {"horsepower": 175.0, "acceleration": 12.0, "cylinders": 8.0, "displacement": 400.0, "weight": 4385.0}
+train105_subaru {"horsepower": 67.0, "acceleration": 17.8, "cylinders": 4.0, "displacement": 97.0, "weight": 2065.0}
+train106_chevrolet_chevette {"horsepower": 70.0, "acceleration": 15.5, "cylinders": 4.0, "displacement": 98.0, "weight": 2120.0}
+train107_saab_99le {"horsepower": 115.0, "acceleration": 13.5, "cylinders": 4.0, "displacement": 121.0, "weight": 2671.0}
+train108_amc_rebel_sst {"horsepower": 150.0, "acceleration": 12.0, "cylinders": 8.0, "displacement": 304.0, "weight": 3433.0}
+train109_ford_gran_torino {"horsepower": 140.0, "acceleration": 14.0, "cylinders": 8.0, "displacement": 302.0, "weight": 4141.0}
+train110_ford_mustang_ii_2+2 {"horsepower": 89.0, "acceleration": 15.8, "cylinders": 4.0, "displacement": 140.0, "weight": 2755.0}
+train111_ford_pinto {"horsepower": 80.0, "acceleration": 16.5, "cylinders": 4.0, "displacement": 122.0, "weight": 2451.0}
+train112_toyota_corolla {"horsepower": 75.0, "acceleration": 16.8, "cylinders": 4.0, "displacement": 108.0, "weight": 2350.0}
+train113_toyota_carina {"horsepower": 88.0, "acceleration": 19.0, "cylinders": 4.0, "displacement": 97.0, "weight": 2279.0}
+train114_amc_hornet {"horsepower": 100.0, "acceleration": 16.0, "cylinders": 6.0, "displacement": 232.0, "weight": 2945.0}
+train115_plymouth_horizon_4 {"horsepower": 63.0, "acceleration": 14.9, "cylinders": 4.0, "displacement": 105.0, "weight": 2215.0}
+train116_chevrolet_nova {"horsepower": 105.0, "acceleration": 14.5, "cylinders": 6.0, "displacement": 250.0, "weight": 3353.0}
+train117_fiat_128 {"horsepower": 75.0, "acceleration": 15.5, "cylinders": 4.0, "displacement": 90.0, "weight": 2108.0}
+train118_dodge_coronet_custom {"horsepower": 150.0, "acceleration": 12.5, "cylinders": 8.0, "displacement": 318.0, "weight": 3777.0}
+train119_volkswagen_rabbit {"horsepower": 71.0, "acceleration": 12.2, "cylinders": 4.0, "displacement": 97.0, "weight": 1825.0}
+train120_chevrolet_camaro {"horsepower": 90.0, "acceleration": 17.3, "cylinders": 4.0, "displacement": 151.0, "weight": 2950.0}
+train121_ford_gran_torino_(sw) {"horsepower": 140.0, "acceleration": 16.0, "cylinders": 8.0, "displacement": 302.0, "weight": 4294.0}
+train122_subaru_dl {"horsepower": 67.0, "acceleration": 16.4, "cylinders": 4.0, "displacement": 97.0, "weight": 1985.0}
+train123_mazda_626 {"horsepower": 75.0, "acceleration": 17.5, "cylinders": 4.0, "displacement": 120.0, "weight": 2542.0}
+train124_oldsmobile_cutlass_salon_brougham {"horsepower": 90.0, "acceleration": 22.2, "cylinders": 8.0, "displacement": 260.0, "weight": 3420.0}
+train125_volvo_144ea {"horsepower": 112.0, "acceleration": 15.5, "cylinders": 4.0, "displacement": 121.0, "weight": 2868.0}
+train126_plymouth_satellite {"horsepower": 150.0, "acceleration": 11.0, "cylinders": 8.0, "displacement": 318.0, "weight": 3436.0}
+train127_amc_gremlin {"horsepower": 100.0, "acceleration": 15.0, "cylinders": 6.0, "displacement": 232.0, "weight": 2789.0}
+train128_chevrolet_malibu_classic_(sw) {"horsepower": 125.0, "acceleration": 15.0, "cylinders": 8.0, "displacement": 267.0, "weight": 3605.0}
+train129_toyota_corolla {"horsepower": 75.0, "acceleration": 16.0, "cylinders": 4.0, "displacement": 97.0, "weight": 2171.0}
+train130_buick_skylark_320 {"horsepower": 165.0, "acceleration": 11.5, "cylinders": 8.0, "displacement": 350.0, "weight": 3693.0}
+train131_toyota_corona_mark_ii {"horsepower": 95.0, "acceleration": 15.0, "cylinders": 4.0, "displacement": 113.0, "weight": 2372.0}
+train132_ford_gran_torino {"horsepower": 152.0, "acceleration": 12.8, "cylinders": 8.0, "displacement": 351.0, "weight": 4215.0}
+train133_dodge_colt {"horsepower": 79.0, "acceleration": 17.7, "cylinders": 4.0, "displacement": 98.0, "weight": 2255.0}
+train134_pontiac_ventura_sj {"horsepower": 110.0, "acceleration": 16.2, "cylinders": 6.0, "displacement": 250.0, "weight": 3645.0}
+train135_oldsmobile_cutlass_ls {"horsepower": 105.0, "acceleration": 19.0, "cylinders": 8.0, "displacement": 350.0, "weight": 3725.0}
+train136_toyouta_corona_mark_ii_(sw) {"horsepower": 97.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 120.0, "weight": 2506.0}
+train137_amc_gremlin {"horsepower": 100.0, "acceleration": 13.0, "cylinders": 6.0, "displacement": 232.0, "weight": 2634.0}
+train138_chevrolet_malibu {"horsepower": 95.0, "acceleration": 18.2, "cylinders": 6.0, "displacement": 200.0, "weight": 3155.0}
+train139_oldsmobile_starfire_sx {"horsepower": 85.0, "acceleration": 17.6, "cylinders": 4.0, "displacement": 151.0, "weight": 2855.0}
+train140_amc_ambassador_dpl {"horsepower": 190.0, "acceleration": 8.5, "cylinders": 8.0, "displacement": 390.0, "weight": 3850.0}
+train141_volkswagen_scirocco {"horsepower": 71.0, "acceleration": 14.9, "cylinders": 4.0, "displacement": 89.0, "weight": 1990.0}
+train142_plymouth_satellite_custom_(sw) {"horsepower": 150.0, "acceleration": 14.0, "cylinders": 8.0, "displacement": 318.0, "weight": 4077.0}
+train143_toyota_corolla_liftback {"horsepower": 75.0, "acceleration": 18.2, "cylinders": 4.0, "displacement": 97.0, "weight": 2265.0}
+train144_ford_fairmont {"horsepower": 88.0, "acceleration": 18.1, "cylinders": 4.0, "displacement": 140.0, "weight": 2870.0}
+train145_plymouth_fury_gran_sedan {"horsepower": 150.0, "acceleration": 14.5, "cylinders": 8.0, "displacement": 318.0, "weight": 4237.0}
+train146_buick_century_luxus_(sw) {"horsepower": 150.0, "acceleration": 14.5, "cylinders": 8.0, "displacement": 350.0, "weight": 4699.0}
+train147_ford_granada_ghia {"horsepower": 78.0, "acceleration": 21.0, "cylinders": 6.0, "displacement": 250.0, "weight": 3574.0}
+train148_dodge_charger_2.2 {"horsepower": 84.0, "acceleration": 13.0, "cylinders": 4.0, "displacement": 135.0, "weight": 2370.0}
+train149_chevrolet_concours {"horsepower": 110.0, "acceleration": 16.4, "cylinders": 6.0, "displacement": 250.0, "weight": 3520.0}
+train150_toyota_corona {"horsepower": 95.0, "acceleration": 14.2, "cylinders": 4.0, "displacement": 134.0, "weight": 2560.0}
+train151_pontiac_grand_prix_lj {"horsepower": 180.0, "acceleration": 11.1, "cylinders": 8.0, "displacement": 400.0, "weight": 4220.0}
+train152_dodge_colt_m/m {"horsepower": 83.0, "acceleration": 15.9, "cylinders": 4.0, "displacement": 98.0, "weight": 2075.0}
+train153_pontiac_astro {"horsepower": 78.0, "acceleration": 18.5, "cylinders": 4.0, "displacement": 140.0, "weight": 2592.0}
+train154_amc_gremlin {"horsepower": 90.0, "acceleration": 15.0, "cylinders": 6.0, "displacement": 199.0, "weight": 2648.0}
+train155_fiat_strada_custom {"horsepower": 69.0, "acceleration": 14.7, "cylinders": 4.0, "displacement": 91.0, "weight": 2130.0}
+train156_toyota_corona_hardtop {"horsepower": 95.0, "acceleration": 15.5, "cylinders": 4.0, "displacement": 113.0, "weight": 2278.0}
+train157_datsun_b210 {"horsepower": 67.0, "acceleration": 19.0, "cylinders": 4.0, "displacement": 79.0, "weight": 1950.0}
+train158_volkswagen_dasher {"horsepower": 78.0, "acceleration": 14.1, "cylinders": 4.0, "displacement": 97.0, "weight": 2190.0}
+train159_plymouth_duster {"horsepower": 95.0, "acceleration": 16.0, "cylinders": 6.0, "displacement": 198.0, "weight": 2904.0}
+train160_mazda_626 {"horsepower": 74.0, "acceleration": 18.3, "cylinders": 4.0, "displacement": 120.0, "weight": 2635.0}
+train161_buick_lesabre_custom {"horsepower": 155.0, "acceleration": 13.5, "cylinders": 8.0, "displacement": 350.0, "weight": 4502.0}
+train162_chevrolet_monte_carlo {"horsepower": 150.0, "acceleration": 9.5, "cylinders": 8.0, "displacement": 400.0, "weight": 3761.0}
+train163_peugeot_505s_turbo_diesel {"horsepower": 80.0, "acceleration": 20.4, "cylinders": 4.0, "displacement": 141.0, "weight": 3230.0}
+train164_datsun_610 {"horsepower": 94.0, "acceleration": 16.5, "cylinders": 4.0, "displacement": 108.0, "weight": 2379.0}
+train165_ford_granada {"horsepower": 98.0, "acceleration": 19.0, "cylinders": 6.0, "displacement": 250.0, "weight": 3525.0}
+train166_pontiac_grand_prix {"horsepower": 230.0, "acceleration": 9.5, "cylinders": 8.0, "displacement": 400.0, "weight": 4278.0}
+train167_cadillac_seville {"horsepower": 180.0, "acceleration": 12.1, "cylinders": 8.0, "displacement": 350.0, "weight": 4380.0}
+train168_amc_concord {"horsepower": 90.0, "acceleration": 20.1, "cylinders": 4.0, "displacement": 151.0, "weight": 3003.0}
+train169_ford_mustang_gl {"horsepower": 86.0, "acceleration": 15.6, "cylinders": 4.0, "displacement": 140.0, "weight": 2790.0}
+train170_amc_matador {"horsepower": 110.0, "acceleration": 19.0, "cylinders": 6.0, "displacement": 258.0, "weight": 3730.0}
+train171_ford_gran_torino_(sw) {"horsepower": 140.0, "acceleration": 16.0, "cylinders": 8.0, "displacement": 302.0, "weight": 4638.0}
+train172_datsun_510_hatchback {"horsepower": 92.0, "acceleration": 15.0, "cylinders": 4.0, "displacement": 119.0, "weight": 2434.0}
+train173_dodge_rampage {"horsepower": 84.0, "acceleration": 11.6, "cylinders": 4.0, "displacement": 135.0, "weight": 2295.0}
+train174_datsun_b-210 {"horsepower": 70.0, "acceleration": 17.0, "cylinders": 4.0, "displacement": 85.0, "weight": 1990.0}
+train175_datsun_210_mpg {"horsepower": 65.0, "acceleration": 19.4, "cylinders": 4.0, "displacement": 85.0, "weight": 1975.0}
+train176_plymouth_horizon_tc3 {"horsepower": 70.0, "acceleration": 14.9, "cylinders": 4.0, "displacement": 105.0, "weight": 2150.0}
+train177_ford_pinto {"horsepower": 85.0, "acceleration": 18.5, "cylinders": 4.0, "displacement": 122.0, "weight": 2310.0}
+train178_chrysler_new_yorker_brougham {"horsepower": 215.0, "acceleration": 11.0, "cylinders": 8.0, "displacement": 440.0, "weight": 4735.0}
+train179_chrysler_cordoba {"horsepower": 190.0, "acceleration": 12.2, "cylinders": 8.0, "displacement": 400.0, "weight": 4325.0}
+train180_oldsmobile_cutlass_salon_brougham {"horsepower": 110.0, "acceleration": 15.5, "cylinders": 8.0, "displacement": 260.0, "weight": 3365.0}
+train181_plymouth_satellite_custom {"horsepower": 105.0, "acceleration": 15.5, "cylinders": 6.0, "displacement": 225.0, "weight": 3439.0}
+train182_maxda_glc_deluxe {"horsepower": 65.0, "acceleration": 15.2, "cylinders": 4.0, "displacement": 86.0, "weight": 1975.0}
+train183_datsun_1200 {"horsepower": 69.0, "acceleration": 18.0, "cylinders": 4.0, "displacement": 72.0, "weight": 1613.0}
+train184_ford_pinto {"horsepower": 72.0, "acceleration": 13.6, "cylinders": 4.0, "displacement": 140.0, "weight": 2565.0}
+train185_volkswagen_rabbit_l {"horsepower": 74.0, "acceleration": 15.3, "cylinders": 4.0, "displacement": 105.0, "weight": 1980.0}
+train186_audi_100ls {"horsepower": 95.0, "acceleration": 15.0, "cylinders": 4.0, "displacement": 115.0, "weight": 2694.0}
+train187_chevrolet_citation {"horsepower": 115.0, "acceleration": 11.3, "cylinders": 6.0, "displacement": 173.0, "weight": 2595.0}
+train188_buick_electra_225_custom {"horsepower": 225.0, "acceleration": 11.0, "cylinders": 8.0, "displacement": 455.0, "weight": 4951.0}
+train189_datsun_200sx {"horsepower": 100.0, "acceleration": 14.8, "cylinders": 4.0, "displacement": 119.0, "weight": 2615.0}
+train190_dodge_colt_hatchback_custom {"horsepower": 80.0, "acceleration": 14.4, "cylinders": 4.0, "displacement": 98.0, "weight": 1915.0}
+train191_honda_accord_lx {"horsepower": 68.0, "acceleration": 16.6, "cylinders": 4.0, "displacement": 98.0, "weight": 2135.0}
+train192_plymouth_custom_suburb {"horsepower": 170.0, "acceleration": 13.0, "cylinders": 8.0, "displacement": 360.0, "weight": 4654.0}
+train193_toyota_mark_ii {"horsepower": 122.0, "acceleration": 13.5, "cylinders": 6.0, "displacement": 156.0, "weight": 2807.0}
+train194_oldsmobile_omega_brougham {"horsepower": 115.0, "acceleration": 12.9, "cylinders": 6.0, "displacement": 173.0, "weight": 2700.0}
+train195_ford_ltd_landau {"horsepower": 129.0, "acceleration": 13.4, "cylinders": 8.0, "displacement": 302.0, "weight": 3725.0}
+train196_chevy_c10 {"horsepower": 145.0, "acceleration": 12.0, "cylinders": 8.0, "displacement": 350.0, "weight": 4055.0}
+train197_dodge_colt {"horsepower": 75.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 90.0, "weight": 2125.0}
+train198_oldsmobile_cutlass_supreme {"horsepower": 110.0, "acceleration": 19.0, "cylinders": 8.0, "displacement": 260.0, "weight": 4060.0}
+train199_ford_pinto_(sw) {"horsepower": 86.0, "acceleration": 16.0, "cylinders": 4.0, "displacement": 122.0, "weight": 2395.0}
+train200_chevrolet_vega {"horsepower": 75.0, "acceleration": 17.0, "cylinders": 4.0, "displacement": 140.0, "weight": 2542.0}
+train201_pontiac_catalina_brougham {"horsepower": 175.0, "acceleration": 11.5, "cylinders": 8.0, "displacement": 400.0, "weight": 4464.0}
+train202_ford_futura {"horsepower": 139.0, "acceleration": 11.2, "cylinders": 8.0, "displacement": 302.0, "weight": 3205.0}
+train203_honda_civic {"horsepower": 53.0, "acceleration": 17.4, "cylinders": 4.0, "displacement": 91.0, "weight": 1795.0}
+train204_ford_mustang {"horsepower": 88.0, "acceleration": 14.5, "cylinders": 6.0, "displacement": 250.0, "weight": 3139.0}
+train205_chevrolet_vega_(sw) {"horsepower": 72.0, "acceleration": 19.0, "cylinders": 4.0, "displacement": 140.0, "weight": 2408.0}
+train206_buick_century {"horsepower": 110.0, "acceleration": 21.0, "cylinders": 6.0, "displacement": 231.0, "weight": 3907.0}
+train207_dodge_aspen {"horsepower": 90.0, "acceleration": 18.7, "cylinders": 6.0, "displacement": 225.0, "weight": 3381.0}
+train208_subaru_dl {"horsepower": 67.0, "acceleration": 18.0, "cylinders": 4.0, "displacement": 97.0, "weight": 2145.0}
+train209_plymouth_fury_iii {"horsepower": 150.0, "acceleration": 13.5, "cylinders": 8.0, "displacement": 318.0, "weight": 4135.0}
+train210_fiat_128 {"horsepower": 49.0, "acceleration": 19.5, "cylinders": 4.0, "displacement": 68.0, "weight": 1867.0}
+train211_volvo_264gl {"horsepower": 125.0, "acceleration": 13.6, "cylinders": 6.0, "displacement": 163.0, "weight": 3140.0}
+train212_dodge_aries_se {"horsepower": 84.0, "acceleration": 16.0, "cylinders": 4.0, "displacement": 135.0, "weight": 2525.0}
+train213_datsun_510 {"horsepower": 97.0, "acceleration": 14.7, "cylinders": 4.0, "displacement": 119.0, "weight": 2300.0}
+train214_chevrolet_chevelle_malibu_classic {"horsepower": 100.0, "acceleration": 17.0, "cylinders": 6.0, "displacement": 250.0, "weight": 3781.0}
+train215_ford_ranger {"horsepower": 79.0, "acceleration": 18.6, "cylinders": 4.0, "displacement": 120.0, "weight": 2625.0}
+train216_vw_dasher_(diesel) {"horsepower": 48.0, "acceleration": 23.7, "cylinders": 4.0, "displacement": 90.0, "weight": 2335.0}
+train217_chevy_c20 {"horsepower": 200.0, "acceleration": 15.0, "cylinders": 8.0, "displacement": 307.0, "weight": 4376.0}
+train218_buick_skyhawk {"horsepower": 110.0, "acceleration": 15.0, "cylinders": 6.0, "displacement": 231.0, "weight": 3039.0}
+train219_peugeot_504 {"horsepower": 88.0, "acceleration": 17.0, "cylinders": 4.0, "displacement": 120.0, "weight": 2957.0}
+train220_ford_f250 {"horsepower": 215.0, "acceleration": 14.0, "cylinders": 8.0, "displacement": 360.0, "weight": 4615.0}
+train221_dodge_diplomat {"horsepower": 140.0, "acceleration": 13.2, "cylinders": 8.0, "displacement": 318.0, "weight": 3735.0}
+train222_honda_civic_(auto) {"horsepower": 67.0, "acceleration": 15.7, "cylinders": 4.0, "displacement": 91.0, "weight": 1965.0}
+train223_chevrolet_caprice_classic {"horsepower": 130.0, "acceleration": 15.4, "cylinders": 8.0, "displacement": 305.0, "weight": 3840.0}
+train224_toyota_corolla_1200 {"horsepower": 65.0, "acceleration": 21.0, "cylinders": 4.0, "displacement": 71.0, "weight": 1836.0}
+train225_plymouth_volare_premier_v8 {"horsepower": 150.0, "acceleration": 13.2, "cylinders": 8.0, "displacement": 318.0, "weight": 3940.0}
+train226_opel_manta {"horsepower": 78.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 97.0, "weight": 2300.0}
+train227_mercedes_benz_300d {"horsepower": 77.0, "acceleration": 20.1, "cylinders": 5.0, "displacement": 183.0, "weight": 3530.0}
+train228_chevrolet_cavalier_wagon {"horsepower": 88.0, "acceleration": 18.6, "cylinders": 4.0, "displacement": 112.0, "weight": 2640.0}
+train229_vw_rabbit {"horsepower": 70.0, "acceleration": 14.2, "cylinders": 4.0, "displacement": 90.0, "weight": 1937.0}
+train230_toyota_corolla {"horsepower": 75.0, "acceleration": 15.2, "cylinders": 4.0, "displacement": 108.0, "weight": 2265.0}
+train231_buick_estate_wagon_(sw) {"horsepower": 225.0, "acceleration": 10.0, "cylinders": 8.0, "displacement": 455.0, "weight": 3086.0}
+train232_ford_f108 {"horsepower": 130.0, "acceleration": 15.0, "cylinders": 8.0, "displacement": 302.0, "weight": 3870.0}
+train233_oldsmobile_omega {"horsepower": 180.0, "acceleration": 11.0, "cylinders": 8.0, "displacement": 350.0, "weight": 3664.0}
+train234_oldsmobile_cutlass_ciera_(diesel) {"horsepower": 85.0, "acceleration": 17.0, "cylinders": 6.0, "displacement": 262.0, "weight": 3015.0}
+train235_chevrolet_impala {"horsepower": 220.0, "acceleration": 9.0, "cylinders": 8.0, "displacement": 454.0, "weight": 4354.0}
+train236_volkswagen_dasher {"horsepower": 71.0, "acceleration": 16.5, "cylinders": 4.0, "displacement": 90.0, "weight": 2223.0}
+train237_ford_fairmont_futura {"horsepower": 92.0, "acceleration": 16.4, "cylinders": 4.0, "displacement": 140.0, "weight": 2865.0}
+train238_datsun_210 {"horsepower": 65.0, "acceleration": 19.2, "cylinders": 4.0, "displacement": 85.0, "weight": 2020.0}
+train239_honda_accord_cvcc {"horsepower": 68.0, "acceleration": 18.5, "cylinders": 4.0, "displacement": 98.0, "weight": 2045.0}
+train240_mazda_glc {"horsepower": 65.0, "acceleration": 17.9, "cylinders": 4.0, "displacement": 86.0, "weight": 2110.0}
+train241_chevrolet_citation {"horsepower": 90.0, "acceleration": 16.5, "cylinders": 4.0, "displacement": 151.0, "weight": 2678.0}
+train242_datsun_810_maxima {"horsepower": 120.0, "acceleration": 13.8, "cylinders": 6.0, "displacement": 146.0, "weight": 2930.0}
+train243_ford_maverick {"horsepower": 85.0, "acceleration": 16.0, "cylinders": 6.0, "displacement": 200.0, "weight": 2587.0}
+train244_fiat_124_sport_coupe {"horsepower": 90.0, "acceleration": 15.5, "cylinders": 4.0, "displacement": 98.0, "weight": 2265.0}
+train245_chevrolet_vega {"horsepower": 72.0, "acceleration": 19.5, "cylinders": 4.0, "displacement": 140.0, "weight": 2401.0}
+train246_chevrolet_chevelle_malibu_classic {"horsepower": 140.0, "acceleration": 13.0, "cylinders": 8.0, "displacement": 305.0, "weight": 4215.0}
+train247_buick_skylark {"horsepower": 84.0, "acceleration": 16.4, "cylinders": 4.0, "displacement": 151.0, "weight": 2635.0}
+train248_renault_5_gtl {"horsepower": 58.0, "acceleration": 18.6, "cylinders": 4.0, "displacement": 79.0, "weight": 1825.0}
+train249_plymouth_duster {"horsepower": 95.0, "acceleration": 15.5, "cylinders": 6.0, "displacement": 198.0, "weight": 2833.0}
+train250_buick_regal_sport_coupe_(turbo) {"horsepower": 165.0, "acceleration": 13.4, "cylinders": 6.0, "displacement": 231.0, "weight": 3445.0}
+train251_mercury_lynx_l {"horsepower": 70.0, "acceleration": 17.3, "cylinders": 4.0, "displacement": 98.0, "weight": 2125.0}
+train252_dodge_aspen_6 {"horsepower": 110.0, "acceleration": 16.6, "cylinders": 6.0, "displacement": 225.0, "weight": 3360.0}
+train253_oldsmobile_vista_cruiser {"horsepower": 180.0, "acceleration": 12.5, "cylinders": 8.0, "displacement": 350.0, "weight": 4499.0}
+train254_amc_pacer_d/l {"horsepower": 95.0, "acceleration": 17.8, "cylinders": 6.0, "displacement": 258.0, "weight": 3193.0}
+train255_ford_fairmont_4 {"horsepower": 88.0, "acceleration": 17.3, "cylinders": 4.0, "displacement": 140.0, "weight": 2890.0}
+train256_chevrolet_chevelle_concours_(sw) {"horsepower": 130.0, "acceleration": 14.0, "cylinders": 8.0, "displacement": 307.0, "weight": 4098.0}
+train257_honda_accord {"horsepower": 72.0, "acceleration": 17.0, "cylinders": 4.0, "displacement": 107.0, "weight": 2290.0}
+train258_dodge_colt_hardtop {"horsepower": 80.0, "acceleration": 17.0, "cylinders": 4.0, "displacement": 97.5, "weight": 2126.0}
+train259_amc_hornet_sportabout_(sw) {"horsepower": 110.0, "acceleration": 13.5, "cylinders": 6.0, "displacement": 258.0, "weight": 2962.0}
+train260_toyota_corona {"horsepower": 95.0, "acceleration": 14.0, "cylinders": 4.0, "displacement": 113.0, "weight": 2228.0}
+train261_ford_fiesta {"horsepower": 66.0, "acceleration": 14.4, "cylinders": 4.0, "displacement": 98.0, "weight": 1800.0}
+train262_datsun_280-zx {"horsepower": 132.0, "acceleration": 11.4, "cylinders": 6.0, "displacement": 168.0, "weight": 2910.0}
+train263_chevrolet_impala {"horsepower": 165.0, "acceleration": 12.0, "cylinders": 8.0, "displacement": 350.0, "weight": 4274.0}
+train264_toyota_corolla {"horsepower": 75.0, "acceleration": 16.4, "cylinders": 4.0, "displacement": 97.0, "weight": 2155.0}
+train265_chevrolet_chevelle_malibu {"horsepower": 100.0, "acceleration": 15.5, "cylinders": 6.0, "displacement": 250.0, "weight": 3329.0}
+train266_volvo_diesel {"horsepower": 76.0, "acceleration": 19.6, "cylinders": 6.0, "displacement": 145.0, "weight": 3160.0}
+train267_pontiac_phoenix {"horsepower": 90.0, "acceleration": 18.0, "cylinders": 4.0, "displacement": 151.0, "weight": 2735.0}
+train268_dodge_colt_(sw) {"horsepower": 80.0, "acceleration": 15.0, "cylinders": 4.0, "displacement": 98.0, "weight": 2164.0}
+train269_vokswagen_rabbit {"horsepower": 62.0, "acceleration": 15.3, "cylinders": 4.0, "displacement": 89.0, "weight": 1845.0}
+train270_peugeot_504 {"horsepower": 71.0, "acceleration": 24.8, "cylinders": 4.0, "displacement": 141.0, "weight": 3190.0}
+train271_chevrolet_vega_2300 {"horsepower": 90.0, "acceleration": 15.5, "cylinders": 4.0, "displacement": 140.0, "weight": 2264.0}
+train272_ford_fairmont_(auto) {"horsepower": 85.0, "acceleration": 15.8, "cylinders": 6.0, "displacement": 200.0, "weight": 2965.0}
+train273_plymouth_grand_fury {"horsepower": 150.0, "acceleration": 14.5, "cylinders": 8.0, "displacement": 318.0, "weight": 4498.0}
+train274_plymouth_'cuda_340 {"horsepower": 160.0, "acceleration": 8.0, "cylinders": 8.0, "displacement": 340.0, "weight": 3609.0}
+train275_ford_granada_l {"horsepower": 112.0, "acceleration": 14.7, "cylinders": 6.0, "displacement": 232.0, "weight": 2835.0}
+train276_volkswagen_rabbit_custom {"horsepower": 78.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 97.0, "weight": 1940.0}
+train277_honda_civic_cvcc {"horsepower": 53.0, "acceleration": 17.5, "cylinders": 4.0, "displacement": 91.0, "weight": 1795.0}
+train278_chevrolet_nova_custom {"horsepower": 100.0, "acceleration": 18.0, "cylinders": 6.0, "displacement": 250.0, "weight": 3278.0}
+train279_honda_civic_cvcc {"horsepower": 60.0, "acceleration": 16.4, "cylinders": 4.0, "displacement": 91.0, "weight": 1800.0}
+train280_volkswagen_type_3 {"horsepower": 54.0, "acceleration": 23.5, "cylinders": 4.0, "displacement": 97.0, "weight": 2254.0}
+train281_toyota_corolla_tercel {"horsepower": 60.0, "acceleration": 18.8, "cylinders": 4.0, "displacement": 89.0, "weight": 1968.0}
+train282_datsun_pl510 {"horsepower": 88.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 97.0, "weight": 2130.0}
+train283_ford_maverick {"horsepower": 81.0, "acceleration": 17.6, "cylinders": 6.0, "displacement": 200.0, "weight": 3012.0}
+train284_dodge_omni {"horsepower": 75.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 105.0, "weight": 2230.0}
+train285_plymouth_volare_custom {"horsepower": 100.0, "acceleration": 17.7, "cylinders": 6.0, "displacement": 225.0, "weight": 3630.0}
+train286_datsun_710 {"horsepower": 61.0, "acceleration": 19.0, "cylinders": 4.0, "displacement": 83.0, "weight": 2003.0}
+train287_honda_civic_1300 {"horsepower": 60.0, "acceleration": 16.1, "cylinders": 4.0, "displacement": 81.0, "weight": 1760.0}
+train288_saab_99le {"horsepower": 110.0, "acceleration": 14.0, "cylinders": 4.0, "displacement": 121.0, "weight": 2660.0}
+train289_honda_prelude {"horsepower": 75.0, "acceleration": 14.4, "cylinders": 4.0, "displacement": 107.0, "weight": 2210.0}
+train290_buick_skylark_limited {"horsepower": 90.0, "acceleration": 16.0, "cylinders": 4.0, "displacement": 151.0, "weight": 2670.0}
+train291_pontiac_catalina {"horsepower": 225.0, "acceleration": 10.0, "cylinders": 8.0, "displacement": 455.0, "weight": 4425.0}
+train292_mazda_rx-4 {"horsepower": 110.0, "acceleration": 13.5, "cylinders": 3.0, "displacement": 80.0, "weight": 2720.0}
+train293_volkswagen_super_beetle {"horsepower": 46.0, "acceleration": 21.0, "cylinders": 4.0, "displacement": 97.0, "weight": 1950.0}
+train294_ford_fairmont_(man) {"horsepower": 88.0, "acceleration": 15.4, "cylinders": 4.0, "displacement": 140.0, "weight": 2720.0}
+train295_fiat_131 {"horsepower": 86.0, "acceleration": 15.5, "cylinders": 4.0, "displacement": 107.0, "weight": 2464.0}
+train296_ford_escort_4w {"horsepower": 65.0, "acceleration": 16.2, "cylinders": 4.0, "displacement": 98.0, "weight": 2045.0}
+train297_plymouth_horizon_miser {"horsepower": 63.0, "acceleration": 14.7, "cylinders": 4.0, "displacement": 105.0, "weight": 2125.0}
+train298_ford_mustang_ii {"horsepower": 129.0, "acceleration": 12.0, "cylinders": 8.0, "displacement": 302.0, "weight": 3169.0}
+train299_saab_99e {"horsepower": 95.0, "acceleration": 17.5, "cylinders": 4.0, "displacement": 104.0, "weight": 2375.0}
+train300_fiat_124b {"horsepower": 76.0, "acceleration": 14.5, "cylinders": 4.0, "displacement": 88.0, "weight": 2065.0}
diff --git a/creg/test_data/auto-mpg.trainresp b/creg/test_data/auto-mpg.trainresp
new file mode 100644
index 00000000..ece7fa37
--- /dev/null
+++ b/creg/test_data/auto-mpg.trainresp
@@ -0,0 +1,300 @@
+train1_buick_century_350 13.0
+train2_audi_100_ls 24.0
+train3_chrysler_newport_royal 13.0
+train4_mercury_zephyr_6 19.8
+train5_volkswagen_model_111 27.0
+train6_dodge_monaco_brougham 15.5
+train7_mercedes-benz_240d 30.0
+train8_datsun_510_(sw) 28.0
+train9_opel_manta 24.0
+train10_renault_12_(sw) 26.0
+train11_chevrolet_nova 15.0
+train12_plymouth_arrow_gs 25.5
+train13_toyota_mark_ii 19.0
+train14_chevrolet_caprice_classic 13.0
+train15_ford_maverick 18.0
+train16_pontiac_lemans_v6 21.5
+train17_ford_granada_gl 20.2
+train18_chevrolet_monte_carlo_landau 15.5
+train19_subaru 26.0
+train20_volkswagen_411_(sw) 22.0
+train21_chrysler_lebaron_salon 17.6
+train22_volkswagen_jetta 33.0
+train23_dodge_coronet_brougham 16.0
+train24_pontiac_safari_(sw) 13.0
+train25_mazda_rx-7_gs 23.7
+train26_datsun_210 40.8
+train27_vw_rabbit_c_(diesel) 44.3
+train28_nissan_stanza_xe 36.0
+train29_audi_5000 20.3
+train30_chevrolet_malibu 13.0
+train31_mercury_capri_v6 21.0
+train32_datsun_b210_gx 39.4
+train33_volkswagen_dasher 26.0
+train34_volvo_145e_(sw) 18.0
+train35_chrysler_lebaron_medallion 26.0
+train36_pontiac_catalina 16.0
+train37_toyota_tercel 37.7
+train38_datsun_f-10_hatchback 33.5
+train39_chrysler_lebaron_town_@_country_(sw) 18.5
+train40_buick_century 22.4
+train41_amc_matador_(sw) 15.0
+train42_honda_civic 38.0
+train43_dodge_coronet_custom_(sw) 14.0
+train44_bmw_320i 21.5
+train45_mercury_marquis 11.0
+train46_amc_matador_(sw) 14.0
+train47_ford_ltd 13.0
+train48_toyota_corolla_1200 31.0
+train49_amc_ambassador_brougham 13.0
+train50_ford_galaxie_500 14.0
+train51_amc_concord_d/l 18.1
+train52_amc_matador 18.0
+train53_toyota_corona 24.0
+train54_plymouth_reliant 27.2
+train55_ford_pinto 18.0
+train56_datsun_810 22.0
+train57_fiat_x1.9 31.0
+train58_mercury_zephyr 20.8
+train59_toyota_corolla_1600_(sw) 27.0
+train60_chevrolet_chevette 30.0
+train61_toyota_cressida 25.4
+train62_toyota_corolla 34.0
+train63_datsun_710 24.0
+train64_mercury_grand_marquis 16.5
+train65_plymouth_champ 39.0
+train66_datsun_200-sx 23.9
+train67_chevrolet_nova 18.0
+train68_hi_1200d 9.0
+train69_ford_country 12.0
+train70_plymouth_valiant 22.0
+train71_amc_gremlin 20.0
+train72_ford_pinto_runabout 21.0
+train73_chevrolet_monte_carlo_landau 19.2
+train74_amc_concord_dl_6 20.2
+train75_pontiac_firebird 19.0
+train76_chevrolet_cavalier_2-door 34.0
+train77_mercedes-benz_280s 16.5
+train78_dodge_d200 11.0
+train79_amc_hornet 18.0
+train80_plymouth_reliant 30.0
+train81_amc_hornet 19.0
+train82_toyota_corona_liftback 29.8
+train83_ford_maverick 15.0
+train84_cadillac_eldorado 23.0
+train85_mercury_monarch 15.0
+train86_buick_skylark 20.5
+train87_chevrolet_cavalier 28.0
+train88_chevrolet_vega 20.0
+train89_ford_torino 17.0
+train90_chevrolet_chevelle_malibu 18.0
+train91_toyota_corona 31.0
+train92_buick_opel_isuzu_deluxe 30.0
+train93_volvo_244dl 22.0
+train94_opel_1900 25.0
+train95_peugeot_304 30.0
+train96_toyota_celica_gt 32.0
+train97_buick_estate_wagon_(sw) 16.9
+train98_volvo_245 20.0
+train99_chevrolet_impala 11.0
+train100_chevrolet_bel_air 15.0
+train101_datsun_pl510 27.0
+train102_saab_99gle 21.6
+train103_renault_12tl 27.0
+train104_pontiac_catalina 14.0
+train105_subaru 32.3
+train106_chevrolet_chevette 32.1
+train107_saab_99le 25.0
+train108_amc_rebel_sst 16.0
+train109_ford_gran_torino 16.0
+train110_ford_mustang_ii_2+2 25.5
+train111_ford_pinto 26.0
+train112_toyota_corolla 32.4
+train113_toyota_carina 20.0
+train114_amc_hornet 18.0
+train115_plymouth_horizon_4 34.7
+train116_chevrolet_nova 22.0
+train117_fiat_128 24.0
+train118_dodge_coronet_custom 15.0
+train119_volkswagen_rabbit 29.5
+train120_chevrolet_camaro 27.0
+train121_ford_gran_torino_(sw) 13.0
+train122_subaru_dl 30.0
+train123_mazda_626 31.3
+train124_oldsmobile_cutlass_salon_brougham 23.9
+train125_volvo_144ea 19.0
+train126_plymouth_satellite 18.0
+train127_amc_gremlin 18.0
+train128_chevrolet_malibu_classic_(sw) 19.2
+train129_toyota_corolla 29.0
+train130_buick_skylark_320 15.0
+train131_toyota_corona_mark_ii 24.0
+train132_ford_gran_torino 14.5
+train133_dodge_colt 26.0
+train134_pontiac_ventura_sj 18.5
+train135_oldsmobile_cutlass_ls 26.6
+train136_toyouta_corona_mark_ii_(sw) 23.0
+train137_amc_gremlin 19.0
+train138_chevrolet_malibu 20.5
+train139_oldsmobile_starfire_sx 23.8
+train140_amc_ambassador_dpl 15.0
+train141_volkswagen_scirocco 31.5
+train142_plymouth_satellite_custom_(sw) 14.0
+train143_toyota_corolla_liftback 26.0
+train144_ford_fairmont 26.4
+train145_plymouth_fury_gran_sedan 14.0
+train146_buick_century_luxus_(sw) 13.0
+train147_ford_granada_ghia 18.0
+train148_dodge_charger_2.2 36.0
+train149_chevrolet_concours 17.5
+train150_toyota_corona 27.5
+train151_pontiac_grand_prix_lj 16.0
+train152_dodge_colt_m/m 33.5
+train153_pontiac_astro 23.0
+train154_amc_gremlin 21.0
+train155_fiat_strada_custom 37.3
+train156_toyota_corona_hardtop 24.0
+train157_datsun_b210 31.0
+train158_volkswagen_dasher 30.5
+train159_plymouth_duster 23.0
+train160_mazda_626 31.6
+train161_buick_lesabre_custom 13.0
+train162_chevrolet_monte_carlo 15.0
+train163_peugeot_505s_turbo_diesel 28.1
+train164_datsun_610 22.0
+train165_ford_granada 18.5
+train166_pontiac_grand_prix 16.0
+train167_cadillac_seville 16.5
+train168_amc_concord 24.3
+train169_ford_mustang_gl 27.0
+train170_amc_matador 15.0
+train171_ford_gran_torino_(sw) 14.0
+train172_datsun_510_hatchback 37.0
+train173_dodge_rampage 32.0
+train174_datsun_b-210 32.0
+train175_datsun_210_mpg 37.0
+train176_plymouth_horizon_tc3 34.5
+train177_ford_pinto 19.0
+train178_chrysler_new_yorker_brougham 13.0
+train179_chrysler_cordoba 15.5
+train180_oldsmobile_cutlass_salon_brougham 19.9
+train181_plymouth_satellite_custom 16.0
+train182_maxda_glc_deluxe 34.1
+train183_datsun_1200 35.0
+train184_ford_pinto 26.5
+train185_volkswagen_rabbit_l 36.0
+train186_audi_100ls 23.0
+train187_chevrolet_citation 28.8
+train188_buick_electra_225_custom 12.0
+train189_datsun_200sx 32.9
+train190_dodge_colt_hatchback_custom 35.7
+train191_honda_accord_lx 29.5
+train192_plymouth_custom_suburb 13.0
+train193_toyota_mark_ii 20.0
+train194_oldsmobile_omega_brougham 26.8
+train195_ford_ltd_landau 17.6
+train196_chevy_c10 13.0
+train197_dodge_colt 28.0
+train198_oldsmobile_cutlass_supreme 17.0
+train199_ford_pinto_(sw) 22.0
+train200_chevrolet_vega 25.0
+train201_pontiac_catalina_brougham 14.0
+train202_ford_futura 18.1
+train203_honda_civic 33.0
+train204_ford_mustang 18.0
+train205_chevrolet_vega_(sw) 22.0
+train206_buick_century 17.0
+train207_dodge_aspen 19.1
+train208_subaru_dl 33.8
+train209_plymouth_fury_iii 15.0
+train210_fiat_128 29.0
+train211_volvo_264gl 17.0
+train212_dodge_aries_se 29.0
+train213_datsun_510 27.2
+train214_chevrolet_chevelle_malibu_classic 16.0
+train215_ford_ranger 28.0
+train216_vw_dasher_(diesel) 43.4
+train217_chevy_c20 10.0
+train218_buick_skyhawk 21.0
+train219_peugeot_504 23.0
+train220_ford_f250 10.0
+train221_dodge_diplomat 19.4
+train222_honda_civic_(auto) 32.0
+train223_chevrolet_caprice_classic 17.0
+train224_toyota_corolla_1200 32.0
+train225_plymouth_volare_premier_v8 13.0
+train226_opel_manta 26.0
+train227_mercedes_benz_300d 25.4
+train228_chevrolet_cavalier_wagon 27.0
+train229_vw_rabbit 29.0
+train230_toyota_corolla 32.2
+train231_buick_estate_wagon_(sw) 14.0
+train232_ford_f108 13.0
+train233_oldsmobile_omega 11.0
+train234_oldsmobile_cutlass_ciera_(diesel) 38.0
+train235_chevrolet_impala 14.0
+train236_volkswagen_dasher 25.0
+train237_ford_fairmont_futura 24.0
+train238_datsun_210 31.8
+train239_honda_accord_cvcc 31.5
+train240_mazda_glc 46.6
+train241_chevrolet_citation 28.0
+train242_datsun_810_maxima 24.2
+train243_ford_maverick 21.0
+train244_fiat_124_sport_coupe 26.0
+train245_chevrolet_vega 21.0
+train246_chevrolet_chevelle_malibu_classic 17.5
+train247_buick_skylark 26.6
+train248_renault_5_gtl 36.0
+train249_plymouth_duster 22.0
+train250_buick_regal_sport_coupe_(turbo) 17.7
+train251_mercury_lynx_l 36.0
+train252_dodge_aspen_6 20.6
+train253_oldsmobile_vista_cruiser 12.0
+train254_amc_pacer_d/l 17.5
+train255_ford_fairmont_4 22.3
+train256_chevrolet_chevelle_concours_(sw) 13.0
+train257_honda_accord 32.4
+train258_dodge_colt_hardtop 25.0
+train259_amc_hornet_sportabout_(sw) 18.0
+train260_toyota_corona 25.0
+train261_ford_fiesta 36.1
+train262_datsun_280-zx 32.7
+train263_chevrolet_impala 13.0
+train264_toyota_corolla 28.0
+train265_chevrolet_chevelle_malibu 17.0
+train266_volvo_diesel 30.7
+train267_pontiac_phoenix 27.0
+train268_dodge_colt_(sw) 28.0
+train269_vokswagen_rabbit 29.8
+train270_peugeot_504 27.2
+train271_chevrolet_vega_2300 28.0
+train272_ford_fairmont_(auto) 20.2
+train273_plymouth_grand_fury 16.0
+train274_plymouth_'cuda_340 14.0
+train275_ford_granada_l 22.0
+train276_volkswagen_rabbit_custom 29.0
+train277_honda_civic_cvcc 33.0
+train278_chevrolet_nova_custom 16.0
+train279_honda_civic_cvcc 36.1
+train280_volkswagen_type_3 23.0
+train281_toyota_corolla_tercel 38.1
+train282_datsun_pl510 27.0
+train283_ford_maverick 24.0
+train284_dodge_omni 30.9
+train285_plymouth_volare_custom 19.0
+train286_datsun_710 32.0
+train287_honda_civic_1300 35.1
+train288_saab_99le 24.0
+train289_honda_prelude 33.7
+train290_buick_skylark_limited 28.4
+train291_pontiac_catalina 14.0
+train292_mazda_rx-4 21.5
+train293_volkswagen_super_beetle 26.0
+train294_ford_fairmont_(man) 25.1
+train295_fiat_131 28.0
+train296_ford_escort_4w 34.4
+train297_plymouth_horizon_miser 38.0
+train298_ford_mustang_ii 13.0
+train299_saab_99e 25.0
+train300_fiat_124b 30.0