小编iva*_*ler的帖子

将自定义模块导入Jupyter Notebook

是的,我知道这是一个经常性的问题,但我仍然找不到令人信服的答案。我什至在https://chrisyeh96.github.io/2017/08/08/definitive-guide-python-imports.html上阅读,但找不到解决方法:

我正在运行包含jupyter(ipython)笔记本的python 3.6项目。我希望笔记本电脑导入一个自定义的本地helpers.py程序包,以后我可能还会在其他来源中使用它。

项目结构类似于:

my_project/
?
??? my_project/
?   ??? notebooks/
?       ??? a_notebook.ipynb
?   ??? __init__.py     # suppose to make package `my_project` importable
?   ??? helpers.py
?
??? tests/
?   ??? helpers_tests.py
?
??? .gitignore
??? LICENSE
??? README.md
??? requirements.txt
??? setup.py
Run Code Online (Sandbox Code Playgroud)

导入helpers笔记本时出现错误:

----> 4 import helpers

ModuleNotFoundError: No module named 'helpers'
Run Code Online (Sandbox Code Playgroud)

我也尝试过from my_project import helpers并且得到相同的错误ModuleNotFoundError: No module named 'my_project'

我终于(并暂时)使用了通常的技巧:

import sys
sys.path.append('..')
import helpers
Run Code Online (Sandbox Code Playgroud)

但它看起来很糟糕,我仍在寻找更好的解决方案

python import jupyter-notebook

9
推荐指数
2
解决办法
8647
查看次数

Scala/Spark数据帧:找到与max相对应的列名

在Scala/Spark中,有一个数据帧:

val dfIn = sqlContext.createDataFrame(Seq(
  ("r0", 0, 2, 3),
  ("r1", 1, 0, 0),
  ("r2", 0, 2, 2))).toDF("id", "c0", "c1", "c2")
Run Code Online (Sandbox Code Playgroud)

我想计算一个新列maxCol拿着名称对应于(各行)的最大值之列.在这个例子中,输出应该是:

+---+---+---+---+------+
| id| c0| c1| c2|maxCol|
+---+---+---+---+------+
| r0|  0|  2|  3|    c2|
| r1|  1|  0|  0|    c0|
| r2|  0|  2|  2|    c1|
+---+---+---+---+------+
Run Code Online (Sandbox Code Playgroud)

实际上,数据框有超过60列.因此,需要通用的解决方案.

Python Pandas中的等价物(是的,我知道,我应该与pyspark进行比较......)可能是:

dfOut = pd.concat([dfIn, dfIn.idxmax(axis=1).rename('maxCol')], axis=1) 
Run Code Online (Sandbox Code Playgroud)

scala dataframe argmax apache-spark apache-spark-sql

6
推荐指数
1
解决办法
1440
查看次数

spark-shell:导入奇怪的行为

我正在使用spark-shell(Spark版本2.1.0,使用Scala版本2.11.8,OpenJDK 64位服务器VM,1.7.0_151).

我导入Column类:

scala> import org.apache.spark.sql.Column
import org.apache.spark.sql.Column
Run Code Online (Sandbox Code Playgroud)

我可以定义一个Column对象:

scala> val myCol: Column = col("blah")
myCol: org.apache.spark.sql.Column = blah
Run Code Online (Sandbox Code Playgroud)

Column在函数定义中使用:

scala> def myFunc(c: Column) = ()
myFunc: (c: org.apache.spark.sql.Column)Unit
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是在定义类时,Column找不到:

scala> case class myClass(c: Column)
<console>:11: error: not found: type Column
       case class myClass(c: Column)
Run Code Online (Sandbox Code Playgroud)

然而,单线程工作:

scala> case class myClass(c: org.apache.spark.sql.Column)
defined class myClass
Run Code Online (Sandbox Code Playgroud)

要么

scala> import org.apache.spark.sql.Column; case class myClass(c: Column)
import org.apache.spark.sql.Column
defined class myClass
Run Code Online (Sandbox Code Playgroud)

shell scala apache-spark scala-repl

6
推荐指数
1
解决办法
172
查看次数

使用 AWS SageMaker Python SDK 批量转换稀疏矩阵

我已使用 AWS SageMaker 成功训练了 Scikit-Learn LSVC 模型。
我想在一个相对较大的数据集上进行批量预测(又名批量变换),该数据集是一个形状为 252772 x 185128 的 scipy 稀疏矩阵。(特征数量很高,因为存在词袋的单热编码和 ngrams 特征)。

我之所以挣扎是因为:

  • 数据的大小

  • 数据的格式

我做了几个实验来检查发生了什么:

1. 对样本稀疏矩阵数据进行本地预测

它的工作原理
是在 SageMaker 笔记本上本地反序列化模型工件并根据稀疏矩阵的样本进行预测。
这只是为了检查模型是否可以对此类数据进行预测。

2. 对样本 csv 数据进行批量转换

它有效
在 SageMaker 上启动批量转换作业并请求以密集 csv 格式转换小样本:它有效,但显然无法扩展。
代码是:

sklearn_model = SKLearnModel(
    model_data=model_artifact_location_on_s3,
    entry_point='my_script.py',
    role=role,
    sagemaker_session=sagemaker_session)

transformer = sklearn_model.transformer(
   instance_count=1, 
   instance_type='ml.m4.xlarge', 
   max_payload=100)

transformer.transform(
   data=batch_data, 
   content_type='text/csv',
   split_type=None)   

print('Waiting for transform job: ' + transformer.latest_transform_job.job_name)
transformer.wait()

Run Code Online (Sandbox Code Playgroud)

在哪里:

  • 'my_script.py' 实现了一个简单的model_fn反序列化模型工件:
def model_fn(model_dir):
    clf = joblib.load(os.path.join(model_dir, "model.joblib"))
    return clf
Run Code Online (Sandbox Code Playgroud)
  • batch_data是 csv 文件的 …

python sparse-matrix amazon-web-services scikit-learn amazon-sagemaker

5
推荐指数
0
解决办法
1076
查看次数