MCPcopy Create free account
hub / github.com/WinVector/Logistic / score

Method score

src/com/winvector/logistic/LogisticScore.java:126–230  ·  view source on GitHub ↗
(final Model model, final Iterable<BurstMap> testSource, final File resultFile)

Source from the content-addressed store, hash-verified

124
125 // can load into DB and get marginals with SQL like: select MODEL_CHOSEN_OUTCOME,RATING,COUNT(1) from scored1 group by MODEL_CHOSEN_OUTCOME,RATING
126 public static double score(final Model model, final Iterable<BurstMap> testSource, final File resultFile) throws FileNotFoundException, IOException, ClassNotFoundException {
127 final Log log = LogFactory.getLog(LogisticScore.class);
128 final DModel<ExampleRow> sigmoidLoss = new SigmoidLossMultinomial(model.config.dim(),model.config.noutcomes());
129 final PrintStream p;
130 if(null!=resultFile) {
131 p = new PrintStream(new FileOutputStream(resultFile));
132 } else {
133 p = null;
134 }
135 ArrayList<String> headerFlds = null;
136 long nToCompare = 0;
137 long nRight = 0;
138 long[][] confusionMatrix = new long[model.config.noutcomes()][model.config.noutcomes()];
139 final Ticker ticker = new Ticker("LogisticScore");
140 for(final BurstMap row: testSource) {
141 ticker.tick();
142 if(null==headerFlds) {
143 headerFlds = new ArrayList<String>(row.keySet());
144 if(null!=p) {
145 for(int i=0;i<model.config.noutcomes();++i) {
146 final String cat = model.config.outcome(i);
147 if(i>0) {
148 p.print("\t");
149 }
150 p.print("model.predict" + "." + model.config.def().resultColumn + "." + cat);
151 }
152 p.print("\t" + "model.chosen.Outcome");
153 p.print("\t" + "model.predict.Outcome");
154 for(final String fldi: headerFlds) {
155 p.print("\t" + fldi);
156 }
157 p.println();
158 }
159 }
160 int catInt = -1;
161 final String resStr = row.getAsString(model.config.def().resultColumn);
162 if(resStr!=null) {
163 final Integer category = model.config.category(resStr);
164 if(category!=null) {
165 catInt = category;
166 }
167 }
168 final SparseSemiVec vector = model.config.vector(row);
169 if(null!=vector) {
170 final ExampleRow ei = new SparseExampleRow(vector,model.config.weight(row),catInt);
171 final double[] pred = sigmoidLoss.predict(model.coefs,ei);
172 final int argMax = HelperFns.argmax(pred);
173 if(null!=p) {
174 for(int i=0;i<model.config.noutcomes();++i) { // non-empty list
175 if(i!=0) {
176 p.print("\t");
177 }
178 p.print(pred[i]);
179 }
180 p.print("\t" + model.config.outcome(argMax));
181 p.print("\t" + pred[argMax]);
182 for(final String hiK: headerFlds) {
183 String value = row.getAsString(hiK);

Callers 6

testTrainScoreMethod · 0.95
testTestScoreMethod · 0.95
testTrainScoreMethod · 0.95
testMRTrainMethod · 0.95
runMethod · 0.95
mainMethod · 0.95

Calls 12

tickMethod · 0.95
predictMethod · 0.95
argmaxMethod · 0.95
outcomeMethod · 0.80
defMethod · 0.80
vectorMethod · 0.80
dimMethod · 0.65
noutcomesMethod · 0.65
categoryMethod · 0.65
weightMethod · 0.65
keySetMethod · 0.45
toStringMethod · 0.45

Tested by 4

testTrainScoreMethod · 0.76
testTestScoreMethod · 0.76
testTrainScoreMethod · 0.76
testMRTrainMethod · 0.76