English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 문서는 python에서 결정 트리 소스 코드를 작성하는 예제를 공유하여 참고하게 했습니다. 구체적인 내용은 다음과 같습니다
因为最近实习的需要,所以用python里的sklearn包重新写了一次决策树。
工具:sklearn,将dot文件转化为pdf格式(是为了将形成的决策树可视化)graphviz-2.38,下载解压之后将其中的bin文件的目录添加进环境变量
源代码如下:
from sklearn.feature_extraction import DictVectorizer import csv from sklearn import tree from sklearn import preprocessing from sklearn.externals.six import StringIO from xml.sax.handler import feature_external_ges from numpy.distutils.fcompiler import dummy_fortran_file # Read in the csv file and put features into list of dict and list of class label allElectronicsData = 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)-1 for 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=>ID3 clf = tree.DecisionTreeClassifier(criterion='entropy') clf = clf.fit(dummX, dummY) print("clf:")+str(clf)) # tree를 시각화 with 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 = oneRowX newRowX[0] = 1 newRowX[2] = 0 predictedY = clf.predict(newRowX) print("predictedY: ")+ str(predictedY))
여기서 AllElectronics.csv는 다음과 같은 형식으로 나타납니다:
오늘 아침 JDK, eclipse 및 pydev를 linux에 설치하는 데 많은 노력을 들였지만, numpy를 설치하려고 할 때마다 오류가 발생했습니다. gcc가 없음을 발견하고 gcc를 설치했지만, 여전히 gcc가 설치되지 않았습니다. 다른 방법을 생각해 보겠습니다.
언급: 본문은 인터넷에서 가져왔으며, 저작권자는 본인입니다. 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 본 사이트는 소유권을 가지지 않으며, 인공적인 편집을 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 침해가 의심되는 내용이 있다면, notice#w로 이메일을 보내 주세요.3codebox.com에 대한 신고를 보내는 경우, #을 @으로 변경하십시오. 관련 증거를 제공하시면, 사실이 확인되면 해당 사이트는 즉시 저작권 침해 내용을 삭제합니다.