博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
决策树算法学习
阅读量:6657 次
发布时间:2019-06-25

本文共 3039 字,大约阅读时间需要 10 分钟。

熵:H(D)=-Plog2(P)

info(A)=Info(D)-Info_A(D)

打开CSV文件:

分析:属性 :age income student credit_rating 类:buys_computer

共14人

 

 

from sklearn.feature_extraction import DictVectorizer

import csv
from sklearn import tree
from sklearn import preprocessing  #数据的预处理
from sklearn.externals.six import StringIO
# 打开CSV文件
allElectionicsData=open(r'G:\MachineLearning/AllElectronics.csv','rt')
reader=csv.reader(allElectionicsData)
headers=next(reader)
print("结果是:")
print(headers)

#分阶段展示结果:

 

 

featureList=[]  #featureList是属性列表
labelList=[]  # 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)

结果:[{'age': 'youth', 'income': 'high', 'student': 'no', 'credit_rating': 'fair'},

{'age': 'youth', 'income': 'high', 'student': 'no', 'credit_rating': 'excellent'},

{'age': 'middle_aged', 'income': 'high', 'student': 'no', 'credit_rating': 'fair'},

{'age': 'senior', 'income': 'medium', 'student': 'no', 'credit_rating': 'fair'},

{'age': 'senior', 'income': 'low', 'student': 'yes', 'credit_rating': 'fair'},

{'age': 'senior', 'income': 'low', 'student': 'yes', 'credit_rating': 'excellent'},

{'age': 'middle_aged', 'income': 'low', 'student': 'yes', 'credit_rating': 'excellent'},

{'age': 'youth', 'income': 'medium', 'student': 'no', 'credit_rating': 'fair'},

{'age': 'youth', 'income': 'low', 'student': 'yes', 'credit_rating': 'fair'},

{'age': 'senior', 'income': 'medium', 'student': 'yes', 'credit_rating': 'fair'},

{'age': 'youth', 'income': 'medium', 'student': 'yes', 'credit_rating': 'excellent'},

{'age': 'middle_aged', 'income': 'medium', 'student': 'no', 'credit_rating': 'excellent'},

{'age': 'middle_aged', 'income': 'high', 'student': 'yes', 'credit_rating': 'fair'},

{'age': 'senior', 'income': 'medium', 'student': 'no', 'credit_rating': 'excellent'}]

 将14个数据初步转换成14行列表的形式:便于下一步利用vec.fit_transform(feature).toarray

#Vetorize features vec=DictVectorizer() dummyX=vec.fit_transform(featureList).toarray()  #转换0,1,scikit库可以识别 print("dummyX:"+str(dummyX))

 

print(vec.get_feature_names()) ['age=middle_aged', 'age=senior', 'age=youth', 'credit_rating=excellent', 'credit_rating=fair', 'income=high', 'income=low', 'income=medium', 'student=no', 'student=yes'] # labelList存放类
print("labelList:"+str(labelList)) lb=preprocessing.LabelBinarizer() dummY=lb.fit_transform(labelList) print("dummyY:"+str(dummY) #选择器 clf=tree.DecisionTreeClassifier() clf=tree.DecisionTreeClassifier(criterion='entropy') #熵 entropy clf=clf.fit(dummyX,dummY) print("clf:"+str(clf))

 

 

 

 

 # Visualize model

with open("allElectronicInformationGainOri.dot", 'w') as f:
f = tree.export_graphviz(clf, feature_names=vec.get_feature_names(), out_file=f)
oneRowX = dummyX[0, :].reshape(1,-1)
print("oneRowX: " + str(oneRowX))
newRowX = oneRowX
newRowX[0][0] = 1
newRowX[0][2] = 0
print("newRowX: " + str(newRowX))
predictedY = clf.predict(newRowX)
print("predictedY: " + str(predictedY))

 

  

 

  

 注意维度的变换

 

转载于:https://www.cnblogs.com/who-am-i/p/10474204.html

你可能感兴趣的文章
iOS Development Sites
查看>>
2018-2019-1 20165320 《信息安全系统设计基础》第四周学习总结
查看>>
Church 整数前驱的推导
查看>>
git push之后回滚(撤销)代码
查看>>
暑假练习赛 006 E Vanya and Label(数学)
查看>>
Toxophily
查看>>
C# 中的委托和事件(转)
查看>>
专业实训题目需求分析
查看>>
MyEclipse定位class文件
查看>>
Wireshark的过滤规则
查看>>
bzoj1592[Usaco2008 Feb]Making the Grade 路面修整*
查看>>
ios中PagedFlowView的用法
查看>>
pcl_view简单使用
查看>>
[数据安全] 一个简洁快速的去数据特征的混淆算法(obfuscate)
查看>>
Android开源框架:初识ButterKnife
查看>>
[待补充]面向接口编程,数据驱动编程
查看>>
bzoj1502: [NOI2005]月下柠檬树
查看>>
拓扑排序
查看>>
100道java基础面试题
查看>>
docker基本使用
查看>>