我在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中使用交叉验证来修剪树模型?谢谢.
在接受采访时,我遇到了雇主提出的问题.他问我为什么KNN分类器比决策树快得多,例如在字母识别或面部识别中?
那时我完全不知道.所以我想知道在哪些术语中我应该比较速度性能中的两种分类方法?谢谢.
有一个列表: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的讨论中,我看到了一个函数,用于将IP字符串转换为函数编程方式的整数.这是链接.
该功能在一行中实现.
def ipnumber(ip):
return reduce(lambda sum, chunk: sum <<8 | chunk, map(int, ip.split(".")))
Run Code Online (Sandbox Code Playgroud)
但是,我对功能编程的想法很少.任何人都可以详细解释这个功能吗?我对"地图"和"减少"有一些了解.但我不知道什么是"|" 而"块"在这里意味着.
谢谢.
最好的答案是什么是以块为单位迭代列表的最"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将迭代器转换为分块列表?谢谢.
我必须使用包含大量中文字符的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中加载模块呢?谢谢.
我在运行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中重新分配列表中的每个项目.
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)
我想知道为什么会这样.任何机构都可以详细解释列表吗?谢谢.
我正在做一个根据教程检测垃圾邮件帐户的项目.两个标签 - "垃圾邮件"和"非垃圾邮件"用于训练和测试.分类已经完成,我正在进行评估.
结果是:
*Spam* precision: 0.962917933131
*Spam* recall: 0.6336
*Not spam* precision: 0.72697466468
*Not spam* recall: 0.9756
Run Code Online (Sandbox Code Playgroud)
我已经阅读了精确和召回的维基,仍然感到困惑,并且不知道如何将它用于测量.
我的目的是减少标记为"垃圾邮件"的普通帐户的数量.一些"垃圾邮件"帐户可以逃脱并不重要.所以我想知道上面哪些结果我应该集中精力改进?谢谢.
我使用pymongo转储MongoDB中的集合列表.列表的长度大于10000,大约12000或更长(列表的长度不是一定的数字).
但是,我只需要10000个列表实例.我知道列表'l'能够切换l[:10000]或l[len(l)-10000:].但我认为删除列表中项目的随机方法可能更好.
所以我想知道如何删除列表中的随机项以使其长度减少到10000长?谢谢.
我曾经在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)