python机器学习day'4

来源:互联网 发布:软件著作权多久 编辑:程序博客网 时间:2024/05/22 15:51

线性分类器和支持向量机都是线性的模型。

朴素贝叶斯是根据贝叶斯理论构造的,基本的数学假设是各个维度上的特征之间是相互独立的。

根据贝叶斯公式,即P(y|x)=P(x|y)P(y)/P(x),因为每个P(x)只与x有关,当对单独的x讨论时,P(x)可以忽略。

根据贝叶斯公式的特点,并且前面已经假设了x之间相互独立。

[ P( x | y ) ]max = [ P( x1, x2,..., xn | y )P( y ) ]max 

                         = [ P( x1 = 0 | y = c1 ), P( x1 = 1 | y = c1 ),..., P( x1 = 0 | y = ck ), P( x1 = 1 | y = ck ),..., P( xn = 0 | y = ck ), P( xn = 1 | y = ck ) ]max

并且在计算的时候用概率近似于比例计算,也就是说P( xi = 1 | y = cj ) = P( xi = 1, y = cj ) / P( y = cj ) 

                                                                                = 符合xi = 1且y = cj的样本数量 / 符合y = cj的样本数量。

呼…这公式敲得我…

和之前load函数不同,这次使用抓取器即时从网上下载数据。然后进行数据分割。

并且抓取到的数据很原始,没有特征也没有量度需要进行一些处理。CountVectorizer函数用来转为矢量。

http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html

遗憾的是…可能因为源地址还是什么…书里面的那个抓取器抓取的结果是空。哭哭。

朴素贝叶斯的特点是节约内存消耗和计算时间,但是因为前提是假设特征间相互独立,所以对于有相互关系的就不太适用。


K临近使用了鸢尾数据集。


来源:http://www.jianshu.com/p/be23b3870d2e

提到之前的split函数中的随机种子就是防止样本有序排列。

然后重点来了…K临近是一个无参数模型。也就是说…他没有参数训练。但是其实代码中还是有fit()…很费解。我一直以为这个就是训练的过程。

特点是时间复杂度和内存消耗都很大。