I have not used SciDB with existing machine learning packages. So I can only share with you some general opinions that I have.
SciDB provides low-level “building blocks”, such as operators to do matrix multiplication, filter by attributes, filter by dimensions, or join. Machine learning algorithms are at a higher level, that need to use those building blocks. So to use SciDB to do machine learning, it may be inevitable to implement the learning methods yourself. There are, however, three ways to do it. The most popular use case is to implement some functionalities as scripts. Some functionalities that are self-contained and reusable may be implemented as user-defined operators, expanding the set of building blocks. Another possibility is, if you have some low-level third-party code (e.g. code that compresses/decompresses/understands/compares DNS sequences), you may implement a user-defined type and overload some operations such as == or <, that wraps over the third-party code.
In terms of scripting, a lot of people are using SciDB through SciDB-R. You mentioned SciDB-Py, which is fine but I am not sure we may support it forever. Personally I wrote some Python scripts (e.g. see remove_arrays.py in the bin directory of any SciDB installation) using our own scidblib Python package (also in the bin directory) that wraps over iquery. My vision is we will maintain and expand the scidblib Python package in the long run, and at some point publish the part of it that we will commit to support.
Hope this helps.