Skip to main content

@Airbnb's Aerosolve API is a gift to the #ML community! (part II)

...
  Airbnb’s Aerosolve #machinelearning API contains a number of Java classes representing standard mathematical models. These classes implement the API’s Model interface -- requiring them to implement the interface’s scoreItem and debugScoreItem methods.

  The purpose of the debugScoreItem method is to provide an explanation as to how the item was scored along with the score.

In order to score an item, a Thrift struct appropriately named FeatureVector is required as input.

If you’re curious, a Thrift struct is similar to a class in OOP minus inheritance.

As a Thrift struct, the FeatureVector has a very simplistic structure as is shown below:

struct FeatureVector {

  1: optional map<string, set<string>> stringFeatures; 
  2: optional map<string, map<string, double>> floatFeatures;
  3: optional map<string, list<double>> denseFeatures;
}

What this essentially says is a FeatureVector will have as its core one of these three structures. The key of each of these maps represents a feature family.  

A typical example of a string feature would be to have a feature family of "geo" with an associated set of string feature values of "PHL", "PA", and "USA."  

An example of a float feature will be given later.

...

Popular posts from this blog

More Guice Please!!!: Re-Learning Google's Agile Lightweight Dependency Injection Library (Part 1.1)

Google Guice is used as a lightweight dependency injection framework that further assists developers in modularizing their applications.  Google shared this very useful library with the development community in 2010 in between the Java SE 6 and Java SE 7 releases.  This library is used in some of Java’s (and now Scala’s) most prominent libraries and platforms such as the Simian Army platform shared by Netflix.
We will begin our discussion of Google Guice with its Module interface.  In the Guice developers’ own words, ‘A Guice-based application is ultimately composed of little more than a set of modules and some bootstrapping code.’  We will not be using this interface directly, but it gives us a very good context from which to start.  Instead, we will be extending the abstract class that implements it -- intuitively named AbstractModule.  
If you ever get a chance to look at the Module interface JavaDoc or source code, you’ll see a configure method taking a parameter of type Binder.  
Li…

#processing @Microsoft #office #Excel files with @TheASF POI (part II)

...
     Apache POI's OPCPackage abstract class represents a container that can store multiple data objects.  It is central to the processing of Excel(*.xlsx) files.  We only need to use its static open method to process an InputStream instance.  Further, we can "read" these Excel files via the XSSFWorkbook class.  This class is a high level representation of a SpreadsheetML workbook.  From an XSSFWorkbook, we can get any existing XSSFSheets within the workbook.  Then, we can further subdivide any XSSFSheet into rows and analyze the cell data within the rows.  In general, given certain assumptions in the format of the Excel document, we can extract data as text  from a cell and perform any number of business processes.

     In the Java function code excerpt below, we assume we have an Excel(*.xlsx) file represented as an InputStream.

        @Override
    public Iterator<Row> apply(InputStream inputStream) {

        try(OPCPackage pkg = OPCPackage.open(…

Installing Drupal 7 on Oracle Linux 7 (Part 1.2)

Now, let's see if we can put together a docker command that will get our MySQL container up and running.  First, let's create a volume for our MySQL instance.

        docker volume create --name mysql_volume

    The following command, then, should create an instance of a MySQL container with a drupal database created on startup.

        docker run --restart=always -d -name mysql -p 3306:3306 \
        -e MYSQL_DATABASE=drupal \
        -e MYSQL_USER=drupal \
        -e MYSQL_PASSWORD=+3fRExawr7fu \
     -v mysql_volume:/var/lib/mysql \
     mysql/mysql-server

    After giving it a moment to get going, the 'docker ps' command should give us the status of our new container.

    We'll also want to execute a 'docker logs' command to get out temporary MySQL password.

     #docker logs mysql

    Next, in order to more easily handle the administration of our MySQL Server, we can run phpmyadmin(https://www.phpmyadmin.com) as a Docker container that's linked …