1. 程式人生 > >python資料預處理for knn

python資料預處理for knn

機器學習實戰 一書中第20頁資料預處理,從文字中解析資料的程式。
import numpy as np
def dataPreProcessing(fileName):
with open(fileName) as op:
lines=op.readlines()
# 返回值是list
lineNumer=len(lines)
# list長度即檔案中的行數
dataMatrix=np.zeros((lineNumer,3))
# 初始化lineNumer行,3列的全0矩陣,注意雙層括號
labelVector=[]
# 標記向量初始化,它在目前是一個空的list
index=0
# 索引,為了後面給資料矩陣和標記向量初始化用的
for line in lines:
line=line.strip()
# 去空格
temp=line.split('\t')
# 按換行符分割資料,返回list
dataMatrix[index,:]=temp[0:3]
# 切片操作,dataMatrix[a,b:c]後的方括號中第一個值表示矩陣行號(從0開始)
# 第二、三個引數代表從b開始,c結束,前開後閉,包含b不包含c的元素
# temp中的兩個引數同理
# 將temp中的前3個值賦給dataMatrix
labelVector.append(int(temp[-1]))
# 將temp中的最後一個值賦給labelVector,注意強轉型別,不強轉取到的型別為string
index=index+1
return dataMatrix,labelVector
# arr=np.array([[0,1,2],[3,4,5],[6,7,8]])
# print(arr[2,:])
fileName='./datingTestSet2.txt'
# “/”:表示根目錄,在windows系統下表示某個盤的根目錄,如“E:\”;
# “./”:表示當前目錄;(表示當前目錄時,也可以去掉“./”,直接寫檔名或者下級目錄)
# “../”:表示上級目錄。
a,b=dataPreProcessing(fileName)
print(a,b)

附:今晚很鬱悶,pycharm啟動慢得要死,Numpy又用不了,好不容易才用清華映象把numpy升級到可用狀態,期間pycharm卡死了好幾次,ukylin的虛擬機器更卡,氣得我想把電腦砸了,以後有替代的ide了再也不用pycharm了