基于python的sklearn库的决策树算法基本实现

来源:互联网 发布:什么软件可以刷步数 编辑:程序博客网 时间:2024/05/16 03:14

不能再咸鱼了

不能再被嘲笑了

所以周末做各种总结

下周新计划开始!!!


立完flag正文开始

基于python的sklearn库的决策树算法基本实现

关于不同年龄等几个特征的人进行是否购买电脑的预测
导入的训练文件见Github

先贴代码 ~_~

# -*- coding:utf-8 -*-"""fit()可以说是调用的通用方法fit(X),表示用数据X来训练某种模型。 函数返回值一般为调用fit方法的对象本身fit(X,y=None)为无监督学习算法,fit(X,Y)为监督学习算法"""import csvfrom sklearn.feature_extraction import DictVectorizer  # 字典元素的listfrom sklearn import preprocessingfrom sklearn import treeFile = open(r"E:\pyTree.csv", "rb")  # 文件读写 见下linkreader = csv.reader(File)  # 读取csv文件 返回<type '_csv.reader'>head = reader.next()  # next 类似与指针后移一行 所以这一般是用来读标题行(head)resultList = []  # 预测的结果列表featureList = []  # 特征值 = 标题:数值 (字典的集合)for line in reader:    resultList.append(line[-1])  # 一行中的具体位置具体修改    dic = {}  # 临时字典    for row in range(1, len(line) - 1):        dic[head[row]] = line[row]  # 取得各个特征    featureList.append(dic)vec = DictVectorizer()binx = vec.fit_transform(featureList).toarray()# fit_transform函数 先调用fit(获取特征信息和目标值信息)  后调用transform(对特征进行转换) 来训练模型lb = preprocessing.LabelBinarizer()  # 二进制化biny = lb.fit_transform(resultList)  # 预测的结果列表 二值化clf = tree.DecisionTreeClassifier(criterion='entropy')  # 不带参数 默认giniclf = clf.fit(binx, biny)  # data, labelwith open("out.dot", "w") as f:  # 打印决策树文件 不做分析    f = tree.export_graphviz(clf, feature_names=vec.get_feature_names(), out_file=f)# 简单测试testLine = binx[0, :]testLine[0] = 1testLine[2] = 0ans = clf.predict([testLine, binx[0, :]])  # 预测格式应该与读入特征值数据的格式相同 本例是二维listprint ans  # 10代表是否购买电脑

文件读写点我

详见代码注释
感觉自己也是有了不一样的认识
加油!!!

原创粉丝点击