python实现决策树算法sklearn_GitHub - cbyonder/lihang_algorithms: 用python和sklearn两种方法实现李航《统计学习方法》中的算法...

lihang_algorithms

用python和sklearn实现李航老师的《统计学习方法》中所提到的算法

实验数据:MNIST数据集,这里用kaggle中处理好的数据

官方下载地址:http://yann.lecun.com/exdb/mnist/

kaggle中处理好的数据:https://www.kaggle.com/c/digit-recognizer/data

第二章 感知机

适用问题:二类分类

实验数据:由于是二分类器,所以将MINST数据集train.csv的label列进行了一些微调,label等于0的继续等于0,label大于0改为1。这样就将十分类的数据改为二分类的数据。获取地址train_binary.csv

代码:perceptron/perceptron.py

运行结果:

perceptron_result.png

代码(用sklearn实现):perceptron/perceptron_sklearn.py

运行结果:

perceptron_sklearn_result.png

第三章 k邻近法

适用问题:多类分类

三个基本要素:k值的选择、距离度量及分类决策规则

代码:knn/knn.py

运行结果:

knn_result.png

代码(用sklearn实现):knn/knn_sklearn.py

运行结果:

knn_sklearn_result.png

第四章 朴素贝叶斯法

适用问题:多类分类

基于贝叶斯定理和特征条件独立假设

常用的三个模型有:

高斯模型:处理特征是连续型变量的情况

多项式模型:最常见,要求特征是离散数据

伯努利模型:要求特征是离散的,且为布尔类型,即true和false,或者1和0

第五章 决策树

适用问题:多类分类

三个步骤:特征选择、决策树的生成和决策树的剪枝

常见的决策树算法有:

ID3:特征划分基于信息增益

C4.5:特征划分基于信息增益比

CART:特征划分基于基尼指数

第六章 逻辑斯谛回归

二项逻辑斯谛回归

(多项)逻辑斯谛回归

第六章 最大熵模型

适用问题:多类分类

下面用改进的迭代尺度法(IIS)学习最大熵模型,将特征函数定义为:

68747470733a2f2f6c617465782e636f6465636f67732e636f6d2f6769662e6c617465783f6628782c79293d5c6c6566745c7b5c626567696e7b6d61747269787d2673706163653b312673706163653b262673706163653b28782c79295c696e2673706163653b747261696e2673706163653b7365742673706163653b5c5c2673706163653b302673706163653b262673706163653b656c73652673706163653b5c656e647b6d61747269787d5c72696768742e

与其他分类器不同的是,最大熵模型中的f(x,y)中的x是单独的一个特征,不是一个n维特征向量,因此我们需要对每个维度特征加一个区分标签;如X=(x0,x1,x2,...)变为X=(0_x0,1_x1,2_x2,...)

代码:maxEnt/maxEnt.py

运行结果:

maxEnt_result.png

第七章 支持向量机

适用问题:二类分类

实验数据:二分类的数据 train_binary.csv

SVM有三种模型,由简至繁为

当训练数据训练可分时,通过硬间隔最大化,可学习到硬间隔支持向量机,又叫线性可分支持向量机

当训练数据训练近似可分时,通过软间隔最大化,可学习到软间隔支持向量机,又叫线性支持向量机

当训练数据训练不可分时,通过软间隔最大化及核技巧(kernel trick),可学习到非线性支持向量机

代码(用sklearn实现):svm/svm_sklearn.py

注:可用拆解法(如OvO,OvR)将svm扩展成适用于多分类问题(其他二分类问题亦可),sklearn中已经实现

运行结果:

svm_sklearn_result.png

第八章 提升方法

提升方法就是组合一系列弱分类器构成一个强分类器,AdaBoost是其代表性算法

AdaBoost算法

适用问题:二类分类,要处理多类分类需进行改进

代码(用sklearn实现):AdaBoost/AdaBoost_sklearn.py

实验数据为train.csv的运行结果:

Adaboost_sklearn_result_1.png

实验数据为train_binary.csv的运行结果:

Adaboost_sklearn_result_2.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值