Python SystemML:无法导入子模块mllearn(因此无法导入Keras2DML函数)

Python SystemML:无法导入子模块mllearn(因此无法导入Keras2DML函数),python,apache-spark,data-science-experience,systemml,Python,Apache Spark,Data Science Experience,Systemml,我正在使用IBM Watson Studio(默认的spark python环境),并尝试将Keras模型转换为systemml DML,并在spark上对其进行训练 !pip install systemml import systemml 这执行得很好。但是这个- from systemml import mllearn 投掷 SyntaxError:仅允许在模块级别导入* dir(systemml) 这并不意味着要学习 我试图从和安装它 和git克隆,但未成功。我做错了什么?您需

我正在使用IBM Watson Studio(默认的spark python环境),并尝试将Keras模型转换为systemml DML,并在spark上对其进行训练

!pip install systemml 
import systemml
这执行得很好。但是这个-

from systemml import mllearn 
投掷 SyntaxError:仅允许在模块级别导入*

dir(systemml)
这并不意味着要学习

我试图从和安装它 和git克隆,但未成功。我做错了什么?

您需要执行dir(systemml.mllearn)来查看mllearn函数

>>> dir(systemml.mllearn)
['Caffe2DML', 'Keras2DML', 'LinearRegression', 'LogisticRegression', 
'NaiveBayes', 'SVM', '__all__', '__builtins__', '__doc__', '__file__', 
'__name__', '__package__', '__path__', 'estimators']
请从pypi.org安装SystemML 1.2。1.2是2018年8月的最新版本。1.0版只有实验支持

您能否尝试只导入MLContext,看看加载主SystemML jar文件是否有效,以及您的安装使用的版本

>>> from systemml import MLContext
>>> ml = MLContext(sc)

Welcome to Apache SystemML!
Version 1.2.0

>>> print (ml.buildTime())
2018-08-17 05:58:31 UTC

>>> from sklearn import datasets, neighbors
>>> from systemml.mllearn import LogisticRegression

>>> y_digits = digits.target 
>>> n_samples = len(X_digits) 
>>> X_train = X_digits[:int(.9 * n_samples)] 
>>> y_train = y_digits[:int(.9 * n_samples)] 
>>> X_test = X_digits[int(.9 * n_samples):] 
>>> y_test = y_digits[int(.9 * n_samples):] 
>>> 
>>> logistic = LogisticRegression(spark)
>>> 
>>> print('LogisticRegression score: %f' % logistic.fit(X_train, y_train).score(X_test, y_test))
18/10/20 00:15:52 WARN BaseSystemMLEstimatorOrModel: SystemML local memory     budget:5097 mb. Approximate free memory available on the driver JVM:416 mb.
18/10/20 00:15:52 WARN StatementBlock: WARNING: [line 81:0] -> maxinneriter --     Variable maxinneriter defined with different value type in if and else clause.
18/10/20 00:15:53 WARN SparkExecutionContext: Configuration parameter     spark.driver.maxResultSize set to 1 GB. You can set it through Spark default configuration setting either to 0 (unlimited) or to available memory budget of size 4 GB.
BEGIN MULTINOMIAL LOGISTIC REGRESSION SCRIPT
...

该代码适用于Python2.7内核,但不适用于Python3.5内核。提交修复了Python 3.5的问题。如果要在本地环境中修复较旧的发布版本,请执行两个步骤:

A.修复Python 3.5的缩进要求:

pip install autopep8
find /<location>/systemml/ -name '*.py' | xargs autopep8 --in-place --aggressive
find /<location>/systemml/mllearn/ -name '*.py' | xargs autopep8 --in-place --aggressive

由于修复程序已经交付,您必须等待下一个版本,即1.3.0。或者,您可以生成并安装最新版本:

git clone https://github.com/apache/systemml.git
cd systemml
mvn package -P distribution
pip install target/systemml-1.3.0-SNAPSHOT-python.tar.gz
谢谢


Niketan。

最终如果您正在使用IBM cloud notebook,这将非常有效

(一)

(二)

~

~

!pip安装systemml-正在下载(9.7MB)………………。…。。成功安装了Pillow-5.3.0 numpy-1.15.2 pandas-0.23.4 python-dateutil-2.7.3 pytz-2018.5 scikit-learn-0.20.0 scipy-1.1.0 six-1.11.0 systemml-1.2.0……….但是:从systemml导入MLContext ml=MLContext(sc)打印(ml.buildTime())给出“2017-04-19 21:45:10 UTC”在pip安装后是否重新启动内核?如果是,然后,您的pip命令将在“专用”区域安装SystemML 1.2,而您的笔记本环境将从不同的路径中拾取旧的SystemML。您需要找出类路径,并将pip安装的SystemML JAR添加到其中。“pip show systemml”将向您显示安装路径。我总是创建一个符号链接来将我的JAR添加到类路径中。默认情况下,~/data/libs/“位于类路径中,用户JAR将从中拾取。如果是这种情况,并且假设您的JAR安装在~/.local/lib/…,那么创建以下链接应该可以解决您的问题。并重新启动你的内核!ln-s-f~/.local/lib/python2.7/site-packages/systemml/systemml-java/systemml-1.2.0-extra.jar~/data/libs/systemml-1.2.0-extra.jar!ln-s-f~/.local/lib/python2.7/site-packages/systemml/systemml-java/systemml-1.2.0.jar~/data/libs/systemml-1.2.0.jar
import keras
from .keras2caffe import convertKerasToCaffeNetwork, convertKerasToCaffeSolver​​​​​​​, convertKerasToSystemMLModel 
git clone https://github.com/apache/systemml.git
cd systemml
mvn package -P distribution
pip install target/systemml-1.3.0-SNAPSHOT-python.tar.gz
! pip install --upgrade https://github.com/niketanpansare/future_of_data/raw/master/systemml-1.3.0-SNAPSHOT-python.tar.gz
!ln -s -f /home/spark/shared/user-libs/python3/systemml/systemml-java/systemml-1.3.0-SNAPSHOT-extra.jar ~/user-libs/spark2/systemml-1.3.0-SNAPSHOT-extra.jar


!ln -s -f /home/spark/shared/user-libs/python3/systemml/systemml-java/systemml-1.3.0-SNAPSHOT.jar ~/user-libs/spark2/systemml-1.3.0-SNAPSHOT.jar