小编use*_*386的帖子

Python中的random.sample和random.shuffle有什么区别

我有一个包含 1500 个元素的列表 a_tot,我想以随机方式将该列表分为两个列表。列表 a_1 将有 1300 个元素,列表 a_2 将有 200 个元素。我的问题是关于随机化包含 1500 个元素的原始列表的最佳方法。当我对列表进行随机化时,我可以取一个包含 1300 的切片,另一个包含 200 的切片。一种方法是使用 random.shuffle,另一种方法是使用 random.sample。两种方法之间的随机化质量有什么差异吗?列表1中的数据应该是随机样本,列表2中的数据也是如此。有什么建议吗?使用随机播放:

random.shuffle(a_tot)    #get a randomized list
a_1 = a_tot[0:1300]     #pick the first 1300
a_2 = a_tot[1300:]      #pick the last 200
Run Code Online (Sandbox Code Playgroud)

使用样本

new_t = random.sample(a_tot,len(a_tot))    #get a randomized list
a_1 = new_t[0:1300]     #pick the first 1300
a_2 = new_t[1300:]      #pick the last 200
Run Code Online (Sandbox Code Playgroud)

python random

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

Python正则表达式与背后和替代品

我想要一个正则表达式,找到"包裹"在"HEAD或HEADa"和"HEAD"之间的文本.也就是说,我可能有一个以第一个单词开头的文本作为HEAD或HEADa以及下面的"head" "属于HEAD类型.

  1. HEAD\n\n text...text...HEAD \n\n text....text HEAD\n\n text....text .....
  2. HEADa\n\n text...text...HEAD \n\n text....text HEAD\n\n text....text .....

我只想捕获"头部"之间的文本,因此我有一个背后的正则表达式,并向前看表达式寻找我的"头".我有以下正则表达式:

var = "HEADa", "HEAD"

my_pat = re.compile(r"(?<=^\b"+var[0]+r"|"+var[1]+r"\b) \w*\s\s(.*?)(?=\b"+var[1] +r"\b)",re.DOTALL|re.MULTILINE)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试执行此正则表达式时,我收到一条错误消息,指出我在后面的表达式中不能有可变长度.这个正则表达式有什么问题?

python regex

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

scikits混淆矩阵与交叉验证

我正在使用scikits接口训练带有交叉验证(stratifiedKfold)的svm分类器.对于每个测试集(k),我得到一个分类结果.我想要一个包含所有结果的混淆矩阵.Scikits有一个混淆矩阵接口:sklearn.metrics.confusion_matrix(y_true,y_pred)我的问题是我应该如何累积y_true和y_pred值.它们是数组(numpy).我应该根据我的k-fold参数定义数组的大小?对于每个结果,我应该将y_true和y-pred添加到数组中?

python machine-learning scikits scikit-learn

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

scikit 学习聚核和伽马值?

我将使用带有多项式内核的 scikit SVC,格式如下:(1 + xTn.xm)^4。度数为 4 的含义(一加 xTn.xm 的乘积)。xTn 是转置后的 xn 值。当我查看 scikit 文档时,他们指定了 SVC 的参数:

    degree : int, optional (default=3)
 |      Degree of kernel function.
 |      It is significant only in 'poly' and 'sigmoid'.
 |  
 |  gamma : float, optional (default=0.0)
 |      Kernel coefficient for 'rbf' and 'poly'.
 |      If gamma is 0.0 then 1/n_features will be used instead.
 |  
 |  coef0 : float, optional (default=0.0)
 |      Independent term in kernel function.
 |      It is only significant in 'poly' …
Run Code Online (Sandbox Code Playgroud)

python-2.7 scikit-learn

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

如何在scikit_learn中使用KFold中的shuffle

我使用scikit-learn提供的KFold函数运行10倍CV,以便选择一些内核参数.我正在实现这个(grid_search)程序:

1-pick up a selection of parameters
2-generate a svm
3-generate a KFold
4-get the data that correspons to training/cv_test
5-train the model (clf.fit)
6-classify with the cv_testdata
7-calculate the cv-error 
8-repeat 1-7
9-When ready pick the parameters that provide the lowest average(cv-error)
Run Code Online (Sandbox Code Playgroud)

如果我在KFold代中不使用shuffle,如果我重复相同的运行并且"最佳结果"是可重复的,那么我得到的平均值(cv_errors)的结果非常相似.如果我使用shuffle,如果我重复相同的运行几次并且"最佳值"不可重复,则我得到平均值(cv-errors)的不同值.我可以理解,我应该为每个KFold传递获得不同的cv_errors,但最终的平均值应该是相同的.带有shuffle的KFold如何真正起作用?每次调用KFold时,它都会对我的索引进行洗牌,并生成训练/测试数据.它如何为"训练/测试"挑选不同的折叠?是否有随机方式选择不同的折叠进行培训/测试?任何情况下,其有利的"洗牌"和情况不是??

python-2.7 scikit-learn

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

scikit支持缩放[0,1]或[-1,1]之间的特征

scikit-learn的SVM基于LIBSVM.LIBSVM/SVM要求应缩放数据,并建议特征值应在两个范围[0,1]或[-1,1]之一中.也就是说,在典型的矩阵中,每列是一个特征,并且每列完成缩放.

LIBSVM FAQ建议进行简单的缩放以获得[0,1]之间的功能:

x'=(x-min)/(Max-min)
Run Code Online (Sandbox Code Playgroud)

scikit-learn是否支持这种"简单缩放"?是否有其他建议用于扩展要与SVM和RBF内核一起使用的功能.任何参考?我找到了一篇名为"支持向量分类的实用指南"的参考文章,该文章基于LIBSVM,他们建议缩放到[0,1]或[-1,1].

python svm scikit-learn

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

Python 2.6优化嵌套循环

我有一个函数,它有一个字典作为输入和一个值n.字典中的每个项目都是具有一个或多个值的集合.该函数应对字典键进行排序,它应提取并返回"n"值.此功能将经常执行,因此我正在尝试优化它.有什么建议?

def select_items(temp_dict, n):
  """Select n items from the dictionary"""
  res = []
  sort_keys = sorted(temp_dict.keys())
  count = 0

  for key in sort_keys:
    for pair in temp_dict[key]:
      if count < n:
        res.append(pair)
        count += 1
      else:
        return res

  return res
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我有一个count和"if语句"来控制所选值的数量.有没有办法通过在itertools或其他东西中使用某些函数来优化此代码?

python optimization

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

计算某个组的相对频率

我有一个分类变量的数据框,我已经分成了几组,我得到了每组的计数.

My original data nyD looks like:

Source: local data frame [7 x 3]
Groups: v1, v2, v3

  v1    v2   v3
1  a  plus  yes
2  a  plus  yes
3  a minus   no
4  b minus  yes
5  b     x  yes
6  c     x notk
7  c     x notk

I performed the following operations using dplyr:

ny1 <- nyD %>% group_by(v1,v2,v3)%>%
           summarise(count=n()) %>%
           mutate(prop = count/sum(count))


My data "ny1" looks like:

Source: local data frame [5 x 5]
Groups: v1, …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

使用\ w的Python正则表达式不起作用

如果有两个单词,我想要一个正则表达式来找到一个短语和前面的两个单词.例如,我有字符串(每行一个句子):

雪佛兰是我的车,而Rusty是我的马.我的车非常漂亮,我的狗是红色的.

如果我使用正则表达式:

re.finditer(r'[\w+\b|^][\w+\b]my car',txt)
Run Code Online (Sandbox Code Playgroud)

我没有得到任何匹配.

如果我使用正则表达式:

re.finditer(r'[\S+\s|^][\S+\s]my car',txt)
Run Code Online (Sandbox Code Playgroud)

我得到了:是我的车'和'.我的车'(我忽略了案例并使用多线)

为什么带有\ w +\b的正则表达式找不到任何东西?它应该找到两个单词和'我的车'如果有两个单词,怎么能在'我的车'之前得到两个完整的单词.如果我的车前只有一个字,我应该得到它.如果前面没有任何词语,我应该只获得"我的车".在我的字符串示例中,我应该得到:'雪佛兰是我的车'和'我的车'(这里没有前面的话)

python regex python-3.x

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