改進約會網站的配對效果算法
某約會網站收集了一些數據放在datingTestSet.txt中,每一個樣本數據佔據一行,總共有1000行。樣本主要包含如下3種特徵:
□ 每一年得到的飛行常客里程數
□ 玩視頻遊戲所耗時間百分比
□ 每週消費的冰淇淋公升數
在將上述特徵數據輸人到分類器以前,必須將待處理數據的格式改變爲分類器能夠接受的格式 。在kNN.py中建立名爲file2matrix的函數,以此來處理輸人格式問題。該函數的輸人爲文件名字符串輸出爲訓練樣本矩陣和類標籤向量。數組
在kNN.py 中添加下面的函數:app
def file2matrix(filename): # 打開文件 fr = open(filename) # 逐行讀取 arrayOLines = fr.readlines() # 獲取總函數 numberOfLines = len(arrayOLines) # 初始化矩陣 returnMat = zeros((numberOfLines,3)) # 初始化標籤數組 classLabelVector = [] index = 0 for line in arrayOLines: # 頭尾部格式化 line = line.strip() # 根據tab切分 listFromLine = line.split('\t') # 矩陣單行賦予元素 returnMat[index, :] = listFromLine[0:3] # 標籤數據賦值 classLabelVector.append(int(listFromLine[-1])) index += 1 return returnMat,classLabelVector
進入終端:
函數
使用Matplotlib建立數據集的散點圖, 進入終端:
網站
獲得繪圖:
如上圖散點圖使用矩陣的第2、第三列數據,分別表示特徵值「玩視頻遊戲所耗時間百分比」(x軸)和 「每週所消費的冰淇淋公升數」(y軸)spa
因爲沒有使用上各組數據等標籤, 因此咱們很難從上圖看出有用的信息,Matplotlib庫提供了scatter函數支持個性化標記散點圖上的點, 因此咱們從新進入終端:
code
得到新的繪圖:
視頻
未完待續·····blog