小编Bas*_*Bas的帖子

将一个 DataFrame 分组到一个新的 DataFrame 中,并以 arange 作为索引

我有一个问题,在这个例子中简化了。考虑这个 Pandas DataFrame,df_a:

df_a=pd.DataFrame([['1001',34.3,'red'],['1001',900.04,'red'],['1001',776,'red'],['1003',18.95,'green'],['1004',321.2,'blue']],columns=['id','amount','name'])

    id      amount  name
0   1001    34.30   red
1   1001    900.04  red
2   1001    776.00  red
3   1003    18.95   green
4   1004    321.20  blue
Run Code Online (Sandbox Code Playgroud)

我想通过将数量相加到一个新的 DataFrame 并创建一个新的类似“arange”的索引来对这个数据帧进行分组。这应该是我想要的结果:

    id      amount
0   1001    1710.34
1   1003    18.95
2   1004    321.20
Run Code Online (Sandbox Code Playgroud)

但是我的努力创建了一个系列(我想要一个 DataFrame 作为结果):

df_a.groupby(['id'])['amount'].sum()

id
1001    1710.34
1003      18.95
1004     321.20
Name: amount, dtype: float64
Run Code Online (Sandbox Code Playgroud)

或者根据 id 列创建一个新索引:

pd.DataFrame(df_a.groupby(['id'])['amount'].sum())

        amount
id  
1001    1710.34
1003    18.95
1004    321.20
Run Code Online (Sandbox Code Playgroud)

我也试过传递 index 参数,但这也不起作用:

pd.DataFrame(df_a.groupby(['id'])['amount'].sum(),index=df_a.index.values)

   amount
0   NaN
1   NaN
2   NaN
3 …
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-groupby

7
推荐指数
2
解决办法
2万
查看次数

部署时,SageMaker 无法提取容器的模型数据存档 tar.gz

我正在尝试在 Amazon Sagemaker 中部署现有的 Scikit-Learn 模型。这个模型不是在 SageMaker 上训练的,而是在我的机器上本地训练的。

在我的本地(Windows)计算机上,我已将模型保存为 model.joblib 并将模型压缩为 model.tar.gz。

接下来,我将此模型上传到我的 S3 存储桶(“my_bucket”),路径为 s3://my_bucket/models/model.tar.gz。我可以在 S3 中看到 tar 文件。

但是当我尝试部署模型时,它不断给出错误消息“无法提取模型数据存档”。

.tar.gz 是通过在 powershell 命令窗口中运行“tar -czf model.tar.gz model.joblib”在我的本地计算机上生成的。

上传到S3的代码

import boto3
s3 = boto3.client("s3", 
              region_name='eu-central-1', 
              aws_access_key_id=AWS_KEY_ID, 
              aws_secret_access_key=AWS_SECRET)
s3.upload_file(Filename='model.tar.gz', Bucket=my_bucket, Key='models/model.tar.gz')
Run Code Online (Sandbox Code Playgroud)

创建估计器和部署的代码:

import boto3
from sagemaker.sklearn.estimator import SKLearnModel

...

model_data = 's3://my_bucket/models/model.tar.gz'
sklearn_model = SKLearnModel(model_data=model_data,
                             role=role,
                             entry_point="my-script.py",
                             framework_version="0.23-1")
predictor = sklearn_model.deploy(instance_type="ml.t2.medium", initial_instance_count=1)                             
Run Code Online (Sandbox Code Playgroud)

错误信息:

错误消息:UnexpectedStatusException:托管端点 sagemaker-scikit-learn-2021-01-24-17-24-42-204 时出错:失败。原因:无法从 URL“s3://my_bucket/models/model.tar.gz”提取容器“container_1”的模型数据存档。请确保 URL 中的对象是有效的 tar.gz 存档

有没有办法查看存档无效的原因?

deployment machine-learning scikit-learn amazon-sagemaker

5
推荐指数
1
解决办法
5586
查看次数