小编Nav*_*ala的帖子

如何按两个日期列对熊猫数据框进行排序

我有一个像这样的熊猫数据框:

   column_year  column_Month  a_integer_column
0   2014        April         25.326531
1   2014        August        25.544554
2   2015        December      25.678261
3   2014        February      24.801187
4   2014        July          24.990338
...  ...           ...           ...
68  2018        November      26.024931
69  2017        October       25.677333
70  2019        September     24.432361
71  2020        February      25.383648
72  2020        January       25.504831
Run Code Online (Sandbox Code Playgroud)

我现在想先对年份列进行排序,然后对月份列进行排序,如下所示:

   column_year  column_Month  a_integer_column
3   2014        February      24.801187
0   2014        April         25.326531
4   2014        July          24.990338
1   2014        August        25.544554
2   2015        December      25.678261
...  ...           ...            ...
69  2017        October       25.677333 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

6
推荐指数
2
解决办法
251
查看次数

如何在 Windows 10 上安装特定 Python 版本的包?

我目前在Windows 10上有 Python 3.7.4(64 位)和 Python 3.6.6(64 位)这两个版本都在我的系统环境变量(路径)中。

我以前只有3.7,安装了3.6来使用pocketsphinx,现在我想升级PyAudio我的3.6。所做的pip install --upgrade pyaudio就是升级pyaudio3.7。那么,如何在 Windows 计算机上升级(甚至安装)特定 python 版本的包?

这也是我尝试过的:
python-3.6.6 pip install --upgrade pyaudio
python3.6.6 pip install --upgrade pyaudio和。 是的,这些也许很愚蠢,但我却无可奈何。
python3.6 pip install --upgrade pyaudio
pip3.6.6 install --upgrade pyaudio

编辑1:
我还pip install --upgrade pyaudio通过在安装Python 3.6的目录中打开它来在power shell中运行,这是(Windows的默认安装目录):C:\Users\--user-name--\AppData\Local\Programs\Python\Python36例如: 这就是正在发生的事情,但它不起作用 从版本中可以看出,pip install仍然会安装 python 3.7 的新软件包

python package-managers python-3.x

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

使用sklearn宏f1-score作为tensorflow.keras中的指标

我已经为tensorflow.keras定义了自定义指标,以在每个时期之后计算宏f1分数,如下所示:

from tensorflow import argmax as tf_argmax
from sklearn.metric import f1_score

def macro_f1(y_true, y_pred):
    # labels are one-hot encoded. so, need to convert
    # [1,0,0] to 0 and
    # [0,1,0] to 1 and
    # [0,0,1] to 2. Then pass these arrays to sklearn f1_score.
    y_true = tf_argmax(y_true, axis=1)
    y_pred = tf_argmax(y_pred, axis=1)
    return f1_score(y_true, y_pred, average='macro')
Run Code Online (Sandbox Code Playgroud)

并在模型编译期间使用它

model_4.compile(loss = 'categorical_crossentropy',
                optimizer = Adam(lr=init_lr, decay=init_lr / num_epochs),
                metrics = [Recall(name='recall') #, weighted_f1
                           macro_f1])
Run Code Online (Sandbox Code Playgroud)

当我尝试像这样适应时:

history_model_4 = model_4.fit(train_image_generator.flow(x=train_imgs, y=train_targets, batch_size=batch_size),
                            validation_data = …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow

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

watchdog(python) - 仅监视一种文件格式并忽略“PatternMatchingEventHandler”中的所有其他内容

我正在运行本文中的代码,并进行了一些更改以监视仅一种格式(位于.csv指定目录中)的文件创建/添加。

现在的问题是:

每当添加的新文件不是 .csv 格式时,我的程序就会中断(停止监视,但继续运行);为了弥补这一点,这就是我对ignore_patterns参数所做的事情(但在添加其他格式的新文件后程序仍然停止监视):
PatternMatchingEventHandler(patterns="*.csv", ignore_patterns=["*~"], ignore_directories=True, case_sensitive=True)

完整的代码是:

import time
import csv
from datetime import datetime
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler
from os import path
from pandas import read_csv
# class that takes care of everything
class file_validator(PatternMatchingEventHandler):
    def __init__(self, source_path):
        # setting parameters for 'PatternMatchingEventHandler'
        super(file_validator, self).__init__(patterns="*.csv", ignore_patterns=["*~"], ignore_directories=True, case_sensitive=True)
        self.source_path = source_path
        self.print_info = None

    def on_created(self, event):
        # this is the new file that was created …
Run Code Online (Sandbox Code Playgroud)

python csv file-handling python-3.x python-watchdog

4
推荐指数
1
解决办法
2604
查看次数

如何修复因“FailureReason”而失败的 SageMaker 数据质量监控计划作业:“作业输入没有数据”

我尝试按照此 AWS 文档页面中提到的步骤在 AWS SageMaker 中安排数据质量监控作业。我已为我的端点启用数据捕获。然后,在我的训练 csv 文件上训练基线,S3 中提供统计数据和约束,如下所示:

from sagemaker import get_execution_role
from sagemaker import image_uris
from sagemaker.model_monitor.dataset_format import DatasetFormat

my_data_monitor = DefaultModelMonitor(
    role=get_execution_role(),
    instance_count=1,
    instance_type='ml.m5.large',
    volume_size_in_gb=30,
    max_runtime_in_seconds=3_600)

# base s3 directory
baseline_dir_uri = 's3://api-trial/data_quality_no_headers/'
# train data, that I have used to generate baseline
baseline_data_uri = baseline_dir_uri + 'ch_train_no_target.csv'
# directory in s3 bucket that I have stored my baseline results to 
baseline_results_uri = baseline_dir_uri + 'baseline_results_try17/'


my_data_monitor.suggest_baseline(
    baseline_dataset=baseline_data_uri,
    dataset_format=DatasetFormat.csv(header=True),
    output_s3_uri=baseline_results_uri,
    wait=True, logs=False, job_name='ch-dq-baseline-try21'
)
Run Code Online (Sandbox Code Playgroud)

并且数据在 …

amazon-web-services aws-sdk amazon-sagemaker

4
推荐指数
1
解决办法
1369
查看次数

让shiny的`dateRangeInput`的`end`总是大于`start`

我正在制作一个闪亮的应用程序dateRangeInput。我想以这样的方式进行日期选择,即用户无法在第二个日期输入中选择比第一个日期输入更小的日期。
示例图像
例如,从上图中,shiny现在让用户在第一个日期输入中选择 2018 年 7 月 26 日后,在第二个日期输入中选择 2017 年的日期。我现在想要进行更改,以便第二个日期输入始终在第一个日期输入后的一天开始,就像用户无法选择甚至在第二个输入中看到 2018 年 7 月 26 日一样,并且总是看到之后的一天,例如 2018 年 7 月 27 日,之后在第一个日期输入中选择 2018 年 7 月 26 日。我检查过 的文档dateRangeInput,那里没有任何可用的内容。
那么,我该怎么做呢?

r shiny shiny-reactivity

3
推荐指数
1
解决办法
710
查看次数

Pandas - 如何对格式化为字符串的周和年数字进行排序?

我有一个像这样的熊猫数据框,排序如下:

>>> weekly_count.sort_values(by='date_in_weeks', inplace=True)
>>> weekly_count.loc[:9,:]

  date_in_weeks count
0   1-2013      362
1   1-2014      378
2   1-2015      201
3   1-2016      294
4   1-2017      300
5   1-2018      297
6   10-2013     329
7   10-2014     314
8   10-2015     324
9   10-2016     322
Run Code Online (Sandbox Code Playgroud)

在上面的数据中,第一列,所有行都date_in_weeks只是“一年中的周数 - 年”。我现在想这样排序:

  date_in_weeks count
0   1-2013      362
6   10-2013     329
1   1-2014      378
7   10-2014     314
2   1-2015      201
8   10-2015     324
3   1-2016      294
9   10-2016     322
4   1-2017      300
5   1-2018      297
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

python sorting data-analysis dataframe pandas

2
推荐指数
1
解决办法
506
查看次数

AWS SageMaker - 如何加载经过训练的 sklearn 模型以用于推理?

我正在尝试将使用 sklearn 训练的模型部署到端点,并将其用作预测的 API。我只想使用 sagemaker 来部署和服务器模型,我使用 序列化joblib,仅此而已。我读过的每个博客和 sagemaker python 文档都表明 sklearn 模型必须在 sagemaker 上进行训练才能部署在 sagemaker 中。

当我浏览 SageMaker 文档时,我了解到 sagemaker 确实允许用户加载存储在 S3 中的序列化模型,如下所示:

def model_fn(model_dir):
    clf = joblib.load(os.path.join(model_dir, "model.joblib"))
    return clf
Run Code Online (Sandbox Code Playgroud)

这就是文档对论点的描述model_dir

SageMaker 将注入通过 save 保存的模型文件和子目录的挂载目录。您的模型函数应该返回一个可用于模型服务的模型对象。

这再次意味着必须对 sagemaker 进行培训。

那么,有没有一种方法可以指定我的序列化模型的 S3 位置,并让 sagemaker 从 S3 反序列化(或加载)模型并将其用于推理?

编辑 1:

我在应用程序的答案中使用了代码,尝试从 SageMaker Studio 的笔记本进行部署时出现以下错误。我相信 SageMaker 会抱怨培训不是在 SageMaker 上完成的。

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-4-6662bbae6010> in <module>
      1 predictor = model.deploy(
      2     initial_instance_count=1, …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services scikit-learn amazon-sagemaker

2
推荐指数
1
解决办法
1408
查看次数

对seaborn histplot 中的重叠条有一些指示

在用seaborn绘制的直方图中,当条形由于使用而重叠时hue,颜色会发生变化,通常无法区分。这使得很难向人们解释这些情节。当有 10 个用渐变绘制的类时,这变得越来越困难,并且理解哪种颜色在哪种颜色上变得更加困难。那么,如何在绘图或图例中显示结果颜色是由于多个条的重叠而产生的。

# imports
from sklearn.datasets import load_iris
from matplotlib import pyplot as plt
%matplotlib inline
import seaborn as sns

# getting the data
iris = load_iris(as_frame=True)['frame']

# make the histogram
sns.set(rc={'figure.figsize':(20, 5)})
sns.histplot(data=iris, x='sepal length (cm)', hue='target')
plt.show()
Run Code Online (Sandbox Code Playgroud)

在突出显示区域中显示重叠: 在此输入图像描述

我想坚持使用直方图。

我该怎么做呢?

python matplotlib python-3.x seaborn

2
推荐指数
1
解决办法
2672
查看次数

如何将 sklearn Pipeline 上的每个步骤应用于选定的列?

当我查找 sklearn.Pipeline 中的步骤如何准备仅在某些列上操作时,我从stackoverflow 上的这个答案中偶然发现了sklearn.Pipeline.FeatureUnion。但是,我不太清楚如何不对我不想要的列应用任何内容并将完整的数据传递到下一步。例如,在我的第一步中,我只想应用于某些列,可以使用下面所示的代码来完成,但问题是下一步将只有标准缩放的列。如何在下一步中获得完整的数据以及上一步中标准缩放的列?StandardScaler

这是一些示例代码:

from sklearn.pipeline import Pipeline, FeatureUnion, make_pipeline
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.neighbors import KNeighborsClassifier

class Columns(BaseEstimator, TransformerMixin):
    def __init__(self, names=None):
        self.names = names

    def fit(self, X, y=None, **fit_params):
        return self

    def transform(self, X):
        return X[self.names]


pipe = Pipeline([
    # steps below applies on only some columns
    ("features", FeatureUnion([
        ('numeric', make_pipeline(Columns(names=[list of numeric column names]), StandardScaler())),
    ])),
    ('feature_engineer_step1', FeatEng_1()),
    ('feature_engineer_step2', FeatEng_2()),
    ('feature_engineer_step3', FeatEng_3()),
    ('remove_skew', Skew_Remover()),

    # …
Run Code Online (Sandbox Code Playgroud)

python pipeline python-3.x scikit-learn

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

tensorflow.keras.Tokenizer - AttributeError:“float”对象没有属性“lower”,没有空值,也没有带有浮点数的列

我在 stackoverflow 上读到的类似错误的所有答案都建议修复空值或修复数据类型。我的数据帧或浮点数中都没有空值。但是,错误仍然存​​在。

以下是有关我的数据的一些信息:
关于空值(据我所知,numpy.nans 在 pandas 中被编码为浮点数):
在此输入图像描述
关于数据类型:
在此输入图像描述

当我这样做时:

from tensorflow.keras.preprocessing.text import Tokenizer
title_tokeniser = Tokenizer(num_words=10)
title_tokeniser.fit_on_texts(train_set.loc[:,'title'] + test_set.loc[:,'title'])
Run Code Online (Sandbox Code Playgroud)

这是错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-38-26b704f1c0a1> in <module>()
      1 title_tokeniser = Tokenizer(num_words=10)
----> 2 title_tokeniser.fit_on_texts(train_set.loc[:,'title'] + test_set.loc[:,'title'])
      3 
      4 # unique tokens found in titles are:
      5 title_token_index = title_tokeniser.word_index

1 frames
/usr/local/lib/python3.6/dist-packages/keras_preprocessing/text.py in fit_on_texts(self, texts)
    223                                             self.filters,
    224                                             self.lower,
--> 225                                             self.split)
    226             for w in seq:
    227                 if w in self.word_counts:

/usr/local/lib/python3.6/dist-packages/keras_preprocessing/text.py in …
Run Code Online (Sandbox Code Playgroud)

python text tokenize keras tensorflow

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

pyspark - 无法从日期列获取一年中的季度和周

我有一个 pyspark 数据框,如下所示:

+--------+----------+---------+----------+-----------+--------------------+
|order_id|product_id|seller_id|      date|pieces_sold|       bill_raw_text|
+--------+----------+---------+----------+-----------+--------------------+
|     668|    886059|     3205|2015-01-14|         91|pbdbzvpqzqvtzxone...|
|    6608|    541277|     1917|2012-09-02|         44|cjucgejlqnmfpfcmg...|
|   12962|    613131|     2407|2016-08-26|         90|cgqhggsjmrgkrfevc...|
|   14223|    774215|     1196|2010-03-04|         46|btujmkfntccaewurg...|
|   15131|    769255|     1546|2018-11-28|         13|mrfsamfuhpgyfjgki...|
|   15625|     86357|     2455|2008-04-18|         50|wlwsliatrrywqjrih...|
|   18470|     26238|      295|2009-03-06|         86|zrfdpymzkgbgdwFwz...|
|   29883|    995036|     4596|2009-10-25|         86|oxcutwmqgmioaelsj...|
|   38428|    193694|     3826|2014-01-26|         82|yonksvwhrfqkytypr...|
|   41023|    949332|     4158|2014-09-03|         83|hubxhfdtxrqsfotdq...|
+--------+----------+---------+----------+-----------+--------------------+
Run Code Online (Sandbox Code Playgroud)

我想创建两列,一列包含一年中的季度,另一列包含一年中的周数。这是我所做的,参考weekofyear季度的文档:

from pyspark.sql import functions as F
sales_table = sales_table.withColumn("week_year", F.date_format(F.to_date("date", "yyyy-mm-dd"),
                                                                F.weekofyear("d")))
sales_table = sales_table.withColumn("quarter", F.date_format(F.to_date("date", …
Run Code Online (Sandbox Code Playgroud)

python date apache-spark apache-spark-sql pyspark

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

AttributeError: 模块“requests”没有属性“post”。是否已弃用并引入了新功能?

我一直在尝试向使用 Flask 构建的本地服务器发送请求。请求是使用requestspython 模块发送的。

我不知道该requests.post功能是否已被弃用并引入了新功能,或者我的代码是否有任何问题。我已经完全按照本文中所说的做了所有事情。
这是我的代码:

import requests

host_url = "http://127.0.0.1:5000"

# get the data
data_for_prediction = [int(input()) for _ in range(10)]
r = requests.post(url=host_url,json={data_for_prediction})
print(r.json())
Run Code Online (Sandbox Code Playgroud)

我在上面的代码中得到的错误是:

Traceback (most recent call last):
  File "C:/Users/--/requests.py", line 1, in <module>
    import requests
  File "C:\Users\--\requests.py", line 8, in <module>
    r = requests.post(url=host_url,json={data_for_prediction})
AttributeError: module 'requests' has no attribute 'post'

Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

我的服务器代码是:

flask_server_app = Flask(__name__)

# let's make the server now
@flask_server_app.route("/api/predict", methods=["GET", …
Run Code Online (Sandbox Code Playgroud)

python rest localhost flask python-requests

0
推荐指数
1
解决办法
6109
查看次数