决策树算法应用
数据集
训练集
RID,age,income,student,credit_rating,class_buys_computer
1,youth,high,
no,fair,
no
2,youth,high,
no,excellent,
no
3,middle_aged,high,
no,fair,
yes
4,senior,medium,
no,fair,
yes
5,senior,low,
yes,fair,
yes
6,senior,low,
yes,excellent,
no
7,middle_aged,low,
yes,excellent,
yes
8,youth,medium,
no,fair,
no
9,youth,low,
yes,fair,
yes
10,senior,medium,
yes,fair,
yes
11,youth,medium,
yes,excellent,
yes
12,middle_aged,medium,
no,excellent,
yes
13,middle_aged,high,
yes,fair,
yes
14,senior,medium,
no,excellent,
no
测试集
RID,age,income,student,credit_rating,class_buys_computer
1,youth,high,
no,fair,
no
2,youth,high,
no,excellent,
no
3,middle_aged,high,
no,fair,
yes
4,senior,medium,
no,fair,
yes
5,senior,low,
yes,fair,
yes
6,senior,low,
yes,excellent,
no
7,middle_aged,low,
yes,excellent,
yes
8,youth,medium,
no,fair,
no
9,youth,low,
yes,fair,
yes
10,senior,medium,
yes,fair,
yes
11,youth,medium,
yes,excellent,
yes
12,middle_aged,medium,
no,excellent,
yes
13,youth,medium,
no,excellent,
yes
代码
from sklearn.feature_extraction
import DictVectorizer
import csv
import os
from sklearn
import preprocessing
from sklearn
import tree
from sklearn.externals.six
import StringIO
allElectronicsData = open(
r'./AllElectronics.csv',
'rb')
reader = csv.reader(allElectronicsData)
headers = reader.next()
print(
"headers : " ,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)
vec = DictVectorizer()
dummyX = vec.fit_transform(featureList).toarray()
print(
"dummyX : " + str(dummyX))
print (
"feature mapping : " + str(vec.get_feature_names()))
lb = preprocessing.LabelBinarizer()
dummyY = lb.fit_transform(labelList)
clf = tree.DecisionTreeClassifier(criterion=
'entropy')
clf = clf.fit(dummyX,dummyY)
print (
"clf: " + str(clf))
with open(
'DTreeData.dot',
'w')
as f:
f = tree.export_graphviz(clf,feature_names= vec.get_feature_names(),out_file=f)
os.system(
"dot -Tpdf D:\Data\MyCode\codepython\ML_Base_Demo\DecisionTree\DTreeData.dot -o D:\Data\MyCode\codepython\ML_Base_Demo\DecisionTree\DTree.pdf")
testSet = open(
r'test_set.csv',
'rb')
reader = csv.reader(testSet)
reader.next()
testList = []
for row
in reader:
labelList.append(row[len(row)-
1])
rowDict = {}
for i
in range(
1,len(row)-
1):
rowDict[headers[i]] = row[i]
testList.append(rowDict)
vec = DictVectorizer()
testX = vec.fit_transform(testList).toarray()
print(
"testX : " + str(testX))
predictSet = clf.predict(testX)
print predictSet
运行结果
(
'headers : ', [
'RID',
'age',
'income',
'student',
'credit_rating',
'class_buys_computer'])
dummyX :
[[ 0. 0. 1. 0. 1. 1. 0. 0. 1. 0.]
[ 0. 0. 1. 1. 0. 1. 0. 0. 1. 0.]
[ 1. 0. 0. 0. 1. 1. 0. 0. 1. 0.]
[ 0. 1. 0. 0. 1. 0. 0. 1. 1. 0.]
[ 0. 1. 0. 0. 1. 0. 1. 0. 0. 1.]
[ 0. 1. 0. 1. 0. 0. 1. 0. 0. 1.]
[ 1. 0. 0. 1. 0. 0. 1. 0. 0. 1.]
[ 0. 0. 1. 0. 1. 0. 0. 1. 1. 0.]
[ 0. 0. 1. 0. 1. 0. 1. 0. 0. 1.]
[ 0. 1. 0. 0. 1. 0. 0. 1. 0. 1.]
[ 0. 0. 1. 1. 0. 0. 0. 1. 0. 1.]
[ 1. 0. 0. 1. 0. 0. 0. 1. 1. 0.]
[ 1. 0. 0. 0. 1. 1. 0. 0. 0. 1.]
[ 0. 1. 0. 1. 0. 0. 0. 1. 1. 0.]]
feature mapping : [
'age=middle_aged',
'age=senior',
'age=youth',
'credit_rating=excellent',
'credit_rating=fair',
'income=high',
'income=low',
'income=medium',
'student=no',
'student=yes']
clf: DecisionTreeClassifier(class_weight=None, criterion=
'entropy', max_depth=None,
max_features=None, max_leaf_nodes=None,
min_impurity_split=
1e-07, min_samples_leaf=
1,
min_samples_split=
2, min_weight_fraction_leaf=
0.0,
presort=False, random_state=None, splitter=
'best')
Error: Could
not open
"D:\Data\MyCode\codepython\ML_Base_Demo\DecisionTree\DTree.pdf" for writing : Permission denied
testX :
[[ 0. 0. 1. 0. 1. 1. 0. 0. 1. 0.]
[ 0. 0. 1. 1. 0. 1. 0. 0. 1. 0.]
[ 1. 0. 0. 0. 1. 1. 0. 0. 1. 0.]
[ 0. 1. 0. 0. 1. 0. 0. 1. 1. 0.]
[ 0. 1. 0. 0. 1. 0. 1. 0. 0. 1.]
[ 0. 1. 0. 1. 0. 0. 1. 0. 0. 1.]
[ 1. 0. 0. 1. 0. 0. 1. 0. 0. 1.]
[ 0. 0. 1. 0. 1. 0. 0. 1. 1. 0.]
[ 0. 0. 1. 0. 1. 0. 1. 0. 0. 1.]
[ 0. 1. 0. 0. 1. 0. 0. 1. 0. 1.]
[ 0. 0. 1. 1. 0. 0. 0. 1. 0. 1.]
[ 1. 0. 0. 1. 0. 0. 0. 1. 1. 0.]
[ 0. 0. 1. 1. 0. 0. 0. 1. 1. 0.]]
[
0 0 1 1 1 0 1 0 1 1 1 1 0]
转载请注明原文地址: https://ju.6miu.com/read-971077.html