机器学习(2)- 决策树应用

安装包

使用python 模块scikit-learn
覆盖问题领域
分类(classification), 回归(regression), 聚类(clustering), 降维(dimensionality reduction)
模型选择(model selection), 预处理(preprocessing)

实现代码

from sklearn.feature_extraction import DictVectorizer
import csv
from sklearn import tree
from sklearn import preprocessing

  #read
data = open('/home/usr/Desktop/dl/1/01DTree/AllElectronics.csv', 'r')
reader = csv.reader(data)
headers = next(reader)

print(headers)   # 打印数据表头

features = []
labels = []

for row in reader:
    labels.append(row[len(row)-1])
    rowDict = {}
    for i in range(1,len(row)-1):
        rowDict[headers[i]] = row[i]
    features.append(rowDict)
# 字典类型的特征和标签,字典类型是为了后面的转换方便
print(features) 
print(labels)
#使用向量化类将特征向量化,对于决策树来说,其构建为二分树 
# 例如对于变量age可以取三个值,分别为young ,mid,old那么对于age变量将会转变为对于三个变量的判断
# age=young? age=mid? age=old?。下面的向量化就是得到一个可以直接构建二分树的只有0和1的数据集 
vec = DictVectorizer()
dummyX = vec.fit_transform(features).toarray()

print(dummyX)
print(vec.get_feature_names())   # 打印构建的向量的标题

# 标签向量化
lb = preprocessing.LabelBinarizer()
dummyY = lb.fit_transform(labels)
print(dummyY)

# 调用决策树构建函数训练决策树
clf = tree.DecisionTreeClassifier(criterion='entropy')
clf = clf.fit(dummyX, dummyY)
print(str(clf))

# 打印决策树,安装graphiz工具可以将导出的决策树打印出来
with open('decisionTreeResult.dot','w') as f:
    f = tree.export_graphviz(clf,feature_names=vec.get_feature_names(),out_file=f)
# 预测过程
oneRowX = dummyX[0, :]
print(str(oneRowX))
newRow = oneRowX
newRow[0] = 1
newRow[2] = 0
print(newRow)

predictY = clf.predict([newRow])
print(predictY)

打印决策树结果

决策树

猜你喜欢

转载自blog.csdn.net/qq_38876114/article/details/93532587