1.create a mvn project with pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>fifo</groupId> <artifactId>jubatusTest</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <java.source.level>1.7</java.source.level> <java.target.level>1.7</java.target.level> <maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.source>1.7</maven.compiler.source> <slf4j.version>1.6.2</slf4j.version> <log4j.version>1.2.17</log4j.version> </properties> <repositories> <repository> <id>jubat.us</id> <name>Jubatus Repository for Maven</name> <url>http://download.jubat.us/maven</url> </repository> </repositories> <dependencies> <dependency> <groupId>us.jubat</groupId> <artifactId>jubatus</artifactId> <version>0.7.1</version> <scope>compile</scope> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.3</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> </plugin> </plugins> </build> </project>
2. create a class
package jubatusTest; import java.util.Arrays; import java.util.List; import us.jubat.classifier.ClassifierClient; import us.jubat.classifier.EstimateResult; import us.jubat.classifier.LabeledDatum; import us.jubat.common.Datum; public class GenderMain { private static Datum makeDatum(String hair, String top, String bottom, double height) { return new Datum().addString("hair", hair).addString("top", top).addString("bottom", bottom) .addNumber("height", height); } private static LabeledDatum makeTrainDatum(String label, String hair, String top, String bottom, double height) { return new LabeledDatum(label, makeDatum(hair, top, bottom, height)); } public static void main(String[] args) throws Exception { String host = "127.0.0.1"; int port = 9199; String name = "test"; ClassifierClient client = new ClassifierClient(host, port, name, 1); LabeledDatum[] trainData = { // makeTrainDatum("male", "short", "sweater", "jeans", 1.70), makeTrainDatum("female", "long", "shirt", "skirt", 1.56), makeTrainDatum("male", "short", "jacket", "chino", 1.65), makeTrainDatum("female", "short", "T shirt", "jeans", 1.72), makeTrainDatum("male", "long", "T shirt", "jeans", 1.82), makeTrainDatum("female", "long", "jacket", "skirt", 1.43), }; client.train(Arrays.asList(trainData)); Datum[] testData = { // makeDatum("short", "T shirt", "jeans", 1.81), makeDatum("long", "shirt", "skirt", 1.50), }; List<List<EstimateResult>> results = client.classify(Arrays.asList(testData)); for (List<EstimateResult> result : results) { for (EstimateResult r : result) { System.out.printf("%s %f\n", r.label, r.score); } System.out.println(); } System.exit(0); } }
and configure file gender.json
{ "method": "AROW", "converter": { "num_filter_types": {}, "num_filter_rules": [], "string_filter_types": {}, "string_filter_rules": [], "num_types": {}, "num_rules": [], "string_types": { "unigram": { "method": "ngram", "char_num": "1" } }, "string_rules": [ { "key": "*", "type": "unigram", "sample_weight": "bin", "global_weight": "bin" } ] }, "parameter": { "regularization_weight" : 1.0 } }
3.start Jubatus standlone server
#source /opt/jubatus/profile
#jubaclassifier -f /path/to/gender.json
4.run GenderMain in eclipse
the result is
female -0.081500 male 0.474875 female 0.491617 male -0.336581
References
http://jubat.us/en/tutorial/classifier.html
http://jubat.us/en/tutorial/classifier_java.html