小编Sre*_* TP的帖子

如何将代码推送到Github隐藏API密钥?

我想将一些代码推送到我的GitHub存储库.这些代码是在像不同的语言Javascript,Java,Python等某些代码包含了一些私人API,我不想公布关键.

有没有办法自动隐藏它?我应该手动将其从我的代码中删除吗?

我想推动很多项目.因此,手动删除不是一个好选择.

git github api-key

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

如何处理预测值的转换

我在Keras使用LSTM实现了预测模型.数据集分离15分钟,我预测12个未来步骤.

该模型对该问题表现良好.但预测有一个小问题.它显示出一个小的移位效果.要获得更清晰的图片,请参见下图.

在此输入图像描述

如何处理这个问题.如何转换数据来处理这类问题.

我使用的模型如下

init_lstm = RandomUniform(minval=-.05, maxval=.05)
init_dense_1 = RandomUniform(minval=-.03, maxval=.06)

model = Sequential()

model.add(LSTM(15, input_shape=(X.shape[1], X.shape[2]), kernel_initializer=init_lstm, recurrent_dropout=0.33))

model.add(Dense(1, kernel_initializer=init_dense_1, activation='linear'))

model.compile(loss='mae', optimizer=Adam(lr=1e-4))

history = model.fit(X, y, epochs=1000, batch_size=16, validation_data=(X_valid, y_valid), verbose=1, shuffle=False)
Run Code Online (Sandbox Code Playgroud)

我做了这样的预测

my_forecasts = model.predict(X_valid, batch_size=16)
Run Code Online (Sandbox Code Playgroud)

时间序列数据被转换为监督以使用该函数来馈送LSTM

# convert time series into supervised learning problem
def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):
    n_vars = 1 if type(data) is list else data.shape[1]
    df = DataFrame(data)
    cols, names = list(), list()
    # input sequence (t-n, ... t-1)
    for i in …
Run Code Online (Sandbox Code Playgroud)

python machine-learning forecasting deep-learning keras

10
推荐指数
2
解决办法
791
查看次数

Perfrom在列上的累积总和,但如果总和在熊猫中变为负数,则重置为0

我有一个带有两列的pandas数据框,

Item    Value
0   A   7
1   A   2
2   A   -6
3   A   -70
4   A   8
5   A   0
Run Code Online (Sandbox Code Playgroud)

我想在列上累计总和Value。但是在创建累计和时,如果值变为负数,我想将其重置为0。

我目前正在使用下面显示的循环执行此操作,

sum_ = 0
cumsum = []

for val in sample['Value'].values:
    sum_ += val
    if sum_ < 0:
        sum_ = 0
    cumsum.append(sum_)

print(cumsum) # [7, 9, 3, 0, 8, 8]
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种更有效的方式在纯大熊猫中执行此操作。

python pandas

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

高AUC但数据不平衡的预测结果不佳

我正在尝试在非常不平衡的数据集上使用LightGBM构建分类器.不平衡是比例97:3,即:

Class

0    0.970691
1    0.029309
Run Code Online (Sandbox Code Playgroud)

我使用的参数和培训代码如下所示.

lgb_params = {
        'boosting_type': 'gbdt',
        'objective': 'binary',
        'metric':'auc',
        'learning_rate': 0.1,
        'is_unbalance': 'true',  #because training data is unbalance (replaced with scale_pos_weight)
        'num_leaves': 31,  # we should let it be smaller than 2^(max_depth)
        'max_depth': 6, # -1 means no limit
        'subsample' : 0.78
    }

# Cross-validate
cv_results = lgb.cv(lgb_params, dtrain, num_boost_round=1500, nfold=10, 
                    verbose_eval=10, early_stopping_rounds=40)

nround = cv_results['auc-mean'].index(np.max(cv_results['auc-mean']))
print(nround)

model = lgb.train(lgb_params, dtrain, num_boost_round=nround)


preds = model.predict(test_feats)

preds = [1 if x >= 0.5 …
Run Code Online (Sandbox Code Playgroud)

python classification machine-learning auc lightgbm

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

Keras没有使用完整的CPU内核进行培训

我正在使用Tensorflow后端上的Keras在我的计算机上的非常庞大的数据集上训练LSTM模型。我的机器有16个核心。在训练模型时,我注意到所有核心的负载均低于40%。

我已经通过不同的渠道寻找解决方案,并尝试提供作为后端使用的内核。

config = tf.ConfigProto(device_count={"CPU": 16})
backend.tensorflow_backend.set_session(tf.Session(config=config))
Run Code Online (Sandbox Code Playgroud)

即使那样,负载仍然相同。

这是因为模型很小。一个纪元大约需要5分钟。如果使用全核,则可以提高速度。

如何告诉Keras或Tensorflow使用完整的可用核,即16个核来训练模型。?

我经历了这些stackoverflow问题,并尝试了其中提到的解决方案。它没有帮助。

限制Keras中使用的内核数

python machine-learning keras tensorflow

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

LightGBM的多类分类

我正在尝试使用Python中的LightGBM为多类分类问题(3个类)建模分类器.我使用了以下参数.

params = {'task': 'train',
    'boosting_type': 'gbdt',
    'objective': 'multiclass',
    'num_class':3,
    'metric': 'multi_logloss',
    'learning_rate': 0.002296,
    'max_depth': 7,
    'num_leaves': 17,
    'feature_fraction': 0.4,
    'bagging_fraction': 0.6,
    'bagging_freq': 17}
Run Code Online (Sandbox Code Playgroud)

数据集的所有分类特征都是用标签编码的LabelEncoder.我跑完后训练模型cv,eartly_stopping如下图所示.

lgb_cv = lgbm.cv(params, d_train, num_boost_round=10000, nfold=3, shuffle=True, stratified=True, verbose_eval=20, early_stopping_rounds=100)

nround = lgb_cv['multi_logloss-mean'].index(np.min(lgb_cv['multi_logloss-mean']))
print(nround)

model = lgbm.train(params, d_train, num_boost_round=nround)
Run Code Online (Sandbox Code Playgroud)

训练结束后,我用这样的模型进行预测,

preds = model.predict(test)
print(preds)             
Run Code Online (Sandbox Code Playgroud)

我有一个嵌套数组作为这样的输出.

[[  7.93856847e-06   9.99989550e-01   2.51164967e-06]
 [  7.26332978e-01   1.65316511e-05   2.73650491e-01]
 [  7.28564308e-01   8.36756769e-06   2.71427325e-01]
 ..., 
 [  7.26892634e-01   1.26915179e-05   2.73094674e-01]
 [  5.93217601e-01   2.07172044e-04   4.06575227e-01]
 [  5.91722491e-05   9.99883828e-01 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning predict multiclass-classification lightgbm

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

两个日期之间的月差

我有两个日期格式a = Timestamp('2022-07-01 00:00:00'),另一个日期格式相同b = Timestamp('1993-09-01 00:00:00')

所以我试图找到这两者之间的月数差异,我的方法是

relativedelta(a,b).years * 12
Run Code Online (Sandbox Code Playgroud)

这给出了值336,但实际差异是346。请让我知道我哪里出错了帮我改正。

python python-3.x

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

如何在 PySpark 中进行 groupby 并查找列的唯一项

我有一个 pySpark 数据框,我想按列进行分组,然后在每个组的另一列中找到唯一的项目。

在熊猫中我可以做,

data.groupby(by=['A'])['B'].unique()
Run Code Online (Sandbox Code Playgroud)

我想对我的 Spark 数据框做同样的事情。我可以找到组中项目的 distectCount 并进行计数,如下所示

(spark_df.groupby('A')
    .agg(
        fn.countDistinct(col('B'))
            .alias('unique_count_B'),
        fn.count(col('B'))
            .alias('count_B')
        )
    .show())
Run Code Online (Sandbox Code Playgroud)

但我找不到一些功能来查找组中的独特项目。

为了更清楚地说明,请考虑示例数据框,

df = spark.createDataFrame(
  [(1, "a"), (1, "b"), (1, "a"), (2, "c")],
  ["A", "B"])
Run Code Online (Sandbox Code Playgroud)

我期待得到这样的输出,

+---+----------+
|  A|  unique_B|
+---+----------+
|  1|  [a, b]  |
|  2|  [c]     |
+---+----------+
Run Code Online (Sandbox Code Playgroud)

如何在 pySpark 中获得 pandas 的输出?

python pandas pyspark

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

pytest-xdist 因 pytest-cov 错误而崩溃

我试图通过主节点的 ssh 在远程计算机上对我的包执行测试。两个节点都安装了相同版本的软件包。

我正在这样进行测试

pytest -d --tx ssh=ubuntu//python=python3  --rsyncdir /home/ubuntu/pkg/ /home/ubuntu/pkg -n 7
Run Code Online (Sandbox Code Playgroud)

运行此程序时,我收到以下错误,

------------------------------ coverage ------------------------------
---------------------- coverage: failed workers ----------------------
The following workers failed to return coverage data, ensure that pytest-cov is installed on these workers.
gw0
gw1
gw2
gw3
gw4
gw5
gw6
Coverage XML written to file coverage.xml
Run Code Online (Sandbox Code Playgroud)

我已确保工作节点中安装了覆盖范围。

coverage==6.2
pytest-cov==3.0.0
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它仍然失败。

我还注意到,由于某种原因,代码文件尚未在工作计算机中同步。

我试图了解这里出了什么问题以及如何解决这个问题。

python unit-testing pytest python-3.x pytest-xdist

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

在Keras中保存传输学习模型的正确方法

我使用来自Keras的ResNet50的转移学习训练了一个宪法网络,如下所示.

base_model = applications.ResNet50(weights='imagenet', include_top=False, input_shape=(333, 333, 3))

## set model architechture
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(1024, activation='relu')(x) 
x = Dense(256, activation='relu')(x) 
predictions = Dense(y_train.shape[1], activation='softmax')(x) 
model = Model(input=base_model.input, output=predictions)

model.compile(loss='categorical_crossentropy', optimizer=optimizers.SGD(lr=1e-4, momentum=0.9),
              metrics=['accuracy'])

model.summary()
Run Code Online (Sandbox Code Playgroud)

在训练模型后,我想保存模型.

history = model.fit_generator(
    train_datagen.flow(x_train, y_train, batch_size=batch_size),
    steps_per_epoch=600,
    epochs=epochs,
    callbacks=callbacks_list
)
Run Code Online (Sandbox Code Playgroud)

我不能使用keras模型中的save_model()函数,因为模型在这里是Model类型.我使用save()函数来保存模型.但后来当我加载模型并验证模型时,它表现得像一个未经训练的模型.我认为重量没有得到保存.哪里错了.?如何正确保存此模型.

machine-learning deep-learning keras

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