1
0
mirror of https://github.com/sjwhitworth/golearn.git synced 2025-04-26 13:49:14 +08:00

Merge pull request #105 from savorywatt/perceptron

Perceptron
This commit is contained in:
Stephen Whitworth 2015-01-27 09:52:43 +00:00
commit 545ec789c4
4 changed files with 778 additions and 0 deletions

View File

@ -0,0 +1,34 @@
package main
import (
"fmt"
base "github.com/sjwhitworth/golearn/base"
evaluation "github.com/sjwhitworth/golearn/evaluation"
perceptron "github.com/sjwhitworth/golearn/perceptron"
"math/rand"
)
func main() {
rand.Seed(4402201)
rawData, err := base.ParseCSVToInstances("../datasets/house-votes-84.csv", true)
if err != nil {
panic(err)
}
//Initialises a new AveragePerceptron classifier
cls := perceptron.NewAveragePerceptron(10, 1.2, 0.5, 0.3)
//Do a training-test split
trainData, testData := base.InstancesTrainTestSplit(rawData, 0.50)
fmt.Println(trainData)
fmt.Println(testData)
cls.Fit(trainData)
predictions := cls.Predict(testData)
// Prints precision/recall metrics
confusionMat, _ := evaluation.GetConfusionMatrix(testData, predictions)
fmt.Println(evaluation.GetSummary(confusionMat))
}

View File

@ -0,0 +1,436 @@
v16,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,party
1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,democrat
1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,democrat
1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,1,democrat
1,-1,1,1,-1,1,1,-1,-1,-1,-1,-1,-1,1,1,1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,republican
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
-1,-1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,republican
-1,-1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,democrat
-1,1,1,1,-1,-1,1,1,1,-1,1,1,-1,-1,-1,1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,-1,-1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,-1,-1,republican
1,1,-1,1,-1,-1,1,-1,1,-1,1,1,1,-1,-1,-1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,republican
1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
1,1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,democrat
1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,1,1,-1,republican
1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
1,1,1,1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,-1,1,-1,republican
1,1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,1,-1,1,-1,-1,-1,1,1,1,1,1,-1,1,-1,1,democrat
-1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
-1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
-1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,democrat
-1,1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,democrat
1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
-1,1,-1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,democrat
1,1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,-1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
-1,1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,1,1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,1,-1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,-1,republican
1,-1,1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,-1,republican
1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,1,1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,democrat
1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,democrat
1,1,1,-1,1,1,1,1,-1,-1,-1,-1,1,1,1,-1,republican
1,-1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,democrat
1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,democrat
1,1,1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,-1,republican
-1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
1,1,-1,1,1,1,-1,1,-1,1,1,-1,-1,1,1,-1,republican
1,1,-1,1,-1,-1,1,1,1,1,1,1,-1,-1,1,1,democrat
-1,-1,1,1,1,1,1,-1,-1,-1,1,1,-1,1,1,-1,democrat
-1,-1,1,1,-1,1,1,-1,-1,-1,1,1,1,1,1,-1,democrat
1,-1,1,1,1,1,1,-1,1,1,1,1,1,1,1,-1,democrat
1,1,1,1,-1,1,1,-1,-1,-1,1,1,-1,1,1,-1,democrat
-1,-1,-1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,-1,democrat
1,1,-1,1,-1,-1,-1,1,1,-1,1,1,1,-1,1,-1,democrat
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,-1,1,-1,1,1,-1,-1,-1,1,1,1,1,1,-1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,-1,1,1,-1,1,1,1,-1,1,1,1,-1,1,1,-1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,republican
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,democrat
1,1,1,1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,democrat
1,1,-1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,democrat
1,1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,democrat
1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,1,1,-1,democrat
1,1,-1,-1,-1,1,1,1,-1,-1,1,1,-1,-1,1,-1,democrat
1,1,1,1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,1,-1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,democrat
1,1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,-1,democrat
-1,1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,democrat
-1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,democrat
-1,-1,-1,-1,-1,-1,1,1,1,1,1,-1,-1,1,1,-1,democrat
1,1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,republican
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
1,1,1,1,1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,republican
1,-1,1,1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,-1,1,-1,republican
1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,1,1,-1,republican
1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,1,1,democrat
1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,-1,-1,-1,1,democrat
-1,-1,-1,1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,-1,1,-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,1,-1,1,1,1,-1,-1,-1,1,1,1,1,-1,-1,republican
1,-1,-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,1,1,democrat
1,-1,-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,1,-1,democrat
1,1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,1,1,-1,republican
1,-1,-1,-1,1,1,1,1,1,1,1,-1,1,1,1,-1,republican
1,-1,-1,-1,1,1,1,1,1,1,1,-1,1,1,1,-1,republican
1,-1,1,-1,-1,-1,-1,1,1,1,1,1,-1,-1,1,1,democrat
-1,-1,-1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,-1,democrat
1,-1,-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,1,-1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1,1,1,1,1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,-1,republican
1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,1,democrat
1,1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,1,1,-1,1,1,1,-1,-1,1,-1,1,-1,1,1,-1,democrat
1,-1,1,1,-1,-1,1,-1,1,1,1,1,-1,1,-1,1,democrat
1,-1,-1,1,-1,-1,1,1,1,1,1,1,-1,1,1,-1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,1,1,-1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,republican
-1,1,1,-1,1,1,1,1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,1,1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,1,1,-1,-1,1,1,1,1,1,1,-1,-1,-1,-1,democrat
1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1,1,1,1,democrat
1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,1,-1,democrat
1,-1,1,1,-1,1,1,1,-1,-1,-1,1,1,1,1,-1,democrat
1,-1,1,-1,1,1,1,1,-1,-1,-1,-1,1,1,1,-1,republican
-1,1,1,-1,-1,1,1,-1,-1,-1,1,1,1,1,1,-1,democrat
-1,-1,1,1,-1,-1,1,1,1,1,1,1,-1,1,-1,1,democrat
1,1,-1,1,1,1,1,1,1,-1,1,-1,1,-1,1,1,republican
1,1,-1,1,1,1,1,1,1,-1,1,1,1,-1,1,1,republican
-1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,1,1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,1,-1,democrat
-1,1,-1,1,-1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,-1,-1,-1,-1,1,1,-1,-1,-1,1,1,1,1,1,-1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,-1,-1,1,1,-1,-1,1,1,1,1,-1,-1,-1,1,1,republican
1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,democrat
-1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
-1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,-1,-1,democrat
1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,-1,1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,1,-1,1,-1,republican
1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,-1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,1,1,democrat
1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,-1,1,-1,-1,1,1,-1,1,1,1,-1,-1,-1,1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,-1,1,-1,-1,1,1,1,1,-1,1,1,-1,1,1,democrat
1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,-1,1,-1,republican
-1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,democrat
-1,1,1,-1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,democrat
1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,democrat
1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,1,1,1,1,1,1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,1,1,1,-1,republican
1,-1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,-1,-1,democrat
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,-1,1,-1,republican
1,1,-1,-1,1,1,1,1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,1,1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,democrat
1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
1,-1,1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,democrat
1,1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,democrat
-1,1,1,1,-1,1,1,-1,-1,-1,1,-1,-1,-1,1,1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,democrat
-1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
-1,-1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,-1,-1,1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,-1,-1,1,-1,-1,1,1,1,1,-1,1,-1,-1,1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,-1,-1,republican
1,-1,1,1,1,1,1,1,-1,1,1,-1,1,1,1,-1,republican
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,-1,1,-1,1,1,1,-1,-1,1,1,-1,1,1,1,-1,republican
-1,-1,1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,democrat
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,-1,1,-1,republican
1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,1,1,1,-1,-1,-1,1,1,-1,-1,democrat
-1,1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,1,democrat
1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,-1,1,1,republican
1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,1,1,-1,republican
1,1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,1,1,democrat
1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,republican
1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,1,-1,1,democrat
1,1,-1,1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,democrat
1,-1,-1,1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,republican
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,republican
1,1,-1,1,-1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,1,1,1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,1,democrat
-1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,republican
1,-1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,republican
1,-1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,democrat
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,-1,1,-1,republican
1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,republican
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,1,1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,-1,-1,-1,1,1,-1,1,1,-1,1,-1,1,1,1,-1,republican
1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,1,1,republican
-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,1,republican
1,-1,-1,1,1,1,1,1,1,-1,1,-1,-1,-1,1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,democrat
-1,1,-1,1,1,1,1,1,1,-1,-1,-1,-1,-1,1,-1,republican
-1,1,-1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,-1,-1,1,-1,-1,1,1,1,1,1,1,-1,-1,-1,-1,democrat
1,-1,-1,1,-1,-1,1,1,1,1,1,1,-1,-1,-1,1,democrat
-1,-1,-1,1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,democrat
1,1,1,1,-1,-1,1,1,1,1,-1,1,-1,1,-1,-1,democrat
1,1,1,1,-1,1,1,-1,1,-1,1,1,-1,1,1,1,democrat
-1,1,1,1,-1,1,1,-1,1,-1,1,1,-1,1,1,-1,democrat
1,1,-1,1,-1,-1,1,-1,1,1,1,-1,-1,1,1,-1,democrat
1,1,-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,1,-1,democrat
1,1,-1,1,-1,-1,1,1,1,-1,1,1,-1,1,1,1,democrat
1,1,1,1,-1,-1,1,1,1,1,1,1,-1,1,1,1,democrat
-1,-1,1,1,-1,-1,1,1,1,-1,1,1,-1,1,1,-1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,-1,-1,-1,republican
1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,1,1,republican
-1,1,1,1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,-1,1,-1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,democrat
1,-1,1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,1,democrat
1,-1,-1,-1,1,1,-1,1,1,1,1,-1,1,1,1,-1,republican
1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,-1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,1,-1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,1,republican
1,-1,-1,1,-1,-1,1,1,1,1,1,-1,-1,1,-1,-1,democrat
1,1,1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,-1,1,1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,1,-1,1,1,1,1,1,-1,-1,1,1,1,1,1,republican
-1,-1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,republican
-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,1,1,1,1,democrat
1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
-1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,1,1,-1,-1,1,-1,1,1,1,-1,-1,1,1,-1,democrat
1,1,1,1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,-1,democrat
-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,1,1,-1,democrat
-1,1,1,1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,republican
1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,democrat
1,1,1,-1,1,-1,-1,1,1,1,-1,1,-1,-1,1,-1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,democrat
-1,1,-1,1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,-1,1,1,-1,-1,1,1,1,-1,-1,1,1,-1,-1,1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,-1,republican
1,-1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,-1,1,-1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,1,1,democrat
-1,1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,1,-1,1,-1,republican
1,-1,-1,1,-1,-1,1,1,1,1,1,1,-1,-1,-1,1,democrat
1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,1,-1,1,democrat
1,-1,-1,-1,1,1,-1,1,-1,1,1,-1,-1,-1,1,-1,republican
1,-1,-1,1,-1,-1,-1,1,1,1,1,1,-1,-1,-1,1,democrat
1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,1,-1,1,1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,1,democrat
1,-1,1,1,1,1,1,1,1,1,-1,-1,1,1,1,-1,republican
1,-1,1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,1,democrat
1,-1,-1,1,1,1,1,1,1,1,1,-1,1,1,1,1,republican
-1,-1,1,-1,1,-1,1,1,1,1,-1,1,-1,1,-1,1,democrat
1,-1,-1,1,1,1,1,1,-1,-1,1,1,1,1,1,-1,republican
1,-1,1,1,-1,-1,1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,1,-1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,1,1,republican
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,1,1,1,-1,-1,1,1,1,1,1,1,1,1,1,-1,democrat
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,1,-1,1,-1,-1,1,1,1,1,1,-1,-1,1,-1,-1,democrat
-1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,1,-1,democrat
1,1,1,1,-1,-1,1,1,1,1,1,1,1,1,-1,-1,democrat
-1,1,1,-1,1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,republican
1,1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,republican
-1,-1,1,-1,-1,1,1,-1,-1,-1,1,1,-1,1,1,-1,democrat
-1,1,-1,1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,-1,democrat
-1,1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,1,democrat
1,-1,1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,1,1,-1,republican
1,1,1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,1,democrat
-1,1,1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
-1,-1,1,1,1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,democrat
1,-1,1,1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,democrat
1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,1,1,1,-1,-1,1,-1,1,1,-1,1,-1,1,-1,1,democrat
-1,1,1,1,-1,1,1,1,1,1,1,1,-1,1,1,-1,democrat
-1,1,1,-1,1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,democrat
1,1,1,1,-1,1,1,-1,1,1,1,1,-1,-1,-1,-1,democrat
1,1,1,1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,democrat
-1,1,1,-1,-1,1,1,-1,-1,-1,-1,1,1,1,1,1,democrat
-1,-1,-1,1,-1,1,1,-1,1,-1,-1,1,-1,-1,-1,-1,democrat
-1,1,1,1,-1,1,1,-1,1,1,-1,1,-1,-1,1,-1,democrat
-1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,democrat
-1,1,-1,1,-1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,democrat
-1,-1,-1,-1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1,-1,democrat
-1,1,1,-1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,1,democrat
1,1,1,-1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,republican
-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,-1,1,1,-1,-1,republican
1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,-1,1,-1,-1,democrat
1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,-1,1,democrat
1,1,1,1,-1,1,1,-1,1,-1,-1,1,-1,1,-1,1,democrat
1,1,1,-1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,democrat
1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,democrat
-1,-1,1,-1,1,-1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,1,1,1,1,1,-1,republican
1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,-1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,-1,1,-1,republican
1,1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,1,-1,1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,democrat
1,1,-1,1,-1,-1,1,1,1,1,-1,-1,1,-1,1,1,democrat
-1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,republican
1,1,-1,1,-1,-1,1,1,1,1,1,1,-1,-1,-1,-1,democrat
1,-1,-1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1,1,1,1,1,1,1,1,1,-1,1,-1,-1,-1,1,-1,republican
1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
1,-1,1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,-1,-1,democrat
1,1,1,-1,1,1,1,-1,-1,-1,1,-1,-1,1,1,-1,republican
1,1,1,1,-1,-1,-1,1,1,1,1,1,-1,1,-1,-1,democrat
1,1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,democrat
1,1,1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,democrat
1,1,1,1,1,1,1,1,1,-1,1,-1,-1,1,1,-1,republican
1,-1,1,1,-1,1,1,1,1,-1,-1,1,-1,1,-1,1,democrat
1,-1,-1,1,-1,-1,1,1,1,1,-1,1,-1,-1,-1,1,democrat
1,-1,1,1,-1,-1,1,1,1,1,-1,1,-1,-1,1,1,democrat
1,-1,1,1,-1,-1,-1,1,1,1,1,1,-1,-1,1,1,democrat
-1,-1,-1,1,-1,-1,-1,1,1,-1,1,1,-1,-1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,democrat
1,-1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,1,-1,republican
1,-1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,1,-1,1,democrat
1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,-1,-1,1,democrat
1,-1,-1,1,1,1,1,-1,-1,1,1,-1,1,1,1,-1,republican
1,-1,-1,1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,democrat
1,-1,-1,-1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,republican
1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,republican
-1,-1,1,-1,1,1,1,-1,-1,-1,1,-1,1,1,1,-1,republican
1 v16 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 party
2 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
3 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
4 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 democrat
5 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 democrat
6 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 democrat
7 1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 democrat
8 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 democrat
9 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 republican
10 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
11 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
12 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 republican
13 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 republican
14 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 democrat
15 -1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 democrat
16 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 republican
17 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 republican
18 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 democrat
19 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 democrat
20 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 republican
21 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
22 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 democrat
23 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
24 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
25 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
26 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
27 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
28 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
29 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
30 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 republican
31 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
32 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
33 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
34 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 democrat
35 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
36 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
37 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
38 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 republican
39 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 republican
40 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
41 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 democrat
42 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
43 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
44 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
45 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
46 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 democrat
47 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 democrat
48 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
49 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 democrat
50 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 democrat
51 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
52 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
53 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
54 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
55 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
56 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 democrat
57 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 republican
58 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 republican
59 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
60 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
61 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
62 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
63 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
64 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
65 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 democrat
66 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 democrat
67 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 republican
68 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 republican
69 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
70 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 democrat
71 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
72 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 democrat
73 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 republican
74 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
75 1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 republican
76 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 democrat
77 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 democrat
78 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 democrat
79 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 democrat
80 1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 democrat
81 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 republican
82 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 democrat
83 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 democrat
84 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
85 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
86 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
87 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 democrat
88 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
89 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
90 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 democrat
91 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 republican
92 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
93 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 democrat
94 1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 democrat
95 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 democrat
96 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 democrat
97 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 democrat
98 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 democrat
99 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 democrat
100 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 democrat
101 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
102 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 democrat
103 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 democrat
104 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 democrat
105 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 democrat
106 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 democrat
107 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 democrat
108 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
109 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 republican
110 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
111 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
112 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
113 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
114 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 democrat
115 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
116 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
117 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
118 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
119 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 republican
120 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 democrat
121 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
122 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
123 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
124 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 republican
125 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 republican
126 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
127 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
128 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
129 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 democrat
130 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 democrat
131 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 democrat
132 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
133 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 democrat
134 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
135 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
136 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
137 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
138 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 republican
139 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 democrat
140 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 democrat
141 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 democrat
142 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 republican
143 1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 republican
144 1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 republican
145 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 democrat
146 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 democrat
147 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 democrat
148 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
149 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 democrat
150 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 republican
151 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 democrat
152 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
153 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 democrat
154 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 democrat
155 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 democrat
156 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
157 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 republican
158 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 republican
159 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 democrat
160 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
161 -1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 democrat
162 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 democrat
163 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 democrat
164 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 democrat
165 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 republican
166 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 democrat
167 -1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 democrat
168 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 republican
169 1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 republican
170 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 democrat
171 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 democrat
172 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 democrat
173 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
174 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
175 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 democrat
176 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
177 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
178 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 republican
179 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 democrat
180 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 democrat
181 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
182 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
183 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 democrat
184 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
185 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 democrat
186 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 democrat
187 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
188 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 democrat
189 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
190 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 republican
191 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
192 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
193 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
194 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 democrat
195 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
196 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 democrat
197 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
198 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 democrat
199 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 republican
200 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 democrat
201 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 democrat
202 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 democrat
203 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
204 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 democrat
205 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
206 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 republican
207 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 democrat
208 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 republican
209 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 republican
210 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
211 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 democrat
212 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 democrat
213 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
214 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
215 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 democrat
216 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
217 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 democrat
218 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 democrat
219 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
220 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
221 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 democrat
222 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
223 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 democrat
224 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
225 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 republican
226 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 republican
227 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
228 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 democrat
229 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
230 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 republican
231 1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 republican
232 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
233 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 republican
234 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 democrat
235 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
236 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 democrat
237 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 republican
238 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
239 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 democrat
240 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 democrat
241 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 republican
242 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 republican
243 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 democrat
244 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 republican
245 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 democrat
246 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 democrat
247 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 democrat
248 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 democrat
249 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 republican
250 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 republican
251 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 democrat
252 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
253 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
254 1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 democrat
255 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
256 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 democrat
257 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 democrat
258 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 republican
259 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 republican
260 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
261 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
262 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 democrat
263 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
264 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
265 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
266 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
267 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 democrat
268 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 republican
269 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 republican
270 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
271 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
272 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
273 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
274 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
275 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 republican
276 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 republican
277 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 democrat
278 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 republican
279 1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 republican
280 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
281 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
282 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 democrat
283 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 republican
284 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 republican
285 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
286 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 democrat
287 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 democrat
288 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 democrat
289 1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 democrat
290 1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 democrat
291 -1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 democrat
292 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 democrat
293 1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 democrat
294 1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 democrat
295 1 1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 1 democrat
296 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 democrat
297 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 republican
298 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 republican
299 -1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 democrat
300 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 democrat
301 1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 democrat
302 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 1 -1 republican
303 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 democrat
304 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 republican
305 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
306 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
307 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
308 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
309 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 democrat
310 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
311 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 democrat
312 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 republican
313 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 democrat
314 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
315 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
316 1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 republican
317 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 republican
318 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 democrat
319 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
320 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
321 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
322 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 democrat
323 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 democrat
324 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 democrat
325 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 democrat
326 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 republican
327 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 democrat
328 1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 democrat
329 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
330 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 democrat
331 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 democrat
332 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
333 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
334 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
335 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
336 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 democrat
337 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 republican
338 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 democrat
339 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 democrat
340 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 democrat
341 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 republican
342 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 republican
343 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 democrat
344 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 democrat
345 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 republican
346 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 democrat
347 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 republican
348 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
349 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
350 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 democrat
351 1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 republican
352 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 democrat
353 1 -1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 1 republican
354 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 democrat
355 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 republican
356 1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 democrat
357 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 republican
358 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
359 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
360 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 democrat
361 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
362 1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 democrat
363 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 democrat
364 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 democrat
365 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 republican
366 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 republican
367 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 democrat
368 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 democrat
369 -1 1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 democrat
370 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 democrat
371 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 republican
372 1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 democrat
373 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
374 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 democrat
375 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 democrat
376 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
377 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 democrat
378 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
379 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 republican
380 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
381 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
382 1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 democrat
383 -1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 democrat
384 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 democrat
385 1 1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 democrat
386 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 democrat
387 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 democrat
388 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 democrat
389 -1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 democrat
390 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 democrat
391 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 democrat
392 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 democrat
393 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 democrat
394 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 republican
395 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 republican
396 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 democrat
397 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 democrat
398 1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 democrat
399 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 democrat
400 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 democrat
401 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
402 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 republican
403 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 republican
404 1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 republican
405 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 republican
406 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
407 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
408 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 democrat
409 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 democrat
410 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 democrat
411 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
412 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 republican
413 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 democrat
414 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican
415 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 republican
416 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
417 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 democrat
418 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 republican
419 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 democrat
420 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 democrat
421 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 democrat
422 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 republican
423 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 democrat
424 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 democrat
425 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 democrat
426 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 democrat
427 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 democrat
428 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 democrat
429 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 1 -1 republican
430 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 democrat
431 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 democrat
432 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 republican
433 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 democrat
434 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 republican
435 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 republican
436 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 republican

196
perceptron/average.go Normal file
View File

@ -0,0 +1,196 @@
package perceptron
import (
base "github.com/sjwhitworth/golearn/base"
"math"
)
const MaxEpochs = 10
type AveragePerceptron struct {
TrainingData base.FixedDataGrid
weights []float64
edges []float64
bias float64
threshold float64
learningRate float64
trainError float64
trained bool
count float64
}
type instance struct {
class string
features []float64
}
type instances []instance
func (p *AveragePerceptron) updateWeights(features []float64, correction float64) {
for i, _ := range p.weights {
fv := &features[i]
if fv != nil {
update := p.learningRate * correction * *fv
p.weights[i] = update
p.edges[i]++
}
}
p.average()
}
func (p *AveragePerceptron) average() {
for i, fcount := range p.edges {
wv := &p.weights[i]
if wv != nil {
p.weights[i] = (p.count**wv + fcount) / (fcount + 1)
}
}
p.count++
}
func (p *AveragePerceptron) score(datum instance) float64 {
score := 0.0
for i, wv := range p.weights {
score += datum.features[i] * wv
}
if score >= p.threshold {
return 1.0
}
return -1.0
}
func (p *AveragePerceptron) Fit(trainingData base.FixedDataGrid) {
epochs := 0
p.trainError = 0.1
learning := true
data := processData(trainingData)
for learning {
for _, datum := range data {
response := p.score(datum)
expected := 0.0
correction := expected - response
if expected != response {
p.updateWeights(datum.features, correction)
p.trainError += math.Abs(correction)
}
}
epochs++
if epochs >= MaxEpochs {
learning = false
}
}
p.average()
p.trained = true
p.TrainingData = trainingData
}
// param base.IFixedDataGrid
// return base.IFixedDataGrid
func (p *AveragePerceptron) Predict(what base.FixedDataGrid) base.FixedDataGrid {
if !p.trained {
panic("Cannot call Predict on an untrained AveragePerceptron")
}
data := processData(what)
allAttrs := base.CheckCompatible(what, p.TrainingData)
if allAttrs == nil {
// Don't have the same Attributes
return nil
}
// Remove the Attributes which aren't numeric
allNumericAttrs := make([]base.Attribute, 0)
for _, a := range allAttrs {
if fAttr, ok := a.(*base.FloatAttribute); ok {
allNumericAttrs = append(allNumericAttrs, fAttr)
}
}
ret := base.GeneratePredictionVector(what)
classAttr := ret.AllClassAttributes()[0]
classSpec, err := ret.GetAttribute(classAttr)
if err != nil {
panic(err)
}
for i, datum := range data {
result := p.score(datum)
if result > 0.0 {
ret.Set(classSpec, i, base.PackU64ToBytes(1))
} else {
ret.Set(classSpec, 1, []byte{0, 0, 0, 0, 0, 0, 0, 0})
}
}
return ret
}
func processData(x base.FixedDataGrid) instances {
_, rows := x.Size()
result := make(instances, rows)
// Retrieve numeric non-class Attributes
numericAttrs := base.NonClassFloatAttributes(x)
numericAttrSpecs := base.ResolveAttributes(x, numericAttrs)
// Retrieve class Attributes
classAttrs := x.AllClassAttributes()
if len(classAttrs) != 1 {
panic("Only one classAttribute supported!")
}
// Check that the class Attribute is categorical
// (with two values) or binary
classAttr := classAttrs[0]
if attr, ok := classAttr.(*base.CategoricalAttribute); ok {
if len(attr.GetValues()) != 2 {
panic("To many values for Attribute!")
}
} else if _, ok := classAttr.(*base.BinaryAttribute); ok {
} else {
panic("Wrong class Attribute type!")
}
// Convert each row
x.MapOverRows(numericAttrSpecs, func(row [][]byte, rowNo int) (bool, error) {
// Allocate a new row
probRow := make([]float64, len(numericAttrSpecs))
// Read out the row
for i, _ := range numericAttrSpecs {
probRow[i] = base.UnpackBytesToFloat(row[i])
}
// Get the class for the values
class := base.GetClass(x, rowNo)
instance := instance{class, probRow}
result[rowNo] = instance
return true, nil
})
return result
}
func NewAveragePerceptron(features int, learningRate float64, startingThreshold float64, trainError float64) *AveragePerceptron {
weights := make([]float64, features)
edges := make([]float64, features)
p := AveragePerceptron{nil, weights, edges, startingThreshold, learningRate, trainError, 0.0, false, 0}
return &p
}

112
perceptron/average_test.go Normal file
View File

@ -0,0 +1,112 @@
package perceptron
import (
"fmt"
"github.com/sjwhitworth/golearn/base"
"github.com/sjwhitworth/golearn/evaluation"
"path/filepath"
"testing"
)
func TestProcessData(t *testing.T) {
absPath, _ := filepath.Abs("../examples/datasets/house-votes-84.csv")
rawData, err := base.ParseCSVToInstances(absPath, true)
trainData, _ := base.InstancesTrainTestSplit(rawData, 0.5)
if err != nil {
t.Fatal("Could not test processData. Could not load CSV")
}
if rawData == nil {
t.Fatal("Could not test processData. Could not load CSV")
}
result := processData(trainData)
_, size := trainData.Size()
if len(result) != size {
t.Errorf("Expected %d, Got %d", size, len(result))
}
}
func TestFit(t *testing.T) {
a := NewAveragePerceptron(10, 1.2, 0.5, 0.3)
if a == nil {
t.Errorf("Unable to create average perceptron")
}
absPath, _ := filepath.Abs("../examples/datasets/house-votes-84.csv")
rawData, err := base.ParseCSVToInstances(absPath, true)
if err != nil {
t.Fail()
}
trainData, _ := base.InstancesTrainTestSplit(rawData, 0.7)
a.Fit(trainData)
if a.trained == false {
t.Errorf("Perceptron was not trained")
}
}
func TestPredict(t *testing.T) {
a := NewAveragePerceptron(10, 1.2, 0.5, 0.3)
if a == nil {
t.Errorf("Unable to create average perceptron")
}
absPath, _ := filepath.Abs("../examples/datasets/house-votes-84.csv")
rawData, err := base.ParseCSVToInstances(absPath, true)
if err != nil {
t.Fail()
}
trainData, testData := base.InstancesTrainTestSplit(rawData, 0.5)
a.Fit(trainData)
if a.trained == false {
t.Errorf("Perceptron was not trained")
}
predictions := a.Predict(testData)
cf, err := evaluation.GetConfusionMatrix(testData, predictions)
if err != nil {
t.Errorf("Couldn't get confusion matrix: %s", err)
t.Fail()
}
fmt.Println(evaluation.GetSummary(cf))
fmt.Println(trainData)
fmt.Println(testData)
if evaluation.GetAccuracy(cf) < 0.65 {
t.Errorf("Perceptron not trained correctly")
}
}
func TestCreateAveragePerceptron(t *testing.T) {
a := NewAveragePerceptron(10, 1.2, 0.5, 0.3)
if a == nil {
t.Errorf("Unable to create average perceptron")
}
}
func BenchmarkFit(b *testing.B) {
a := NewAveragePerceptron(10, 1.2, 0.5, 0.3)
absPath, _ := filepath.Abs("../examples/datasets/house-votes-84.csv")
rawData, _ := base.ParseCSVToInstances(absPath, true)
trainData, _ := base.InstancesTrainTestSplit(rawData, 0.5)
b.ResetTimer()
for i := 0; i < b.N; i++ {
a.Fit(trainData)
}
}