机器学习sklearn之决策树的实现

机器学习sklearn之决策树的实现

实现决策树的应用分为三步:
准备数据:即将数据读取为数据(x),标签格式(y)
拟合数据:导出sklearn模型,调用模型,生成dot文件
可视化数据:对模型利用Graphviz(数据可视化软件)进行可视化

导入一些sklearn的库以及csv

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

准备数据集
在这里插入图片描述

# Read in the csv file and put features into list of dict and list of class label
allElectronicsData = open(r'C:\Users\Administrator.SKY-20180518VHY\Desktop\代码与素材\代码与素材(1)\01DTree\sales_data.csv', 'r+')#读取csv数据
reader = csv.reader(allElectronicsData)#按行读取内容
headers = next(reader)#打印出为title那行

print(headers)

featureList = []#装feature
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)

# Vetorize features可以将字典中转化为0,1
vec = DictVectorizer()
dummyX = vec.fit_transform(featureList) .toarray()

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

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

# vectorize class labels
lb = preprocessing.LabelBinarizer()
dummyY = lb.fit_transform(labelList)
print("dummyY: " + str(dummyY))

拟合数据集

# Using decision tree for classification
# clf = tree.DecisionTreeClassifier()
clf = tree.DecisionTreeClassifier(criterion='entropy')#clf分类器,id3为信息差,,默认不是id3
clf = clf.fit(dummyX, dummyY)#建模,我们的特征值和列
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, :]
print("oneRowX: " + str(oneRowX))

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

predictedY = clf.predict(newRowX)
print("predictedY: " + str(predictedY))

猜你喜欢

转载自blog.csdn.net/weixin_40123108/article/details/84502781