标签: data-science

熊猫如何将数组放置在单个数据帧单元格中?

所以我目前有一个如下所示的数据框:

当前数据帧

我想添加一个名为“预测器”的全新列,其中只有一个包含数组的单元格。

所以 [0, 'Predictors'] 应该包含一个数组,并且同一列中该单元格下方的所有内容都应该是空的。

这是我的尝试,我尝试创建一个仅包含“预测器”列的单独数据框,并尝试将其附加到当前数据框,但我得到:“长度不匹配:预期轴有 3 个元素,新值有 4 个元素。”

如何将包含数组的单个单元格附加到我的数据帧?

# create a list and dataframe to hold the names of predictors
dataframe=dataframe.drop(['price','Date'],axis=1)  
predictorsList = dataframe.columns.get_values().tolist()
predictorsList = np.array(predictorsList, dtype=object)

# Combine actual and forecasted lists to one dataframe
combinedResults = pd.DataFrame({'Actual': actual, 'Forecasted': forecasted})

predictorsDF = pd.DataFrame({'Predictors': [predictorsList]})

# Add Predictors to dataframe
#combinedResults.at[0, 'Predictors'] = predictorsList
pd.concat([combinedResults,predictorsDF], ignore_index=True, axis=1)
Run Code Online (Sandbox Code Playgroud)

python statistics dataframe pandas data-science

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

用于命名实体识别的 PyTorch Huggingface BERT-NLP

一段时间以来,我一直在使用HuggingFace对 MADE 1.0 数据集使用 Google BERTPyTorch实现。直到上次(2 月 11 日),我一直在使用该库,通过对模型进行微调,我的命名实体识别任务的F-Score0.81。但是本周,当我运行之前编译和运行的完全相同的代码时,它在执行此语句时抛出了一个错误:

input_ids = pad_sequences([tokenizer.convert_tokens_to_ids(txt) for txt in tokenized_texts], maxlen=MAX_LEN, dtype="long", truncating="post", padding="post")
Run Code Online (Sandbox Code Playgroud)

ValueError:令牌索引序列长度长于此 BERT 模型指定的最大序列长度 (632 > 512)。通过 BERT 运行此序列将导致索引错误

colab notebook 中提供了完整代码。

为了解决这个错误,我通过获取任何序列的前 512 个标记并将 [SEP] 的索引添加到 BERT 要求的截断/填充序列的末尾进行了必要的更改,将上述语句修改为以下语句。

input_ids = pad_sequences([tokenizer.convert_tokens_to_ids(txt[:512]) for txt in tokenized_texts], maxlen=MAX_LEN, dtype="long", truncating="post", padding="post")
Run Code Online (Sandbox Code Playgroud)

结果不应该改变,因为我只考虑序列中的前 512 个标记,然后将其截断为 75 作为我的 (MAX_LEN=75),但我的F-Score已降至0.40精度降至0.27,Recall仍然是相同(0.85)。我无法共享数据集,因为我已经签署了保密条款,但我可以保证 BERT 要求的所有预处理都已完成,并且所有扩展令牌(如 …

python nlp named-entity-recognition data-science huggingface-transformers

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

来自 tidyverse 的 mutate_if 的等效 Python 代码

我是一个狂热的 R 用户,并且正在学习 Python。我可以在 R 中轻松运行的示例代码之一让我在 Python 中感到困惑。

这是原始数据(在 R 中构建):

library(tidyverse)


df <- tribble(~name, ~age, ~gender, ~height_in,
        "john",20,'m',66,
        'mary',NA,'f',62,
        NA,38,'f',68,
        'larry',NA,NA,NA
)
Run Code Online (Sandbox Code Playgroud)

其输出如下所示:

df

# A tibble: 4 x 4
  name    age gender height_in
  <chr> <dbl> <chr>      <dbl>
1 john     20 m             66
2 mary     NA f             62
3 NA       38 f             68
4 larry    NA NA            NA
Run Code Online (Sandbox Code Playgroud)

我想做三件事:

  1. 我想用值“zz”替换作为字符的列中的 NA 值
  2. 我想用值 0 替换数值列中的 NA 值
  3. 我想将字符列转换为因子。

这是我在 R 中的做法(再次使用 tidyverse 包):

tmp <- df %>%
  mutate_if(is.character, function(x) …
Run Code Online (Sandbox Code Playgroud)

python r data-science

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

我可以将参数传递给 SageMaker 估算器的入口点吗?

我正在使用SageMaker python sdk并希望传入一些参数以供我的入口点使用,但我不知道如何执行此操作。

from sagemaker.sklearn.estimator import SKLearn  # sagemaker python sdk

entrypoint = 'entrypoint_script.py'

sklearn = SKLearn(entry_point=entrypoint,  # <-- need to pass args to this
                  train_instance_type=instance_class,
                  role=role,
                  sagemaker_session=sm)
Run Code Online (Sandbox Code Playgroud)

python scikit-learn data-science amazon-sagemaker

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

使用 gridSearchCV 调整隔离森林参数

我有多变量时间序列数据,想用隔离森林算法检测异常。想从 gridSearchCV 获得最佳参数,这里是 gridSearch CV 的代码片段。

输入数据集加载了以下代码片段。

df = pd.read_csv("train.csv")
df.drop(['dataTimestamp','Anomaly'], inplace=True, axis=1)
X_train = df
y_train = df1[['Anomaly']] ( Anomaly column is labelled data).
Run Code Online (Sandbox Code Playgroud)

定义隔离森林的参数。

clf = IsolationForest(random_state=47, behaviour='new', score="accuracy")
param_grid = {'n_estimators': list(range(100, 800, 5)), 'max_samples': list(range(100, 500, 5)), 'contamination': [0.1, 0.2, 0.3, 0.4, 0.5], 'max_features': [5,10,15], 'bootstrap': [True, False], 'n_jobs': [5, 10, 20, 30]}

f1sc = make_scorer(f1_score)
grid_dt_estimator = model_selection.GridSearchCV(clf, param_grid,scoring=f1sc, refit=True,cv=10, return_train_score=True)
grid_dt_estimator.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)

执行 fit 后,出现以下错误。

值错误:目标是多类但平均值 = 二进制。请选择其他平均设置。

有人可以指导我这是关于什么的吗,尝试了average='weight',但仍然没有运气,这里有什么地方做错了。请让我知道如何获得 F 分数。

python-3.x scikit-learn data-science

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

类型错误:minimize() 缺少 1 个必需的位置参数:'var_list'

我试图使用 SGD 最小化损失,但是当我使用 SGD 时它抛出错误,我试图在 tensorflow 2.0 中做到这一点,导致问题的一个附加参数是 var_list

import tensorflow as tf
import numpy
import matplotlib.pyplot as plt
rng = numpy.random
print(rng)

# Parameters
learning_rate = 0.01
training_epochs = 1000
display_step = 50

# Training Data
train_X = numpy.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,
                         7.042,10.791,5.313,7.997,5.654,9.27,3.1])
train_Y = numpy.asarray([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221,
                         2.827,3.465,1.65,2.904,2.42,2.94,1.3])
n_samples = train_X.shape
print(n_samples)

X = tf.Variable(train_X, name = 'X' ,dtype = 'float32')
Y = tf.Variable(train_Y, name = 'Y' ,dtype = 'float32')
print(X)

# Set model weights
W = tf.Variable(rng.randn(), name="weight")
b = tf.Variable(rng.randn(), name="bias") …
Run Code Online (Sandbox Code Playgroud)

python gradient-descent data-science tensorflow

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

使用分类变量的 Kmeans

我有一个包含所有分类变量的大数据集 45421 * 12(行 * 列)。我的数据集中没有数值变量。我想用这个数据集来构建无监督聚类模型,但是在建模之前我想知道这个数据集的最佳特征选择模型。而且我无法将肘部曲线绘制到此数据集。我在 k-means 肘部方法中给出了范围 k = 1-1000,但它没有给出任何最佳集群图并且需要 8-10 个小时来执行。如果有人对这个问题提出更好的解决方案,那将是一个很大的帮助。

代码:

data = {'UserName':['infuk_tof', 'infus_llk', 'infaus_kkn', 'infin_mdx'], 
       'UserClass':['high','low','low','medium','high'], 
       'UserCountry':['unitedkingdom','unitedstates','australia','india'], 
       'UserRegion':['EMEA','EMEA','APAC','APAC'], 
       'UserOrganization':['INFBLRPR','INFBLRHC','INFBLRPR','INFBLRHC'], 
       'UserAccesstype':['Region','country','country','region']} 

df = pd.DataFrame(data) 
Run Code Online (Sandbox Code Playgroud)

python machine-learning unsupervised-learning scikit-learn data-science

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

如何在深度学习中处理非常大的 3D 数据

我有一个很大的输入特征作为大小500x500x50010000此类样本的3D 数组。和尺寸标签500x500x500x500。我创建了一个输入形状的模型,在输入处500x500x500仅使用Conv3D一层,Dense在输出处仅使用一层(我有自己的理由在输出处使用密集层),网络的输出形状为500x500x500x500.

以下是我使用的最低限度模型:

ip = Input(shape=(500,500,500,1))  
x = Conv3D(100,3,activation="relu",padding='same')(ip)
x = Dense(500,activation="softmax")(x)
nn = Model(inputs=ip, outputs=x)
Run Code Online (Sandbox Code Playgroud)

以下是摘要:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_5 (InputLayer)         (None, 500, 500, 500, 1)  0         
_________________________________________________________________
conv3d_4 (Conv3D)            (None, 500, 500, 500, 100 2800      
_________________________________________________________________
dense_4 (Dense)              (None, 500, 500, 500, 500 50500     
=================================================================
Total params: 53,300
Trainable params: 53,300
Non-trainable params: 0
_________________________________________________________________
Run Code Online (Sandbox Code Playgroud)

当我运行模型时出现内存错误,因为我有 64 GB RAM …

artificial-intelligence machine-learning deep-learning keras data-science

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

Pandas 数据框中的值过滤器保持 NaN

我正在尝试从数据框中过滤小于某个值的数据。如果没有 NaN 则它工作正常。但是当有 nan 时,它会忽略 NaN 值。我想一直包含它并不重要,它小于或大于比较值。

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        'index': [1, 2, 3,  4,  5,  6,   7,  8, 9],
        'value': [5, 6, 7, np.nan, 9, 3, 11, 34, 78]
    }
)

df_chunked = df[(df['index'] >= 1) & (df['index'] <= 5)]

print('df_chunked')
print(df_chunked)

df_result = df_chunked[(df_chunked['value'] < 10)]
# df_result = df_chunked[(df_chunked['value'] < 10) | (df_chunked['value'] == np.isnan(df_chunked['value']))]

print('df_result')
print(df_result)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在上面的结果中显示 5,6,7,9。但我也想要那里的 nan。我试过

df_result = df_chunked[(df_chunked['value'] < 10) | (df_chunked['value'] == …
Run Code Online (Sandbox Code Playgroud)

python nan filter pandas data-science

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

在哪里可以找到函数的 kwargs/args 文档

大多数库(如请求或 matplotlib)不包含正确的 kwargs/args 文档。有时会有示例,但大多数情况下缺少特定用例。

我的问题:

  1. 我在哪里可以找到那种信息。
  2. 为什么开发人员没有正确记录 kwargs/args

python matplotlib request pandas data-science

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