機器學習實戰 第二章KNN中的一些問題

2021-07-09 13:03:53 字數 1609 閱讀 1746

第一:書中file2matrix函式可能無法通過編譯。函式如下:

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()

listfromline=line.split('\t')

returnmat[index,:]=listfromline[0:3]

index+=1

return returnmat,classlabelvector

第二.在使用matplotlib模組進行畫圖顏色區分時,也可能無法編譯成功

fig=plt.figure()

ax=fig.add_subplot(111)

ax.scatter(datingdatamat[:,1],datingdatamat[:,2],15.0*array(labelslist),15.0*array(labelslist))

plt.show()

這個問題和第乙個問題源於同乙個原因,即作者資料集的問題:

40920	8.326976	0.953952	largedoses

14488 7.153469 1.673904 smalldoses

26052 1.441871 0.805124 didntlike

label是字串,無法使用int("abc"),array也是如此

解決問題:1.把資料集換成datingtestset2.txt

2.自己寫個函式,把標籤數位化

def classlabels(dataset):

newlabels=

for item in dataset:

if item=='largedoses':

elif item=='smalldoses':

elif item=='didntlike':

return newlabels

第三.畫圖補充

座標注釋: plt.xlabel()

plt.ylabel()

注意編碼問題:#coding=utf-8

第四. 手寫識別系統

不知道什麼原因,讀取資料那裡一直編譯不成功

trainingmat[i,:] = img2vector('trainingdigits/%s' % filenamestr)
想起python中盡量盡量不巢狀原則,後分成兩句,就通過了

fname='trainingdigits/%s' %filenamestr

trainingmat[i,:]=img2vector(fname)

《機器學習實戰》 第二章KNN

knn演算法是基本的機器學習方法,其原理很簡單 如果乙個例項在特徵空間中的k個最相似 即特徵空間中最近鄰 的例項中的大多數屬於某乙個類別,則該例項也屬於這個類別。其實際上是選擇k個最可能的樣本進行投票,這和k means尋找k個幾何中心點進行聚類是不同的.如下圖所示 有兩種型別的樣本資料,一類是藍色...

機器學習實戰第二章 KNN

tile的使用方法 tile a,n 的功能是把a陣列重複n次 可以在列方向,也可以在行方向 argsort 函式 argsort 函式返回的是陣列中值從大到小的索引值 dict.get 函式 語法 dict.get key,default none key 字典中要查詢的鍵 default 如果指...

《機器學習實戰》(第二章)中函式詳細解析

本文是針對 機器學習實戰 內函式的解析。並以頁數呈現。p19 numpy.tile a,rep 函式 當rep為數字時,生成乙個一維重複rep次的list。當rep為元組 m,n 時,生成乙個m行並且每行重複n次的矩陣。import numpy as np a1 1,2,3 a2 2,3,4 b1 ...