小编and*_*ece的帖子

Python numpy.corrcoef()RuntimeWarning:在true_divide中遇到无效值c/= stddev [:,None]

看来,corrcoefnumpy抛出RuntimeWarning当一个恒定的列表传递给corrcoef()函数,例如下面的代码抛出一个警告:

import numpy as np
X = [1.0, 2.0, 3.0, 4.0]
Y = [2, 2, 2, 2]
print(np.corrcoef(X, Y)[0, 1])
Run Code Online (Sandbox Code Playgroud)

警告 :

/usr/local/lib/python3.6/site-packages/numpy/lib/function_base.py:3003: RuntimeWarning: invalid value encountered in true_divide
  c /= stddev[:, None]
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么当其中一个列表是常量时抛出此错误,以及如何在将常量列表传递给函数时防止此错误.

python numpy correlation

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

langchain自定义提示&输入参数不清楚

我不明白示例文档中的 customprompt 如何工作:https://python.langchain.com/en/latest/modules/chains/index_examples/qa_with_sources.html

提示对象定义为:

PROMPT = PromptTemplate(template=template, input_variables=["summaries", "question"])

期待两个输入摘要和问题

但是,仅在问题(作为查询)中传递内容,而不是摘要中传递的内容

chain = load_qa_with_sources_chain(OpenAI(temperature=0), chain_type="stuff", prompt=PROMPT)
query = "What did the president say about Justice Breyer"
chain({"input_documents": docs, "question": query}, return_only_outputs=True)
where docs = docsearch.similarity_search(query)
Run Code Online (Sandbox Code Playgroud)

问题 1(针对): input_documentsqa_with_sources如何映射到摘要?

同样,我不清楚链接 https://python.langchain.com/en/latest/modules/chains/index_examples/summarize.html上的文档

prompt_template = """Write a concise summary of the following:


{text}


CONCISE SUMMARY IN ITALIAN:"""
PROMPT = PromptTemplate(template=prompt_template, input_variables=["text"])
chain = load_summarize_chain(OpenAI(temperature=0), chain_type="map_reduce", return_intermediate_steps=True, map_prompt=PROMPT, combine_prompt=PROMPT)
chain({"input_documents": docs}, return_only_outputs=True)
Run Code Online (Sandbox Code Playgroud)

更多问题(针对summarize): 2. docs
是如何映射到text …

langchain

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

更改 Matplotlib 图表 X 轴上的顺序

我使用 python 在 matplotlib 中创建了一个图表,x 轴是一周中的几天(周一至周日)。但是,在绘制数据时,x 轴并未排列在周一至周日。

有什么方法可以重新排序 x 轴以使其格式化?

或者有什么方法可以重新排序数据集?这是一个使用熊猫数据框读取的 csv 文件

示例数据:(存在于 csv 中:'./data/Days_Summary.csv')

Day         Value

 Monday      56        
 Tuesday     23    
 Wednesday   34     
 Thursday     56     
  Friday      58     
 Saturday     70      
  Sunday      43      
Run Code Online (Sandbox Code Playgroud)

代码:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
df=pd.read_csv('./data/Days_Summary.csv')
days_values=df.groupby(['day'])['day'].count().plot(kind='bar')
plt.xlabel('Day')
plt.ylabel('Values')
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas

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

Python 的 Pandas:例外:数据必须是一维的

这是我从教程中得到的

# Data Preprocessing

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Importing the dataset
dataset = pd.read_csv('Data.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 3].values

# Taking care of missing data
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0)
imputer = imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])

# Encoding categorical data
# Encoding the Independent Variable
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X …
Run Code Online (Sandbox Code Playgroud)

python pandas scikit-learn one-hot-encoding

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

Timedelta对象无法使用astype()进行转换

原生Pandas Timedelta()(带版本0.20.3)无法转换为特定频率astype(),尽管文档说它应该是可能的.我想弄清楚我错过了什么.

来自Timedelta文档:

Timedelta系列,TimedeltaIndex和Timedelta标量可以通过除以另一个timedelta 或通过输入特定的timedelta类型转换为其他"频率" .

确实,我可以通过分裂与另一个timedelta进行转换:

import pandas as pd
pd.__version__ 
# 0.20.3

day = pd.Timedelta("1 day")
day / pd.Timedelta(1, "h") 
# 24.0
Run Code Online (Sandbox Code Playgroud)

astype()失败了:

day.astype('timedelta64[h]')
# AttributeError: 'Timedelta' object has no attribute 'astype'
Run Code Online (Sandbox Code Playgroud)

文档中的示例实际上并未使用pd.Timedelta(),这似乎是问题的一部分.相反,它使用Series(date_range)减法和datetime.timedelta(这似乎有点搞笑,因为有一个本地熊猫Timedelta()).

# This example is used in the Timedelta docs.
import datetime
td = pd.Series(pd.date_range('20130101', periods=4)) - pd.Series(pd.date_range('20121201', periods=4))
td[2] += datetime.timedelta(minutes=5, seconds=3)
td[3] = np.nan

td
0 …
Run Code Online (Sandbox Code Playgroud)

python timedelta pandas

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

ValueError:操作数无法与形状一起广播 (5,) (30,)

我正在尝试合并这样的数组:

如果:

a = [1.2, 1, 3, 4]
b = [0.0 , 0.0]
c = [0.0 , 0.0]
a = a + b + c
Run Code Online (Sandbox Code Playgroud)

那么结果应该是:

[0.0 , 0.0 , 1.2 , 1 ,3 ,4 , 0.0 ,0.0]
Run Code Online (Sandbox Code Playgroud)

我所做的是提取数组的直方图并将其与普通数组合并。

x1, bins, patch = plt.hist(array1, bins = round(max(array1) - min(array1)))
x1 = b + x1 + c

but the form of x1 is 
x1 = [  2.   0.   0.   1.   0.   2.   5.   0.   1.   1.   0.   1.   5.]
Run Code Online (Sandbox Code Playgroud)

也许这会导致这样的错误

ValueError:操作数无法与形状一起广播 …

python arrays matplotlib valueerror

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

map_dfr:使用字符串标签填充 .id 列,而不是没有 .x 命名的索引

我想用单词而不是索引值来标记.id输出中的列条目map_dfr,但我的输入未命名(这就是接受字符串值的方式map.id)。

在这种情况下,将名称映射到字段的最佳方法是什么.id

示例数据:

n <- 20
df <- data.frame(foo_1=rnorm(n), foo_2=rnorm(n), foo_3=rnorm(n), 
                 foo_a=runif(n), t_foo=runif(n),
                 bar_1=rnorm(n), bar_2=rnorm(n), bar_3=rnorm(n), 
                 bar_a=runif(n), t_bar=runif(n))
Run Code Online (Sandbox Code Playgroud)

foo都是bar心理测量量表,我想使用 来衡量每个量表的可靠性psych::alpha()
唯一相关的列具有命名模式foo_<int>(对于比例foo)或bar_<int>比例bar(因此下面的正则表达式匹配)。

实际上,我有许多音阶,以及构成每个音阶的许多列。所以我认为map可能是进行计算的好方法,如下所示:

require(psych)
require(tidyverse)

categories <- c("foo", "bar")

categories %>%
  map_dfr(~df %>% 
            select(matches(paste0("^",.x,"_?\\d"))) %>% 
            do(psych::alpha(., check.keys=TRUE)$total), .id="scale") %>%
  select(scale, raw_alpha, std.alpha)

  scale raw_alpha std.alpha
1     1 0.2275679 0.2791238
2     2 0.4141225 0.4130054
Run Code Online (Sandbox Code Playgroud)

但我想 …

r purrr

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

将Pandas列转换为Keras神经网络的Numpy数组

我正在学习如何创建CNN模型,并认为Kaggle举办了一场有趣的比赛来帮助我学习它.

他们提供了一个类似JSON的大型(BSON)文件,大约50GB,我正在尝试处理它.我正在尝试使用Keras模块训练卷积神经网络.在文件中,我迭代地读取具有(180,180,3)的阵列结构的图像数据.整个文件包含大约7,000,000个图像,因此最终的数组结构看起来像(7000000,180,180,3).但是,我无法将所有这些数据读入内存,所以我的目标是一次读取100,000个图像以适应神经网络,保存模型的权重,删除数组以释放内存,然后继续阅读接下来将100,000个图像放入新阵列中以重新拟合先前训练的模型.我会迭代地这样做,直到我到达最后一张图片.

我最初尝试使用'np.append()'来迭代地将每个图像阵列附加在一起,但是,这花了很多时间,因为我只通过25,000个图像,导致阵列结构(25000,180,180, 3),在10个小时内,由于尺寸的原因,它在接近结束时非常慢.

然后,我尝试使用pandas数据帧结构使用不同的方法.我将每个(1,180,180,3)阵列附加到每个单元格中.我能够使用这种方法在大约20分钟内迭代100,000张图像(大部分代码都是通过Kaggle提供的 - https://www.kaggle.com/inversion/processing-bson-files)但我在下面进行了修改:

# Simple data processing
from bson.json_util import dumps
data = bson.decode_file_iter(open('train.bson', 'rb'))

prod_to_category = dict()

i = 0
j = 1000

# Loop through dataset
for c, d in enumerate(data):
    product_id = d['_id']
    category_id = d['category_id'] # This won't be in Test data
    prod_to_category[product_id] = category_id
    i+=1

    # Create a counter to check how many records have been iterated through
    if (i == 1):
        print (i, "records loaded")
        print(picture_1.shape)
        j+=1000
    for e, …
Run Code Online (Sandbox Code Playgroud)

python numpy neural-network pandas keras

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

更改 psych::fa 或 psych::fa.diagram 中的因子标签

我正在使用该psych包进行因子分析。我想在fa()对象中或使用fa.diagram().

例如,玩具数据:

require(psych)
n <- 100
choices <- 1:5
df <- data.frame(a=sample(choices, replace=TRUE, size=n), 
                 b=sample(choices, replace=TRUE, size=n), 
                 c=sample(choices, replace=TRUE, size=n), 
                 d=sample(choices, replace=TRUE, size=n))
model <- fa(df, nfactors=2, fm="pa", rotate="promax")

model

Factor Analysis using method =  pa
Call: fa(r = df, nfactors = 2, rotate = "promax", fm = "pa")
Standardized loadings (pattern matrix) based upon correlation matrix
    PA1   PA2   h2   u2 com
a  0.45 -0.49 0.47 0.53 2.0
b  0.22  0.36 0.17 0.83 1.6 …
Run Code Online (Sandbox Code Playgroud)

r psych

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

带有 Pandas 的 REGEX 过滤器(任何数字组合后跟“加号”)

我有一个 Pandas 数据框,df其中包含以下 3 列:id,creation_dateemail.

我想返回email列包含任何严格数字组合(必须是严格数字)的所有行,后跟“加”号,然后是任何内容。

例如:
- 1345677+@gmail.com2345678+556@gmail.com将符合我的标准。
-Testing+22@gmail.com并且test223+22@gmail.com不会,因为它们在“加号”之前包含非数字字符。

我知道df.email.str.contains('\+')这行不通,因为它会返回包含“加”号的所有内容。我试过了,df.filter(['email'], regex=r'([^0-9])' % '\+', axis=0)但它抛出了一条错误消息,内容为TypeError: not all arguments converted during string formatting.

任何人都可以建议吗?

非常感谢!

python regex pandas

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

与sklearn距离算法混淆

虽然我想在 KNeighborsClassifier 中使用标准的欧几里得度量。

knn = KNeighborsRegressor(n_neighbors=k,metric='seuclidean' )
knn.fit(newx,y)
Run Code Online (Sandbox Code Playgroud)

和显示的类型错误:

C:\Anaconda3\lib\site-packages\sklearn\neighbors\base.py in fit(self, X, y)
    741             X, y = check_X_y(X, y, "csr", multi_output=True)
    742         self._y = y
--> 743         return self._fit(X)
    744 
    745 

C:\Anaconda3\lib\site-packages\sklearn\neighbors\base.py in _fit(self, X)
    238             self._tree = BallTree(X, self.leaf_size,
    239                                   metric=self.effective_metric_,
--> 240                                   **self.effective_metric_params_)
    241         elif self._fit_method == 'kd_tree':
    242             self._tree = KDTree(X, self.leaf_size,

sklearn\neighbors\binary_tree.pxi in sklearn.neighbors.ball_tree.BinaryTree.__init__ (sklearn\neighbors\ball_tree.c:9220)()

sklearn\neighbors\dist_metrics.pyx in sklearn.neighbors.dist_metrics.DistanceMetric.get_metric (sklearn\neighbors\dist_metrics.c:4821)()

sklearn\neighbors\dist_metrics.pyx in sklearn.neighbors.dist_metrics.SEuclideanDistance.__init__ (sklearn\neighbors\dist_metrics.c:6399)()

TypeError: __init__() takes exactly 1 positional argument (0 given)
Run Code Online (Sandbox Code Playgroud)

我只是输入我自己的函数来实现 knn 像: …

python machine-learning euclidean-distance scikit-learn

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

创建新列以指示列名在另一个字符串向量中的位置(使用dplyr,purrr和stringr)

鉴于此示例数据:

require(stringr)
require(tidyverse)

labels <- c("foo", "bar", "baz")
n_rows <- 4

df <- 1:n_rows %>%
  map(~ data.frame(
      block_order=paste(sample(labels, size=length(labels), replace=FALSE),
                        collapse="|"))) %>%
  bind_rows()

df
  block_order
1 foo|bar|baz
2 baz|bar|foo
3 foo|baz|bar
4 foo|bar|baz
Run Code Online (Sandbox Code Playgroud)

我想为每个字符串生成一个列labels,它|在每行的分隔序列中获取该字符串的位置值.

期望的输出:

  block_order foo bar baz
1 foo|bar|baz   1   2   3
2 baz|bar|foo   3   2   1
3 foo|baz|bar   1   3   2
4 foo|bar|baz   1   2   3
Run Code Online (Sandbox Code Playgroud)

我一直在尝试dplyr/ purrrsetup中的不同变体,比如这个例子,我map在每个值中label,然后尝试在block_order使用match时获得它的位置str_split:

labels %>% …
Run Code Online (Sandbox Code Playgroud)

r stringr dplyr purrr

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

R-方差分析提取 p_value 的一种方式

我正在尝试对数据集的几行进行单向方差分析,然后提取 p_value 以供使用。

这是我所做的:

anova <- function(x) {summary(aov(x ~ bt.factor))[[1]]["Pr(>F)"]}
anv.pval <- apply(golubALL, 1, anova)
Run Code Online (Sandbox Code Playgroud)

使用这个公式,我可以提取 pvalue 但它带有其他元素:

$`1414_at`
            Pr(>F)
bt.factor   0.7871
Residuals
Run Code Online (Sandbox Code Playgroud)

结果我想要的只是列表中的这个。我怎么能提取它?

r anova p-value broom

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