小编sha*_*ker的帖子

如何使GridSeachCV与管道中的自定义转换器一起工作?

如果我排除自定义转换器,则GridSearchCV可以正常运行,但是会出错。这是一个伪数据集:

import pandas
import numpy
from sklearn_pandas import DataFrameMapper
from sklearn_pandas import cross_val_score
from sklearn.pipeline import Pipeline
from sklearn.grid_search import GridSearchCV
from sklearn.base import TransformerMixin
from sklearn.preprocessing import LabelBinarizer
from sklearn.ensemble import RandomForestClassifier
import sklearn_pandas
from sklearn.preprocessing import MinMaxScaler

df = pandas.DataFrame({"Letter":["a","b","c","d","a","b","c","d","a","b","c","d","a","b","c","d"],
                       "Number":[1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4], 
                       "Label":["G","G","B","B","G","G","B","B","G","G","B","B","G","G","B","B"]})

class MyTransformer(TransformerMixin):

    def transform(self, x, **transform_args):
        x["Number"] = x["Number"].apply(lambda row: row*2)
        return x

    def fit(self, x, y=None, **fit_args):
        return self

x_train = df
y_train = x_train.pop("Label")    

mapper = DataFrameMapper([
    ("Number", MinMaxScaler()),
    ("Letter", LabelBinarizer()),
    ])

pipe = …
Run Code Online (Sandbox Code Playgroud)

python pandas scikit-learn

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

多线程 HTTP GET 请求在大约 900 次下载后严重减慢

我正在尝试使用从 Amazon S3 下载大约 3,000 个文件(每个文件的大小可能为 3 MB)requests_futures,但下载速度在大约 900 个后严重减慢,并且实际上开始运行速度比基本的 for 循环慢。

我似乎没有耗尽内存或 CPU 带宽。然而,看起来我机器上的 Wifi 连接速度几乎没有变慢:我从几千个数据包/秒下降到只有 3-4 个。最奇怪的是,在 Python 进程退出重新启动 wifi 适配器之前,我无法加载任何网站。

到底是什么原因导致了这种情况,我该如何调试它?

如果有帮助,这是我的 Python 代码:

import requests
from requests_futures.sessions import FuturesSession
from concurrent.futures import ThreadPoolExecutor, as_completed

# get a nice progress bar
from tqdm import tqdm

def download_threaded(urls, thread_pool, session):
    futures_session = FuturesSession(executor=thread_pool, session=session)
    futures_mapping = {}
    for i, url in enumerate(urls):
        future = futures_session.get(url)
        futures_mapping[future] = i
    
    results = [None] * len(futures_mapping)

    with …
Run Code Online (Sandbox Code Playgroud)

multithreading python-multithreading python-3.x python-requests concurrent.futures

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

如何在Python中创建自己的“参数化”类型(如“ Optional [T]”)?

我想在Python中创建自己的参数化类型以用于类型提示:

class MaybeWrapped:
    # magic goes here

T = TypeVar('T')

assert MaybeWrapped[T] == Union[T, Tuple[T]]
Run Code Online (Sandbox Code Playgroud)

不用管这个人为的例子。我该如何实现呢?我查看了Union和Optional的来源,但看起来我想避免一些相当底层的黑客。

该文档中的唯一建议来自继承自Generic示例的重新实现Mapping[KT,VT]。但是那个例子更多的是关于__getitem__方法的,而不是关于类本身的。

python generics metaclass type-hinting python-3.x

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

jsonschema 枚举值以另一个枚举值为条件

我有一个适用于我的应用程序的可接受输入组合表:

noises   appearance
------   ----------
squeaks  fluffy
purrs    fluffy
hisses   fluffy
peeps    feathers
chirps   feathers
squeaks  feathers
hisses   scaly
Run Code Online (Sandbox Code Playgroud)

任何其他值的组合都是不可接受的。

如何在 JSON Schema 中对其进行编码?“架构的其余部分”看起来有点像这样:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "required": ["noise", "appearance"]
    "properties": {
      "noise": ...,
      "appearance": ...
    }
  }
Run Code Online (Sandbox Code Playgroud)

目前我的应用程序正在使用 Draft 4,因为它是jsonschema 包的最后一个稳定版本所支持的。

jsonschema

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

如何在热图中围绕"组"绘制框?

我做了一个这样的图:

library(reshape2)
library(ggplot2)

m <- matrix(1:64 - 32, 8)
rownames(m) <- colnames(m) <-
  c(paste0("a", 1:3), paste0("b", 1:2), paste0("c", 1:3))
d <- melt(m)
gg <- ggplot(d) +
  geom_tile(aes(x = Var1, y = Var2, fill = value)) +
  scale_fill_gradient2()
Run Code Online (Sandbox Code Playgroud)

如何以编程方式在"a","b"和"c"组周围绘制框?

矩阵m将始终是正方形.colnames(m)并且rownames(m)将永远是相同的.因此,盒子将覆盖整个网格,并且永远不会重叠.一般而言,群体规模会有所不同.

我也没有结婚ggplot2.image如果它不比ggplot2/ grid版本更繁琐,我对基本图形的解决方案持开放态度.

我得到了

d$group <- substr(d$Var1, 1, 1)
Run Code Online (Sandbox Code Playgroud)

在我意识到我不知道如何继续之前.


是)我有的:

在此输入图像描述

我想要的是:

在此输入图像描述

graphics r ggplot2

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

我的Prolog"列表填充符"出了什么问题?

我编写了一个简单的程序来尝试使用满足特定约束的元素填充给定长度的列表.

例如,我想创建一个包含0到9之间的4个整数的列表,其中至少包含34.我可以想到几个(数千个,真的)这样的列表:

[3,4,0,0]
[0,3,4,0]
[3,1,9,4]
etc...
Run Code Online (Sandbox Code Playgroud)

但SWI Prolog刚刚回归false.我只是犯了某种逻辑错误,还是我使用Prolog错了?

我的代码:

is_single_digit_integer(N) :-
  integer(N),
  between(0, 9, N).

filled_list(Given, FillConstraint, OutLen, Out) :-
  is_list(Out),
  length(Out, OutLen),
  length(Given, GivenLen),
  between(0, OutLen, GivenLen),
  maplist(FillConstraint, Out),
  subset(Given, Out).
Run Code Online (Sandbox Code Playgroud)

并运行我描述的示例:

?- filled_list([3,4], is_single_digit_integer, 4, X).
Run Code Online (Sandbox Code Playgroud)

prolog

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

将基于标签的索引 (loc) 转换为基于位置的索引 (iloc)

鉴于我的数据:

import numpy as np
import pandas as pd

data = pd.DataFrame(
    {
        'x': [11, 12, 13],
        'y': [21, 22, 23]
    },
    index=['a', 'b', 'c']
)
Run Code Online (Sandbox Code Playgroud)

我想找到标签对应的位置索引['a', 'c']。我通过目视检查知道它们是[0, 2],但这只能在玩具示例中实现。

“暴力”方法是

my_lab = ['a', 'c']
my_pos = (data.index == my_idx).to_numpy().nonzero()[0]
Run Code Online (Sandbox Code Playgroud)

有没有更好/更快/更优雅的方法来做到这一点?还是暴力法是唯一的方法?

python pandas

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

当需要密码时强制 Git 失败,而不是提示输入密码

我正在开发一个应用程序,用户可以在其中输入 Git 存储库,然后将其克隆到本地计算机。在某些情况下(例如输入错误的 URL 指向 Github 上不存在的存储库),Git 客户端将提示用户输入用户名和密码。我不希望出现这种行为——我只是希望 Git 失败并出现非零错误状态。非交互式错误消息是可以的,我只是为了避免密码提示导致我的应用程序挂起。

我怎样才能实现这个目标?

git

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

以编程方式构建公式而不使用字符串

为了举例,考虑R中的基本回归模型:

form1 <- Petal.Length ~ Sepal.Length + Sepal.Width
fit1 <- lm(form1, iris)
Run Code Online (Sandbox Code Playgroud)

(我向在这里发帖的任何植物学家致歉.)

为了添加二次和交互项,我知道三种方法:

1)老式的方式

一次输入一个条款:

form2 <- . ~ Sepal.Length*Sepal.Width + I(Sepal.Length^2) + I(Sepal.Width^2)
fit2 <- update(fit1, form2)
Run Code Online (Sandbox Code Playgroud)

这不会扩展到小公式之外,您无法使用它进行编程.

2)丑陋的方式

字符串操作:

vars <- attr(terms(form1), "term.labels")
squared_terms <- sprintf("I(%s^2)", vars)
inter_terms <- combn(vars, 2, paste, collapse = "*")
form2 <- reformulate(c(inter_terms, squared_terms), ".")
Run Code Online (Sandbox Code Playgroud)

这可以扩展,但它不是真正可编程的,因为函数本身需要进行硬编码.

3)"后门"

直接操作数据

library(lazyeval)
library(dplyr)

square <- function (v) interp(~ I(v1^2), v1 = as.name(v))
inter <- function(v) interp(~ v1*v2, v1 = as.name(v[1]), v2 = as.name(v[2]))

vars <- …
Run Code Online (Sandbox Code Playgroud)

string r

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

R闪亮的对象范围

我正在尝试a<-get(obj1,envir=parent.environment())从被调用的环境中访问驻留在调用环境中的对象(),但myf我无法使其正常工作.我得到的错误是Object obj1 not found.我parent.frame()也试过了.有任何想法吗?

library(shiny)
shinyApp(
  ui = textOutput("test1"),
  server = function(input, output) {
    myf <- function(x) {
      a <- get(obj1, envir = parent.environment())
      return(paste0(x,a))
    }
    output$test1 <- renderText({
      obj1 <- "testing"
      a <- lapply(c("a","b","c"), myf)
      return(paste(unlist(a), collapse = ","))
    })
  }
)
Run Code Online (Sandbox Code Playgroud)

注意:我不想obj1<<-创建在全局环境中创建的obj1 ,并且可用于所有会话

r scoping shiny

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