找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2389|回复: 0
打印 上一主题 下一主题
收起左侧

Python操作csv文件源程序

[复制链接]
跳转到指定楼层
楼主
  1. # -*- coding:UTF-8 -*-


  2. from sklearn.feature_extraction import DictVectorizer
  3. from sklearn import preprocessing
  4. from sklearn import tree
  5. import csv
  6. import pydotplus

  7. # -*- coding:utf-8 -*-
  8. #以只读的方式打开指定的扩展名为csv的文件,其编码格式为UTF-8-sig,注意这个位置的编码格式不能是utf-8
  9. file = open(r'E:\python\a.csv','r',encoding='utf-8-sig')
  10. #读取文件的内容并将其赋给变量data
  11. data = csv.reader(file)
  12. #读取变量data中的第一行(表头)
  13. header = next(data)
  14. #print('header = ' + str(header))
  15. #创建一个列表attributeList,专门存放数据源的属性值
  16. attributeList = []
  17. #创建一个列表resultList,专门存放对应各行记录的结果值
  18. resultList = []

  19. for row in data:
  20.     resultList.append(row[len(row) - 1])   #将每行记录的结果值存入resultList中
  21.     rowDictionary = {}                     #定义一个词典rowDictionary,用来存放每行的属性名称及其对应的属性值
  22.     for i in range(1,len(row) - 1):
  23.         rowDictionary[header[i]] = row[i]  #向词典rowDictionary添加属性名称及其对应的属性值
  24.     attributeList.append(rowDictionary)    #将每次内层循环产生的词典添加到列表attributeList中


  25. # print(resultList)

  26. vec = DictVectorizer()                     #创建一个DictVectorizer的实例,DictVectorizer是字典特征提取器,用来将数据的数据类型转化为整型
  27. attributeArray = vec.fit_transform(attributeList).toarray()   #利用vec实例将列表attributeList转化成“01”矩阵,函数fit_transform是先拟合数据,再标准化,函数toarray是将转化后的数据转变为数组
  28. title = vec.get_feature_names()            #获取vec中所有特征向量的名称和及其能取到的值

  29. #print(title)
  30. #print(array)

  31. lb = preprocessing.LabelBinarizer()        #初始化变量lb,preprocessing.LabelBinarizer()的作用是可将分类数据转化为“01”数据,例如可以把yes和no转化为0和1,或是把incident和normal转化为0和1
  32. resultArray = lb.fit_transform(resultList) #将结果值列表resultList转化为“01”矩阵

  33. #print(resultArray)

  34. transformArray = tree.DecisionTreeClassifier(criterion='entropy') #利用分类决策树tree(已引入)模块创建决策树分类器DecisionTreeClassifier,其实现算法是ID3算法(criterion=entropy)
  35. transformArray = transformArray.fit(attributeArray, resultArray)  #根据attributeArray和resultArray生成决策树

  36. #利用pip安装graphviz包和pydotplus包
  37. dotData = tree.export_graphviz(transformArray,feature_names=title,out_file=None)#根据transformArray和title生成判定树的节点,同时让输出文件为None(out_file=None)

  38. graph = pydotplus.graph_from_dot_data(dotData)                                  #根据上条语句生成的决策树结点dotData生成判定树的图形结构

  39. graph.write_pdf('E:/python/a.pdf') #将树形结构写入到指定的文件中
复制代码


51hei.png (3.49 KB, 下载次数: 104)

51hei.png

171004119郭文磊.rar

27.59 KB, 下载次数: 22, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表