小编zfz*_*zfz的帖子

如何在R中修剪树?

我在R中使用rpart进行分类.树模型通过以下方式进行训练:

> tree <- rpart(activity ~ . , data=trainData)
> pData1 <- predict(tree, testData, type="class")
Run Code Online (Sandbox Code Playgroud)

此树模型的准确性为:

> sum(testData$activity==pData1)/length(pData1)
[1] 0.8094276
Run Code Online (Sandbox Code Playgroud)

我阅读了一个教程,通过交叉验证来修剪树:

> ptree <- prune(tree,cp=tree$cptable[which.min(tree$cptable[,"xerror"]),"CP"])
> pData2 <- predict(ptree, testData, type="class")
Run Code Online (Sandbox Code Playgroud)

修剪树的准确率仍然相同:

> sum(testData$activity==pData2)/length(pData2)
[1] 0.8094276
Run Code Online (Sandbox Code Playgroud)

我想知道修剪过的树有什么问题?如何在R中使用交叉验证来修剪树模型?谢谢.

r machine-learning decision-tree rpart

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

为什么KNN比决策树快得多?

在接受采访时,我遇到了雇主提出的问题.他问我为什么KNN分类器比决策树快得多,例如在字母识别或面部识别中?

那时我完全不知道.所以我想知道在哪些术语中我应该比较速度性能中的两种分类方法?谢谢.

algorithm machine-learning decision-tree knn

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

在Python中生成时,"()"和"[]"之间有什么区别?

有一个列表:nodes = [20,21,22,23,24,25].

我使用两种方法来生成新的二维对象:

tour1 = (((a,b) for a in nodes )for b in nodes)
tour2 = [[(a,b) for a in nodes ]for b in nodes]
Run Code Online (Sandbox Code Playgroud)

tour1的类型是生成器,而tour2是列表:

In [34]: type(tour1)
Out[34]: <type 'generator'>

In [35]: type(tour2)
Out[35]: <type 'list'>
Run Code Online (Sandbox Code Playgroud)

我想知道为什么tour1不是一个元组?谢谢.

python tuples list generator

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

如何理解将IP字符串转换为整数的函数式编程代码?

在python的讨论中,我看到了一个函数,用于将IP字符串转换为函数编程方式的整数.这是链接.

该功能在一行中实现.

def ipnumber(ip):
    return reduce(lambda sum, chunk: sum <<8 | chunk, map(int, ip.split(".")))
Run Code Online (Sandbox Code Playgroud)

但是,我对功能编程的想法很少.任何人都可以详细解释这个功能吗?我对"地图"和"减少"有一些了解.但我不知道什么是"|" 而"块"在这里意味着.

谢谢.

python ip functional-programming

5
推荐指数
2
解决办法
213
查看次数

如何使用izip_longest取消代码以列出一个列表?

最好的答案是什么是以块为单位迭代列表的最"pythonic"方式?使用函数izip_longest来分块列表.但我无法理解.

def grouper(iterable, n, fillvalue=None):
    args = [iter(iterable)] * n
    return izip_longest(*args, fillvalue=fillvalue)

for item in grouper(range(10), 4):
    print list(item)
Run Code Online (Sandbox Code Playgroud)

我运行上面的代码,然后创建分块列表:

[1 ,2, 3, 4]
[5, 6, 7, 8]
[9, 10, None, None]
Run Code Online (Sandbox Code Playgroud)

我试着一步一步地运行它:

In [1]: args = [iter(range(10))] * 4

In [2]: args
Out[2]: 
[<listiterator at 0x1ad7610>,
 <listiterator at 0x1ad7610>,
 <listiterator at 0x1ad7610>,
 <listiterator at 0x1ad7610>]
Run Code Online (Sandbox Code Playgroud)

列表由同一个迭代器创建.我知道实现了izip_longest函数来生成列表对.如何通过izip_longest将迭代器转换为分块列表?谢谢.

python iterator list python-itertools

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

加载word2vec模块时,'utf-8'解码错误

我必须使用包含大量中文字符的word2vec模块.该模块由我的同事使用Java进行培训,并保存为bin文件.

我安装了gensim并尝试加载模块,但发生以下错误:

In [1]: import gensim  

In [2]: model = gensim.models.Word2Vec.load_word2vec_format('/data5/momo-projects/user_interest_classification/code/word2vec/vectors_groups_1105.bin', binary=True)

UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 96-97: unexpected end of data
Run Code Online (Sandbox Code Playgroud)

我试图在python 2.7和3.5中加载模块,以同样的方式失败.那么如何在gensim中加载模块呢?谢谢.

python nlp gensim word2vec

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

为什么Python在循环后没有删除迭代变量?

我在运行ipython时发现了这种情况.python的版本是2.6.6和ipython 0.13.例如:

In [1]: for i in range(100):
   ...:     pass
   ...: 

In [2]: who
Out [2]: i  

In [3]: print i
Out [3]: 99
Run Code Online (Sandbox Code Playgroud)

循环之后,变量i仍然存在.所以我想知道这是一个Python设计的错误吗?如果没有,为什么?谢谢.

python iterator loops ipython

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

如何在Python中重新分配列表中的项目?

我想在Python中重新分配列表中的每个项目.

In [20]: l = [1,2,3,4,5]
In [21]: for i in l:
   ....:     i = i + 1
   ....:     
   ....:     
Run Code Online (Sandbox Code Playgroud)

但名单根本没有变化.

In [22]: l
Out[22]: [1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

我想知道为什么会这样.任何机构都可以详细解释列表吗?谢谢.

python iteration list

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

关于垃圾邮件检测中精度和召回的困惑

我正在做一个根据教程检测垃圾邮件帐户的项目.两个标签 - "垃圾邮件"和"非垃圾邮件"用于训练和测试.分类已经完成,我正在进行评估.

结果是:

*Spam* precision: 0.962917933131
*Spam* recall: 0.6336

*Not spam* precision: 0.72697466468
*Not spam* recall: 0.9756
Run Code Online (Sandbox Code Playgroud)

我已经阅读了精确和召回的维基,仍然感到困惑,并且不知道如何将它用于测量.

我的目的是减少标记为"垃圾邮件"普通帐户的数量.一些"垃圾邮件"帐户可以逃脱并不重要.所以我想知道上面哪些结果我应该集中精力改进?谢谢.

classification machine-learning spam precision-recall

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

如何删除列表中的随机项以使列表保持一定的长度?

我使用pymongo转储MongoDB中的集合列表.列表的长度大于10000,大约12000或更长(列表的长度不是一定的数字).

但是,我只需要10000个列表实例.我知道列表'l'能够切换l[:10000]l[len(l)-10000:].但我认为删除列表中项目的随机方法可能更好.

所以我想知道如何删除列表中的随机项以使其长度减少到10000长?谢谢.

python random algorithm list

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

如何在Scala中处理大型列表?

我曾经在Python中处理统计信息.例如,一个大文件包含数千万个ID:

$ cat report_ids | head
3788065
7950319
140494477
182851142
120757318
160033281
78087029
42591118
104363873
212143796
...
Run Code Online (Sandbox Code Playgroud)

在IPython中,以下行始终有效.

In [1]: lines = [line.strip() for  line in open('./report_ids').readlines()]

In [2]: from collections import Counter

In [3]: d = Counter(lines)

In [4]: d[lines[0]]
Out[4]: 9
Run Code Online (Sandbox Code Playgroud)

当我在Scala中尝试相同时,会发生内存不足错误.

val lines = scala.io.Source.fromFile("./report_ids").getLines.toList
lines: List[String] = List(3788065, 7950319, 140494477, 182851142, 120757318, 160033281, 78087029, 42591118, 104363873, 212143796, 175644298, 112703123, 213308679, 109649718, 11947300, 214660563, 83402867, 162877289, 83030111, 78231639, 45129180, 11635655, 34778452, 46604760, 142519099, 213261965, 137812002, 167057636, 119258917, …
Run Code Online (Sandbox Code Playgroud)

python jvm scala file out-of-memory

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