Python implementiert den Entscheidungsbaumalgorithmus

零到壹度
Freigeben: 2018-04-19 16:50:33
Original
3292 Leute haben es durchsucht

Das Beispiel in diesem Artikel beschreibt die Implementierung des Entscheidungsbaumalgorithmus in Python. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

from sklearn.feature_extraction import DictVectorizer
import csv
from sklearn import tree
from sklearn import preprocessing
from sklearn.externals.six import StringIO

# 读取csv数据,并将数据和特征值存入字典和类标签列表
allElectronicsData = open(r'AllElectronics.csv', 'rt')
reader = csv.reader(allElectronicsData)
headers = next(reader)
# 原代码中用的是:
# headers = reader.next()
# 这句代码应该是之前的版本用的,现在已经更新了没有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)


# 将特征值矢量化,代表将各种参数进行矢量化
vec = DictVectorizer()
dummyX = vec.fit_transform(featureList).toarray()

# print("dummyX: " + str(dummyX))
# print(vec.get_feature_names())

# print("labelList: " + str(labelList))

# 将类标签列表矢量化,就是最后的结果
lb = preprocessing.LabelBinarizer()
dummyY = lb.fit_transform(labelList)
# print("dummyY: " + str(dummyY))

# 使用决策树进行分类
clf = tree.DecisionTreeClassifier()
# clf = tree.DecisionTreeClassifier(criterion = 'entropy')
clf = clf.fit(dummyX, dummyY)
# print("clf: " + str(clf))

# 将模型进行可视化
with open("allElectrionicInformationOri.dot", 'w') as f:
    f = tree.export_graphviz(clf, feature_names = vec.get_feature_names(), out_file = f)

oneRowX = dummyX[0, :]
# print("oneRowX: " + str(oneRowX))

# 接下来改变一些数据进行预测
newRowX = oneRowX

newRowX[0] = 0
newRowX[1] = 1
print("newRowX: " + str(newRowX))

predictedY = clf.predict(newRowX.reshape(1, -1))  # 预测的结果需要加上后面的reshape(1, -1),不然会
# 报错:
# ValueError: Expected 2D array, got 1D array instead:
# array=[0. 1. 1. 0. 1. 1. 0. 0. 1. 0.].
# Reshape your data either using array.reshape(-1, 1)
# if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
print("预测的结果为: " + str(predictedY))
Nach dem Login kopieren


Kategorie der Kaufkraft des Personals, um die Projekte im Endprozess zu klassifizieren können Sie auch bestimmte Vorhersagen über die Ergebnisse treffen. Siehe den Code oben, es gibt einige Vor- und Nachteile

Vorteile des Entscheidungsbaumalgorithmus:

 1) Einfach und intuitiv, der generierte Entscheidungsbaum ist sehr intuitiv.

2) Es besteht im Grunde keine Notwendigkeit für eine Vorverarbeitung, keine Notwendigkeit, im Voraus zu normalisieren und mit fehlenden Werten umzugehen.

 3) Die Kosten für die Verwendung der Entscheidungsbaumvorhersage betragen >g2m)O(log2m). m ist die Anzahl der Proben.  4) Kann sowohl diskrete Werte als auch kontinuierliche Werte verarbeiten. Viele Algorithmen konzentrieren sich nur auf diskrete Werte oder kontinuierliche Werte. 5) Kann Klassifizierungsprobleme mehrdimensionaler Ausgabe bewältigen.  6) Im Vergleich zu Black-Box-Klassifizierungsmodellen wie neuronalen Netzen können Entscheidungsbäume gut logisch erklärt werden  7) Kreuzvalidierungsbereinigung kann zur Auswahl von Modellen verwendet werden, wodurch die Generalisierungsfähigkeit verbessert wird . 8) Es verfügt über eine gute Fehlertoleranz für abnormale Punkte und eine hohe Robustheit.

Schauen wir uns die Mängel des Entscheidungsbaumalgorithmus an:

1) Der Entscheidungsbaumalgorithmus lässt sich sehr leicht überanpassen, was zu einer schwachen Generalisierungsfähigkeit führt. Dies kann verbessert werden, indem die Mindestanzahl von Stichproben für Knoten festgelegt und die Tiefe des Entscheidungsbaums begrenzt wird.

2) Eine geringfügige Veränderung der Probe führt zu drastischen Veränderungen in der Baumstruktur. Dies kann durch Methoden wie Ensemble-Lernen gelöst werden.

3) Das Finden des optimalen Entscheidungsbaums ist ein NP-schweres Problem. Wir verwenden normalerweise heuristische Methoden und können leicht in lokale Optima fallen. Dies kann durch Methoden wie Ensemble-Lernen verbessert werden.

4) Entscheidungsbäume sind für einige komplexe Beziehungen, wie z. B. XOR, schwer zu erlernen. Daran führt im Allgemeinen kein Weg vorbei. Diese Beziehung kann mithilfe der Klassifizierungsmethode des neuronalen Netzwerks gelöst werden.

5) Wenn der Stichprobenanteil bestimmter Merkmale zu groß ist, ist der generierte Entscheidungsbaum tendenziell auf diese Merkmale ausgerichtet. Dies kann durch Anpassen der Probengewichte verbessert werden.


Verwandte Empfehlungen:

Detaillierte Erläuterung des Entscheidungsbaums der zehn besten Data-Mining-Algorithmen

Entscheidungsbaum-Algorithmus

Prinzipien und Fälle des Entscheidungsbaum-Algorithmus

Implementierung des Entscheidungsbaumalgorithmus

Das obige ist der detaillierte Inhalt vonPython implementiert den Entscheidungsbaumalgorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!