我发现很难理解Naive Bayes的过程,我想知道是否有人可以用英语简单的一步一步解释它.我理解它需要按时间比较概率,但我不知道训练数据如何与实际数据集相关.
请给我一个关于训练集扮演什么角色的解释.我在这里给出一个非常简单的水果例子,例如香蕉
training set---
round-red
round-orange
oblong-yellow
round-red
dataset----
round-red
round-orange
round-red
round-orange
oblong-yellow
round-red
round-orange
oblong-yellow
oblong-yellow
round-red
Run Code Online (Sandbox Code Playgroud) algorithm classification machine-learning dataset naivebayes
ANN(人工神经网络)和SVM(支持向量机)是监督机器学习和分类的两种流行策略.通常不清楚哪种方法对特定项目更好,而且我确定答案总是"它取决于".通常,使用两者的组合以及贝叶斯分类.
有关ANN与SVM的问题已经在Stackoverflow上提出了这些问题:
在这个问题中,我想具体了解人工神经网络(特别是多层感知器)的哪些方面可能需要在SVM上使用?我问的原因是因为很容易回答相反的问题:支持向量机通常优于人工神经网络,因为它们避免了人工神经网络的两个主要缺点:
(1)人工神经网络通常会集中在局部最小值而不是全局最小值,这意味着它们有时基本上"错过了大局"(或者错过了树木的森林)
(2)如果训练时间过长,人工神经网络常常过度拟合,这意味着对于任何给定的模式,人工神经网络可能会开始将噪声视为模式的一部分.
SVM不会遇到这两个问题中的任何一个.然而,并不是很明显SVM应该是人工神经网络的完全替代品.那么人工神经网络对SVM有哪些具体优势可能使其适用于某些情况?我已经列出了SVM相对于ANN的特定优势,现在我想看一下ANN优势列表(如果有的话).
有人能解释数据挖掘中分类和聚类之间的区别吗?
如果可以,请举两个例子来理解主要想法.
terminology classification cluster-analysis machine-learning data-mining
如何将训练有素的Naive Bayes分类器保存到磁盘并使用它来预测数据?
我从scikit-learn网站获得以下示例程序:
from sklearn import datasets
iris = datasets.load_iris()
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
y_pred = gnb.fit(iris.data, iris.target).predict(iris.data)
print "Number of mislabeled points : %d" % (iris.target != y_pred).sum()
Run Code Online (Sandbox Code Playgroud) 有关"苹果"的50条推文见下文.我手上贴了关于Apple Inc.的积极匹配.他们在下面标记为1.
这里有几行:
1|“@chrisgilmer: Apple targets big business with new iOS 7 features http://bit.ly/15F9JeF ”. Finally.. A corp iTunes account!
0|“@Zach_Paull: When did green skittles change from lime to green apple? #notafan” @Skittles
1|@dtfcdvEric: @MaroneyFan11 apple inc is searching for people to help and tryout all their upcoming tablet within our own net page No.
0|@STFUTimothy have you tried apple pie shine?
1|#SuryaRay #India Microsoft to bring Xbox and PC games to Apple, Android phones: Report: Microsoft Corp... http://dlvr.it/3YvbQx @SuryaRay …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用scikit-learn的监督学习方法之一将文本片段分类为一个或多个类别.我尝试的所有算法的预测函数只返回一个匹配.
例如,我有一段文字:
"Theaters in New York compared to those in London"
Run Code Online (Sandbox Code Playgroud)
我已经训练了算法为我提供的每个文本片段选择一个地方.
在上面的例子中,我希望它返回New York
和London
,但它只返回New York
.
是否可以使用scikit-learn返回多个结果?或者甚至以最高概率返回标签?
谢谢你的帮助.
---更新
我尝试过使用,OneVsRestClassifier
但我仍然只能在每段文字中找到一个选项.下面是我正在使用的示例代码
y_train = ('New York','London')
train_set = ("new york nyc big apple", "london uk great britain")
vocab = {'new york' :0,'nyc':1,'big apple':2,'london' : 3, 'uk': 4, 'great britain' : 5}
count = CountVectorizer(analyzer=WordNGramAnalyzer(min_n=1, max_n=2),vocabulary=vocab)
test_set = ('nice day in nyc','london town','hello welcome to the big apple. enjoy it here and london too')
X_vectorized = …
Run Code Online (Sandbox Code Playgroud) liblinear和nltk等机器学习包中的分类器提供了一种方法show_most_informative_features()
,它对调试功能非常有用:
viagra = None ok : spam = 4.5 : 1.0
hello = True ok : spam = 4.5 : 1.0
hello = None spam : ok = 3.3 : 1.0
viagra = True spam : ok = 3.3 : 1.0
casino = True spam : ok = 2.0 : 1.0
casino = None ok : spam = 1.5 : 1.0
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果在scikit-learn中为分类器实现类似的东西.我搜索了文档,但找不到类似的东西.
如果还没有这样的功能,有人知道如何获得这些值吗?
非常感谢!
当我们计算考虑精度和召回的F-测量时,我们采用两个测量的调和平均值而不是简单的算术平均值.
采用调和均值而不是简单平均值的直观原因是什么?
我正在研究不平衡类(5%1)的分类问题.我想预测班级,而不是概率.
在二进制分类问题中,scikit 默认classifier.predict()
使用0.5
?如果没有,那么默认方法是什么?如果是,我该如何更改?
在scikit中,一些分类器可以class_weight='auto'
选择,但并非所有分类器都可以.有class_weight='auto'
,会.predict()
用实际人口比例作为门槛吗?
在像MultinomialNB
这样的分类器中不支持的方法是class_weight
什么?除了使用predict_proba()
然后自己计算类.
classification ×10
python ×5
scikit-learn ×4
data-mining ×2
svm ×2
algorithm ×1
dataset ×1
java ×1
libsvm ×1
naivebayes ×1
r ×1
terminology ×1