小编pir*_*pir的帖子

在scikit-learn中分层训练/测试分裂

我需要将我的数据分成训练集(75%)和测试集(25%).我目前使用以下代码执行此操作:

X, Xt, userInfo, userInfo_train = sklearn.cross_validation.train_test_split(X, userInfo)   
Run Code Online (Sandbox Code Playgroud)

但是,我想对训练数据集进行分层.我怎么做?我一直在研究这种StratifiedKFold方法,但是不允许我指定75%/ 25%的分割,只对训练数据集进行分层.

python scikit-learn

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

找到关于输入的Caffe conv滤波器的梯度

我需要在卷积神经网络(CNN)中找到关于单个卷积滤波器的输入层的梯度,作为可视化滤波器的方法.
给定Caffe的Python接口中经过训练的网络(例如本示例中的网络),如何根据输入层中的数据找到conv-filter的渐变?

编辑:

根据cesans回答,我添加了以下代码.我输入图层的尺寸是[8, 8, 7, 96].我的第一个转换层conv1有11个过滤器,大小为1x5,导致尺寸[8, 11, 7, 92].

net = solver.net
diffs = net.backward(diffs=['data', 'conv1'])
print diffs.keys() # >> ['conv1', 'data']
print diffs['data'].shape # >> (8, 8, 7, 96)
print diffs['conv1'].shape # >> (8, 11, 7, 92)
Run Code Online (Sandbox Code Playgroud)

从输出中可以看出,返回的数组net.backward()的尺寸等于Caffe中我的图层的尺寸.经过一些测试后,我发现这个输出分别是data层和conv1层的损耗梯度.

但是,我的问题是如何根据输入层中的数据找到单个转换滤波器的梯度,这是另外的.我怎样才能做到这一点?

c++ python neural-network deep-learning caffe

36
推荐指数
2
解决办法
6650
查看次数

使用explict(预定义)验证集进行网格搜索和sklearn

我有一个数据集,以前分为3组:训练,验证和测试.必须使用这些集合以便比较不同算法的性能.

我现在想使用验证集优化我的SVM的参数.但是,我无法找到如何明确输入验证集sklearn.grid_search.GridSearchCV().下面是我之前用于在训练集上进行K折叠交叉验证的一些代码.但是,对于这个问题,我需要使用给定的验证集.我怎样才能做到这一点?

from sklearn import svm, cross_validation
from sklearn.grid_search import GridSearchCV

# (some code left out to simplify things)

skf = cross_validation.StratifiedKFold(y_train, n_folds=5, shuffle = True)
clf = GridSearchCV(svm.SVC(tol=0.005, cache_size=6000,
                             class_weight=penalty_weights),
                     param_grid=tuned_parameters,
                     n_jobs=2,
                     pre_dispatch="n_jobs",
                     cv=skf,
                     scoring=scorer)
clf.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)

python validation scikit-learn cross-validation

27
推荐指数
4
解决办法
9553
查看次数

设置GLOG_minloglevel = 1以防止来自Caffe的shell输出

我正在使用Caffe,它在加载神经网络时会向shell打印大量输出.
我想抑制输出,这可以通过设置GLOG_minloglevel=1运行Python脚本来完成.我尝试使用以下代码执行此操作,但我仍然从加载网络获得所有输出.如何正确抑制输出?

os.environ["GLOG_minloglevel"] = "1"
net = caffe.Net(model_file, pretrained, caffe.TEST)
os.environ["GLOG_minloglevel"] = "0"
Run Code Online (Sandbox Code Playgroud)

python neural-network glog deep-learning caffe

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

Python中LOWESS的置信区间

如何计算Python中LOWESS回归的置信区间?我想将这些作为阴影区域添加到使用以下代码创建的LOESS图中(除了statsmodel之外的其他包也很好).

import numpy as np
import pylab as plt
import statsmodels.api as sm

x = np.linspace(0,2*np.pi,100)
y = np.sin(x) + np.random.random(100) * 0.2
lowess = sm.nonparametric.lowess(y, x, frac=0.1)

plt.plot(x, y, '+')
plt.plot(lowess[:, 0], lowess[:, 1])
plt.show()
Run Code Online (Sandbox Code Playgroud)

我在webblog Serious Stats中添加了一个带有置信区间的示例图(它是使用R中的ggplot创建的).

在此输入图像描述

python loess statsmodels

24
推荐指数
2
解决办法
3851
查看次数

以十六进制格式提取matplotlib色彩映射

我试图通过操作此示例从matplotlib色彩映射中提取离散颜色.但是,我找不到从N色彩图中提取的离散色.

在下面的代码我已经使用过cmap._segmentdata,但我发现它是整个色彩映射的定义.给定色图和整数N,如何N从色彩图中提取离散色并以十六进制格式导出它们?

from pylab import *

delta = 0.01
x = arange(-3.0, 3.0, delta)
y = arange(-3.0, 3.0, delta)
X,Y = meshgrid(x, y)
Z1 = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = Z2 - Z1 # difference of Gaussians

cmap = cm.get_cmap('seismic', 5)    # PiYG
cmap_colors = cmap._segmentdata

def print_hex(r,b,g):
               if not(0 <= r <= 255 or 0 <= b <= …
Run Code Online (Sandbox Code Playgroud)

python hex matplotlib color-mapping colormap

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

d3未定义 - ReferenceError

我正在尝试使用http://bl.ocks.org/kerryrodden/7090426上的"花式图" :

在此输入图像描述

我这样做的方法是下载代码并简单地编辑CSV文件以匹配我的数据.然后我只需在Firefox中打开.html文件即可查看交互式图表.但是,在另一台计算机上使用它我会收到以下错误:

ReferenceError:d3未定义sequences.js:25

ReferenceError:d3未定义index.html:28

因为我几乎不知道d3或javascript我有点迷失.您是否可以向我提示导致错误的原因以及我应该如何更正代码?

我对代码做了一次修改,使其如下:

使用Javascript:

// Dimensions of sunburst.
var width = 750;
var height = 600;
var radius = Math.min(width, height) / 2;

// Breadcrumb dimensions: width, height, spacing, width of tip/tail.
var b = {
  w: 75, h: 30, s: 3, t: 10
};

// Mapping of step names to colors.
var colors = {
  "G0": "#5687d1",
  "G1": "#5c7b61",
  "G2": "#de783b",
  "G3": "#6ab975",
  "G4": "#a173d1",
  "G5": "#72d1a1",
  "Afgang": "#615c7b"
};

// Total size …
Run Code Online (Sandbox Code Playgroud)

javascript referenceerror d3.js sunburst-diagram

21
推荐指数
4
解决办法
8万
查看次数

在神经网络中实现稀疏连接(Theano)

神经网络的一些使用案例要求并非所有神经元都连接在两个连续层之间.对于我的神经网络架构,我需要有一个层,其中每个神经元只与前一层中某些预先指定的神经元有连接(在某些任意位置,而不是像卷积层这样的模式).这是为了对特定图形上的数据建模所必需的.我需要在Theano中实现这个"Sparse"层,但我不习惯Theano的编程方式.

似乎在Theano中编写稀疏连接的最有效方法是使用theano.tensor.nnet.blocksparse.SparseBlockGemv.另一种方法是进行矩阵乘法,其中许多权重设置为0(=无连接),但与SparseBlockGemv每个神经元仅连接到~100000个神经元中前一层中的2-6个神经元相比,这将是非常低效的..此外,100000x100000的重量矩阵不适合我的RAM/GPU.因此,有人可以提供一个如何使用该SparseBlockGemv方法或其他计算效率方法实现稀疏连接的示例吗?

一个完美的例子是在隐藏层(和softmax之前)之后用额外的层扩展MLP Theano教程,其中每个神经元仅与前一层中的神经元子集连接.但是,其他例子也非常受欢迎!

编辑:请注意,该图层必须在Theano中实现,因为它只是较大架构的一小部分.

python machine-learning neural-network theano deep-learning

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

仅通过下载网页的相关部分来刮取标题

我想用Python抓一个网页的标题.我需要为成千上万的网站做到这一点,所以它必须快速.我已经看过以前的问题,例如在python中检索网页的标题,但是我发现所有这些都在检索标题之前下载了整个页面,这看起来非常低效,因为大多数情况下标题都包含在前几个标题中HTML行.

是否可以只下载网页的各个部分,直到找到标题?

我尝试了以下内容,但page.readline()下载了整个页面.

import urllib2
print("Looking up {}".format(link))
hdr = {'User-Agent': 'Mozilla/5.0',
       'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
       'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
       'Accept-Encoding': 'none',
       'Accept-Language': 'en-US,en;q=0.8',
       'Connection': 'keep-alive'}
req = urllib2.Request(link, headers=hdr)
page = urllib2.urlopen(req, timeout=10)
content = ''
while '</title>' not in content:
    content = content + page.readline()
Run Code Online (Sandbox Code Playgroud)

- 编辑 -

请注意,我当前的解决方案使用BeautifulSoup仅限于处理标题,因此我可以优化的唯一位置可能无法在整个页面中读取.

title_selector = SoupStrainer('title')
soup = BeautifulSoup(page, "lxml", parse_only=title_selector)
title = soup.title.string.strip()
Run Code Online (Sandbox Code Playgroud)

- 编辑2 -

我发现BeautifulSoup本身将内容拆分为self.current_data变量中的多个字符串(请参阅 bs4中的此函数),但我不确定如何修改代码以基本上在找到标题后停止读取所有剩余内容.一个问题可能是重定向应该仍然有效.

- 编辑3 -

所以这是一个例子.我有一个链接www.xyz.com/abc,我必须通过任何重定向(几乎所有我的链接使用一点点链接缩短).我对任何重定向后出现的标题和域感兴趣.

- 编辑4 -

非常感谢您的所有帮助!Kul-Tigin的答案非常有效并且已被接受.我会保持赏金直到它耗尽,但看看是否有更好的答案(如时间测量比较所示).

- 编辑5 …

html python performance web-scraping

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

Caffe中的预测 - 异常:输入blob参数与净输入不匹配

我正在使用Caffe使用非常简单的CNN结构对非图像数据进行分类.我在使用尺寸为nx 1 x 156 x 12的HDF5数据上训练我的网络没有任何问题.但是,我在分类新数据时遇到了困难.

如何在没有任何预处理的情况下进行简单的正向传递?我的数据已经标准化并且具有Caffe的正确尺寸(它已经被用于训练网络).下面是我的代码和CNN结构.

编辑:我已将问题隔离到pycaffe.py中的函数'_Net_forward',并发现问题出现在self.input dict为空.谁能解释为什么会这样?该集合应该等于来自新测试数据的集合:

if set(kwargs.keys()) != set(self.inputs):
            raise Exception('Input blob arguments do not match net inputs.')
Run Code Online (Sandbox Code Playgroud)

我的代码已经改变了一点,因为我现在使用IO方法将数据转换为数据(见下文).通过这种方式,我用正确的数据填充了kwargs变量.

即使是小提示也会非常感激!

    import numpy as np
    import matplotlib
    import matplotlib.pyplot as plt

    # Make sure that caffe is on the python path:
    caffe_root = ''  # this file is expected to be run from {caffe_root}
    import sys
    sys.path.insert(0, caffe_root + 'python')

    import caffe

    import os
    import subprocess
    import h5py
    import shutil
    import tempfile

    import sklearn
    import sklearn.datasets …
Run Code Online (Sandbox Code Playgroud)

python deep-learning caffe

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