標(biāo)題: Python操作csv文件源程序 [打印本頁(yè)]

作者: zkl791229231    時(shí)間: 2020-6-9 11:00
標(biāo)題: 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. #以只讀的方式打開(kāi)指定的擴(kuò)展名為csv的文件,其編碼格式為UTF-8-sig,注意這個(gè)位置的編碼格式不能是utf-8
  9. file = open(r'E:\python\a.csv','r',encoding='utf-8-sig')
  10. #讀取文件的內(nèi)容并將其賦給變量data
  11. data = csv.reader(file)
  12. #讀取變量data中的第一行(表頭)
  13. header = next(data)
  14. #print('header = ' + str(header))
  15. #創(chuàng)建一個(gè)列表attributeList,專(zhuān)門(mén)存放數(shù)據(jù)源的屬性值
  16. attributeList = []
  17. #創(chuàng)建一個(gè)列表resultList,專(zhuān)門(mén)存放對(duì)應(yīng)各行記錄的結(jié)果值
  18. resultList = []

  19. for row in data:
  20.     resultList.append(row[len(row) - 1])   #將每行記錄的結(jié)果值存入resultList中
  21.     rowDictionary = {}                     #定義一個(gè)詞典rowDictionary,用來(lái)存放每行的屬性名稱(chēng)及其對(duì)應(yīng)的屬性值
  22.     for i in range(1,len(row) - 1):
  23.         rowDictionary[header[i]] = row[i]  #向詞典rowDictionary添加屬性名稱(chēng)及其對(duì)應(yīng)的屬性值
  24.     attributeList.append(rowDictionary)    #將每次內(nèi)層循環(huán)產(chǎn)生的詞典添加到列表attributeList中


  25. # print(resultList)

  26. vec = DictVectorizer()                     #創(chuàng)建一個(gè)DictVectorizer的實(shí)例,DictVectorizer是字典特征提取器,用來(lái)將數(shù)據(jù)的數(shù)據(jù)類(lèi)型轉(zhuǎn)化為整型
  27. attributeArray = vec.fit_transform(attributeList).toarray()   #利用vec實(shí)例將列表attributeList轉(zhuǎn)化成“01”矩陣,函數(shù)fit_transform是先擬合數(shù)據(jù),再標(biāo)準(zhǔn)化,函數(shù)toarray是將轉(zhuǎn)化后的數(shù)據(jù)轉(zhuǎn)變?yōu)閿?shù)組
  28. title = vec.get_feature_names()            #獲取vec中所有特征向量的名稱(chēng)和及其能取到的值

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

  31. lb = preprocessing.LabelBinarizer()        #初始化變量lb,preprocessing.LabelBinarizer()的作用是可將分類(lèi)數(shù)據(jù)轉(zhuǎn)化為“01”數(shù)據(jù),例如可以把yes和no轉(zhuǎn)化為0和1,或是把incident和normal轉(zhuǎn)化為0和1
  32. resultArray = lb.fit_transform(resultList) #將結(jié)果值列表resultList轉(zhuǎn)化為“01”矩陣

  33. #print(resultArray)

  34. transformArray = tree.DecisionTreeClassifier(criterion='entropy') #利用分類(lèi)決策樹(shù)tree(已引入)模塊創(chuàng)建決策樹(shù)分類(lèi)器DecisionTreeClassifier,其實(shí)現(xiàn)算法是ID3算法(criterion=entropy)
  35. transformArray = transformArray.fit(attributeArray, resultArray)  #根據(jù)attributeArray和resultArray生成決策樹(shù)

  36. #利用pip安裝graphviz包和pydotplus包
  37. dotData = tree.export_graphviz(transformArray,feature_names=title,out_file=None)#根據(jù)transformArray和title生成判定樹(shù)的節(jié)點(diǎn),同時(shí)讓輸出文件為None(out_file=None)

  38. graph = pydotplus.graph_from_dot_data(dotData)                                  #根據(jù)上條語(yǔ)句生成的決策樹(shù)結(jié)點(diǎn)dotData生成判定樹(shù)的圖形結(jié)構(gòu)

  39. graph.write_pdf('E:/python/a.pdf') #將樹(shù)形結(jié)構(gòu)寫(xiě)入到指定的文件中
復(fù)制代碼


51hei.png (3.49 KB, 下載次數(shù): 148)

51hei.png

171004119郭文磊.rar

27.59 KB, 下載次數(shù): 23, 下載積分: 黑幣 -5






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1