各种算法记录

部分摘录地址:http://www.csuldw.com/2015/07/22/2015-07-22%20%20ensemble/

介绍了bagging bootsrap randomforest

from sklearn.ensemble import BaggingClassifier
from sklearn.neighbors import KNeighborsClassifier
 bagging = BaggingClassifier(KNeighborsClassifier(),
                             max_samples=0.5, max_features=0.5)
模型生成
    令n为训练数据的实例数量
    对于t次循环中的每一次
        从训练数据中采样n个实例
        将学习应用于所采样本
        保存结果模型
分类
    对于t个模型的每一个
        使用模型对实例进行预测
    返回被预测次数最多的一个
---------------------------------分割线-----------------------------------------------------------
bagging与boosting的区别:

二者的主要区别是取样方式不同。bagging采用均匀取样,而Boosting根据错误率来取样,因此boosting的分类精度要优于Bagging。bagging的训练集的选择是随机的,各轮训练集之间相互独立,而boostlng的各轮训练集的选择与前面各轮的学习结果有关;bagging的各个预测函数没有权重,而boosting是有权重的;bagging的各个预测函数可以并行生成,而boosting的各个预测函数只能顺序生成。对于象神经网络这样极为耗时的学习方法。bagging可通过并行训练节省大量时间开销。

bagging和boosting都可以有效地提高分类的准确性。在大多数数据集中,boosting的准确性比bagging高。在有些数据集中,boosting会引起退化—- Overfit。
------------------------------------------分割线----------------------------------------------------

from sklearn.cross_validation import cross_val_score

from sklearn.datasets import load_iris

from sklearn.ensemble import AdaBoostClassifier

iris = load_iris()
clf = AdaBoostClassifier(n_estimators=100)
scores = cross_val_score(clf, iris.data, iris.target)
scores.mean()                             
0.9...



随机森林代码如下:

from sklearn.ensemble import RandomForestClassifier
>>> X = [[0, 0], [1, 1]]
>>> Y = [0, 1]
>>> clf = RandomForestClassifier(n_estimators=10)
>>> clf = clf.fit(X, Y)

--------------------------------------------------------------------------------------------------------------------------------
  • 使用逻辑回归方法进行分类并不需要做很多工作,所需做的只是把测试集上每个特征向量乘以最优化方法得来的回归系数,再将该乘积结果求和,最后输人到Sigmoid 函数中即可 如果对应的Sigmoid值大于0.5就预测类别标签为1 ,否则为0。
-----------------------------------------------------------------------------------------------------------
  • 我们希望找到离分隔超平面最近的点,确保它们离分隔面的距离尽可能远。这里点到分隔面的距离被称为间隔(margin )。我们希望间隔尽可能地大,这是因为如果我们犯错或者在有限数据上训练分类器的话,我们希望分类器尽可能强壮。
        支持向量(support.vector)就是离分隔超平面最近的那些点。接下来要试着最大化支持向量到分隔面的距离,需要找到此  问题的优化求解方法。
------------------------------------------------------------------------------------------------------------

boosting是一种与bagging很类似的技术。不论是在boosting还是bagging当中,所使用的多个分类器的类型都是一致的。但是在前者当中,不同的分类器是通过串行训练而获得的,每个新分类器都根据已训练出的分类器的性能来进行训练。bagging是通过集中关注被已有分类器错分的那些数据来获得新的分类器。


(想一想美国大选拉选民)聚类是一种无监督的学习,它将相似的对象归到同一个簇中。它有点像全自动分类。聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好。本章要学习一种称为K-均值(K-mean)聚类的算法。之所以称之为艮-均值是因为它可以发现&个不同的簇,且每个簇的中心采用簇中所含值的均值计算而成。



你可能感兴趣的:(各种算法记录)