机器学习算法应用篇之决策树算法(sklearn)
来源:互联网 发布:linux 新建用户 权限 编辑:程序博客网 时间:2024/06/15 00:17
从本篇文章开始,我将开始写机器学习算法的一系列文章,总结自己在学习应用机器学习算法过程中的学习经验与方法,主要利用工具是python的机器学习库sklearn。主要包括以下算法:决策树算法(ID3,ID4.5,CART等),朴素贝叶斯方法(Navie Bayes),支持向量基(SVM),K均值算法(K-means),PageRank,K近邻方法(KNN),遗传算法,神经网络,主成分分析方法(PCA),流型方法(ISOMAP,LLE),期望最大化方法(EM)等,不定期更新。希望大家一起学习。
1.决策树
决策树算法主要是用于处理多变量决策类问题,类似于这类问题
根据你的年龄,收入,学生与否,信用卡状况来判断你是否会买电脑。根据决策树算法可以得到一棵完整的树,根据树由根节点出发可以得到是否买电脑(label)的预测。
所以决策树的定义可以为: 决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。
2.算法
(1)ID3算法
ID3算法的核心思想就是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。
(2)C4.5算法
ID3算法存在一个问题,就是偏向于多值属性,例如,如果存在唯一标识属性ID,则ID3会选择它作为分裂属性,这样虽然使得划分充分纯净,但这种划分对分类几乎毫无用处。ID3的后继算法C4.5使用增益率(gain ratio)的信息增益扩充,试图克服这个偏倚。
(3)CART算法
CART(Classification And Regression Tree)算法采用一种二分递归分割的技术,将当前的样本集分为两个子样本集,使得生成的的每个非叶子节点都有两个分支。因此,CART算法生成的决策树是结构简洁的二叉树。
具体的算法介绍可以参考书或者以下几篇文章
https://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html
http://blog.csdn.net/hewei0241/article/details/8280490
3.应用(sklearn)
1.读取数据
df_data_1 = pd.read_csv("data_file")
2.数据前处理(定义X,Y数据集)
df_data_1 = df_data_1.fillna("NA")#缺省数据用NA表示exc_cols = [u'Airport Rating']cols = [c for c in df_data_1.columns if c not in exc_cols]X_data = df_data_1.ix[:,cols]y_data = df_data_1[u'Airport Rating'].values[:]#X_train1 = df_data_1.ix[:,['Airport Wi Fi Use','Boarding Area','Gender','Country','Signage Rating']]print y_data.shapeprint X_data.shapedict_X_train = X_data.to_dict(orient='records')#列表转换为字典
3.导入模型
import numpy as npimport pandas as pdfrom sklearn import treefrom sklearn.feature_extraction import DictVectorizerfrom sklearn import preprocessing
4.测试集、数据集、one-hot
vec = DictVectorizer()X_data = vec.fit_transform(dict_X_train).toarray()X_train = X_data[:1300,:]X_test = X_data[1300:,:]y_train = y_data[:1300]y_test = y_data[1300:]print X_train.shapeprint X_test.shapelb = preprocessing.MultiLabelBinarizer()dict_y_train = lb.fit_transform(y_train)
5.建立CART树
clf = tree.DecisionTreeClassifier(criterion='gini')clf = clf.fit(X_train,y_train)with open("allElectronicInformationGainOri.dot", 'w') as f: f = tree.export_graphviz(clf, feature_names = vec.get_feature_names(), out_file = f)
6.决策树可视化
! pip install pydotplusfrom IPython.display import Image dot_data = StringIO()tree.export_graphviz(clf, out_file=dot_data, feature_names=vec.get_feature_names(), filled=True,rounded=True, impurity=False) graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) Image(graph.create_png())
7.测试
predictedY = clf.score(X_test,y_test)print str(predictedY)
- 机器学习算法应用篇之决策树算法(sklearn)
- 机器学习决策树算法原理以及用sklearn对决策树算法的应用
- 【机器学习算法】之决策树
- 机器学习算法之决策树
- 机器学习算法之决策树
- 机器学习之决策树算法
- 机器学习之决策树算法
- 机器学习算法之决策树算法
- 机器学习算法—决策树应用
- 机器学习算法---决策树
- 机器学习算法-决策树
- 机器学习算法-决策树
- 机器学习--决策树算法
- 机器学习-算法--决策树
- 机器学习-决策树算法
- 机器学习:决策树算法
- 机器学习算法-决策树
- 机器学习算法---决策树
- nyoj303-序号互换(进制转换)
- 学习python 中的scrapy爬虫框架艰辛路,不推荐看,主要纪录自己学习笔记的
- spring boot
- dispatch-servlet.xml与applicationContext.xml
- 经典笔试题:动态内存分配,详解
- 机器学习算法应用篇之决策树算法(sklearn)
- 第8章 自定义数据类型
- Hive的数据模型之分区表
- 内存梳理0. 实模式和保护模式区别及寻址方式
- 利用python进入数据分析之数据聚合与数据分组运算
- 1135. Is It A Red-Black Tree (30)
- 任意输入几个数,计算它们的平均分
- Linux硬件篇(文件系统)
- webpack3从入门到放肆(附demo)