本文實例為大家分享了python編寫決策樹源代碼,供大家參考,具體內容如下
因為最近實習的需要,所以用python里的sklearn包重新寫了一次決策樹。
工具:sklearn,將dot文件轉化為pdf格式(是為了將形成的決策樹可視化)graphviz-2.38,下載解壓之后將其中的bin文件的目錄添加進環境變量
源代碼如下:
from sklearn.feature_extraction import DictVectorizerimport csvfrom sklearn import treefrom sklearn import preprocessingfrom sklearn.externals.six import StringIOfrom xml.sax.handler import feature_external_gesfrom numpy.distutils.fcompiler import dummy_fortran_file# Read in the csv file and put features into list of dict and list of class labelallElectronicsData = open(r'E:/DeepLearning/resources/AllElectronics.csv', 'rt')reader = csv.reader(allElectronicsData)headers = next(reader)featureList = []lableList = []for row in reader:lableList.append(row[len(row)-1])rowDict = {}#不包括len(row)-1for i in range(1,len(row)-1):rowDict[headers[i]] = row[i]featureList.append(rowDict)print(featureList)vec = DictVectorizer()dummX = vec.fit_transform(featureList).toarray()print(str(dummX))lb = preprocessing.LabelBinarizer()dummY = lb.fit_transform(lableList)print(str(dummY))#entropy=>ID3clf = tree.DecisionTreeClassifier(criterion='entropy')clf = clf.fit(dummX, dummY)print("clf:"+str(clf))#可視化treewith open("resultTree.dot",'w')as f:f = tree.export_graphviz(clf, feature_names=vec.get_feature_names(),out_file = f)#對于新的數據怎樣來查看它的分類oneRowX = dummX[0,:]print("oneRowX: "+str(oneRowX))newRowX = oneRowXnewRowX[0] = 1newRowX[2] = 0predictedY = clf.predict(newRowX)print("predictedY: "+ str(predictedY))這里的AllElectronics.csv,形式如下圖所示:

今天早上好不容易將jdk、eclipse以及pydev裝進linux,但是,但是,但是,想裝numpy的時候,總是報錯,發現是沒有gcc,然后又去裝gcc,真是醉了,到現在gcc還是沒有裝成功,再想想方法
|
新聞熱點
疑難解答