Errata

Practical Machine Learning with H2O

Errata for Practical Machine Learning with H2O

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Printed, PDF, ePub, Mobi, , Other Digital Version
Kindle Location 2762, Figure 5-3

The footnote says that the code for this graph is in file makeplot.building_energy_results.R, but I do not seem to have that file?

Note from the Author or Editor:
Thanks for catching that. I've just added that file to the github repository:
https://github.com/DarrenCook/h2o/blob/bk/code/makeplot.building_energy_results.R

Theodore Kahn  Mar 05, 2017  Jan 12, 2018
Printed, PDF, ePub, Mobi, , Other Digital Version
Page location 1492 0f 6652
Data set Building efficiency - let`s take a look

the histogram function is not working,

dummy <- lapply( colnames( train), function( col){
h <- h2o.hist( train[, col], breaks = 30, plot = FALSE)
plot( h, main = col, xlab = "", ylim = ylim) })

creates an error:

ERROR: Unexpected HTTP Status code: 400 Bad Request (url = http://localhost:54321/99/Rapids)

java.lang.IllegalArgumentException
[1] "java.lang.IllegalArgumentException: Hist only applies to single numeric columns."
[2] " water.rapids.ast.prims.advmath.AstHist.apply(AstHist.java:45)"
[3] " water.rapids.ast.prims.advmath.AstHist.apply(AstHist.java:21)"
[4] " water.rapids.ast.AstExec.exec(AstExec.java:63)"
[5] " water.rapids.ast.prims.assign.AstTmpAssign.apply(AstTmpAssign.java:48)"
[6] " water.rapids.ast.prims.assign.AstTmpAssign.apply(AstTmpAssign.java:17)"
[7] " water.rapids.ast.AstExec.exec(AstExec.java:63)"
[8] " water.rapids.Session.exec(Session.java:88)"
[9] " water.rapids.Rapids.exec(Rapids.java:85)"
[10] " water.api.RapidsHandler.exec(RapidsHandler.java:41)"
[11] " sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)"
[12] " sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)"
[13] " java.lang.reflect.Method.invoke(Method.java:498)"
[14] " water.api.Handler.handle(Handler.java:61)"
[15] " water.api.RequestServer.serve(RequestServer.java:429)"
[16] " water.api.RequestServer.doGeneric(RequestServer.java:280)"
[17] " water.api.RequestServer.doPost(RequestServer.java:217)"
[18] " javax.servlet.http.HttpServlet.service(HttpServlet.java:755)"
[19] " javax.servlet.http.HttpServlet.service(HttpServlet.java:848)"
[20] " org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)"
[21] " org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:503)"
[22] " org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)"
[23] " org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)"
[24] " org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)"
[25] " org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)"
[26] " org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429)"
[27] " org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)"
[28] " org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)"
[29] " org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)"
[30] " org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)"
[31] " org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)"
[32] " org.eclipse.jetty.server.Server.handle(Server.java:370)"
[33] " org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)"
[34] " org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)"
[35] " org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)"
[36] " org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)"
[37] " org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)"
[38] " org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)"
[39] " org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)"
[40] " org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)"
[41] " org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)"
[42] " org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)"
[43] " java.lang.Thread.run(Thread.java:745)"

Show Traceback

Rerun with Debug
Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page, :


ERROR MESSAGE:

Hist only applies to single numeric columns.

Note from the Author or Editor:
This appears to be a regression (in the software sense) in H2O. 3.10.x, because it used to work. I've reported it as a bug, and you can follow progress at: https://0xdata.atlassian.net/browse/PUBDEV-4573
The workaround is to wrap the train[,col] in as.numeric(). The code then becomes:

dummy <- lapply(colnames(train), function(col){
h <- h2o.hist( as.numeric(train[,col]), breaks = 30, plot = FALSE)
plot(h, main = col, xlab = "", ylim = ylim)
})

Iraklis Mardiris  Mar 14, 2017 
PDF
Page xi
4th paragraph, 2nd last senctence

fmake should probably be make.

Maybe you are reading this book because you want to be part of that
and fmake sure the transformations to come are done ethically and for the good of
everyone, whatever their race, sex, nationality, or beliefs

Note from the Author or Editor:
Thanks! Ironically it was another typo introduced during the final copyediting. Just fixed it.

David A Creelman  Aug 31, 2017  Jan 12, 2018
Printed, PDF, ePub, Mobi, , Other Digital Version
Page 7,8
Example 1-1 and 1-2

"data sets" should be "datasets" everywhere in the code.

In example 1-1 (Python code) the 3rd and 4th lines should look like:

datasets = "https://raw.githubusercontent.com/DarrenCook/h2o/bk/datasets/"
data = h2o.import_file(datasets + "iris_wheader.csv")

And in example 1-2 (R code) they should look like

datasets <- "https://raw.githubusercontent.com/DarrenCook/h2o/bk/datasets/"
data <- h2o.importFile(paste0(datasets",iris_wheader.csv"))

The problem also exists in chapter 2, but thankfully not in any of the other chapters.

Darren Cook
 
Dec 22, 2016  Jan 06, 2017
PDF
Page 8
2nd Line of Code

I noticed the fix for "data sets", but I didn't see an update for the importFile function. It currently reads as:

"data <- h2o.importFile(paste0(data sets",iris_wheader.csv"))"

It should read as:

"data <- h2o.importFile(paste0(data sets,"iris_wheader.csv"))

Where I moved the comma outside of the double quotation.

Note from the Author or Editor:
Thanks. Yes, the comma should be outside the quotes. Sorry about the mistake. (I've just fixed this, so it should be correct in the next ebook version.)

Mark Nuppnau  Jan 06, 2017  Jan 12, 2018
ePub
Page 21
3rd

There is a description of installing pandas.
It says 'install pip pandas', should probably be 'pip install pandas'.

Note from the Author or Editor:
Thanks, that was silly of me! Just fixed it.

David Creelman  Sep 03, 2017  Jan 12, 2018
ePub
Page 49

says
parts <- h2o.split(data, c(0.6, 0.2) )
gives error
Error: could not find function "h2o.split"
function should be splitFrame
> parts <- h2o.splitFrame(data, c(0.6, 0.2) )

Note from the Author or Editor:
Thanks, confirmed (p.43 in PDF). I've just fixed this, so it should be in the next version.

Geoff  Feb 18, 2017  Jan 12, 2018
PDF
Page 104-105
in code and in text

In the code and in the text, "train64K" should be "train60K"

Note from the Author or Editor:
Thanks, good catch. Just fixed.

Helene G  Sep 08, 2017  Jan 12, 2018
Printed, PDF, ePub, Mobi, , Other Digital Version
Page 195
4th paragraph

The parameter name should be "autoencoder", not "auto-encoder". (Just fixed, so it should be correct in the next e-book version.)

Darren Cook
 
Jan 25, 2017  Jan 12, 2018
Printed, PDF, ePub, Mobi, , Other Digital Version
Page 228
Example 9-2

This line:
from h2o.estimators.K-means import H2OKMeansEstimator

should be:
from h2o.estimators.kmeans import H2OKMeansEstimator

Darren Cook
 
Jan 25, 2017  Jan 12, 2018
Printed, PDF, ePub, Mobi, , Other Digital Version
Page 230
Example 9-3

The parameter name should be "autoencoder", not "auto-encoder". (Just fixed, so it should be correct in the next e-book version.)

Darren Cook
 
Jan 25, 2017  Jan 12, 2018
Printed, PDF, ePub, Mobi, , Other Digital Version
Page 3137
Figure 4-3

Does the diagram transpose Train and Valid for m-3 ?

Note from the Author or Editor:
Aarrghhh! You are right. Great catch. I missed this when it came back from the designer. Sorry. (p.104 in pdf and print, I think.) We'll try and get it fixed quickly.
UPDATE: I fixed this, and so it will be correct in the next version.

Aarron Gull  Jan 01, 2017  Jan 12, 2018