机器学习实战之使用 scikit-learn 库实现决策树
2018-04-03 10:27
686 查看
数据如图所示:
1、数值转换:
构造决策树之前,需要将数据转化成数值形式,对了类别 label,yes 和 no 分别为 1, 0;对了样本数据,比如第一行属性 age,它有 youth middle_aged 和 senior 三类,那么我们可以把 youth 写成 [1,0,0],middle_aged 写成 [0,1,0]的向量形式。python 提供了专门转换属性值为数值向量的方法:vec.fit_transform(featureList) .toarray(),也提供了转换 label 为数值的方法:lb.fit_transform(labelList)
2、构造决策树
直接调用现有的包,tree.DecisionTreeClassifier(criterion=’entropy’),criterion=’entropy’ 说明是使用信息增益进行特征选择,也就是使用 ID3 算法,当然可以根据自己需要选择不同的算法。
3、测试
使用训练好的决策树进行预测,直接使用现有的方法即可: clf.predict(newRowX.reshape(1,-1)) ,其中 newRowX 就是新的特征数据。
具体代码如下:
1、数值转换:
构造决策树之前,需要将数据转化成数值形式,对了类别 label,yes 和 no 分别为 1, 0;对了样本数据,比如第一行属性 age,它有 youth middle_aged 和 senior 三类,那么我们可以把 youth 写成 [1,0,0],middle_aged 写成 [0,1,0]的向量形式。python 提供了专门转换属性值为数值向量的方法:vec.fit_transform(featureList) .toarray(),也提供了转换 label 为数值的方法:lb.fit_transform(labelList)
2、构造决策树
直接调用现有的包,tree.DecisionTreeClassifier(criterion=’entropy’),criterion=’entropy’ 说明是使用信息增益进行特征选择,也就是使用 ID3 算法,当然可以根据自己需要选择不同的算法。
3、测试
使用训练好的决策树进行预测,直接使用现有的方法即可: clf.predict(newRowX.reshape(1,-1)) ,其中 newRowX 就是新的特征数据。
具体代码如下:
#!/bin/python #coding=utf-8 #使用 sklearn 实现决策树 #要先将数据转化成决策树所能处理的 from sklearn.feature_extraction import DictVectorizer import csv from sklearn import tree from sklearn import preprocessing from sklearn.externals.six import StringIO # Read in the csv file and put features into list of dict and list of class label allElectronicsData = open(r'/personal/code/python/ML_maizi/decision_tree/AllElectronics.csv', 'rb') reader = csv.reader(allElectronicsData) headers = reader.next() print(headers) featureList = [] labelList = [] for row in reader: labelList.append(row[len(row)-1]) rowDict = {} for i in range(1, len(row)-1): rowDict[headers[i]] = row[i] featureList.append(rowDict) print(featureList) # Vetorize features # python 可以将 feature 转换成数据 vec = DictVectorizer() #实例化 dummyX = vec.fit_transform(featureList) .toarray() # vectorize class labels lb = preprocessing.LabelBinarizer() dummyY = lb.fit_transform(labelList) print("dummyY: " + str(dummyY)) # Using decision tree for classification # clf = tree.DecisionTreeClassifier() # 使用 id3 算法 clf = tree.DecisionTreeClassifier(criterion='entropy') clf = clf.fit(dummyX, dummyY) oneRowX = dummyX[0, :] print("oneRowX: " + str(oneRowX)) # 新数据用于预测-测试集 newRowX = oneRowX newRowX[0] = 1 newRowX[2] = 0 print("newRowX: " + str(newRowX)) #测试 predictedY = clf.predict(newRowX.reshape(1,-1)) #输出预测结果 print("predictedY: " + str(predictedY))
相关文章推荐
- 机器学习实战之使用 scikit-learn 库实现 svm
- 【机器学习】使用Scikit-Learn库实现决策树
- 使用scikit-learn实现决策树的算法模板
- 机器学习实战之使用 scikit-learn 库实现 knn
- 机器学习系统模型调优实战--所有调优技术都附相应的scikit-learn实现
- [译]使用scikit-learn进行机器学习的简介(教程1)
- 使用scikit-learn进行机器学习的简介(教程1)
- Python与机器学习1——scikit-learn使用的简易框架
- 使用Python scikit-learn 库实现神经网络算法
- 使用scikit-learn做基本机器学习
- scikit-learn实现决策树
- 使用scikit-learn实现逻辑回归对牵牛花类别的预测
- 【机器学习实验】scikit-learn的主要模块和基本使用
- python中机器学习包scikit-learn使用笔记与sign prediction简单小结
- 使用scikit-learn进行机器学习(scikit-learn教程1)
- scikit-learn使用OneHotEncoder处理Nominal属性的机器学习流程(Random Forest算法为例)
- 【机器学习实验】scikit-learn的主要模块和基本使用
- [译]使用scikit-learn进行机器学习(scikit-learn教程1)
- python机器学习实战2:实现决策树
- 机器学习基础(三十九)—— scikit-learn 的使用