1. 數(shù)據(jù)分類:離散型標簽 2. 數(shù)據(jù)回歸:連續(xù)型標簽 近鄰算法的準則是:尋找接近新數(shù)據(jù)點的訓練樣本的數(shù)目,根據(jù)訓練樣本的信息來預測新數(shù)據(jù)點的某些信息。
專注于為中小企業(yè)提供成都網站設計、成都網站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)柏鄉(xiāng)免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現(xiàn)規(guī)模擴充和轉變。
蛋疼的公司網絡,看不到圖片。 首先確認下是否import成功了 比如你 import kNN那你調用的時候要寫 kNN.classify0不然就寫 from kNN import *然后就可以直接調用了 (默認你放在同個目錄下)
參考了其他博主的代碼 想試著運行 然后去理解。結果一直報錯,希望大神幫幫忙。
import numpy as np
import os
import kNN
def img2vector(filename):
"""函數(shù)將以文本格式出現(xiàn)的32*32的0-1圖片,轉變成一維特征數(shù)組,返回一維數(shù)組
Keyword argument:
filename -- 文本格式的圖片文件
"""
imgvect = np.zeros((1, 1024))
fr = open(filename)
for i in range(32):
linestr = fr.readline()
for j in range(32):
imgvect[0, 32*i + j] = int(linestr[j])
return imgvect
def handwriteClassfiy(testfile, trainfile, k):
"""函數(shù)將trainfile中的文本圖片轉換成樣本特征集和樣本類型集,用testfile中的測試樣本測試,無返回值
Keyword argument:
testfile -- 測試圖片目錄
trainfile -- 樣本圖片目錄
"""
trainFileList = os.listdir(trainfile)
trainFileSize = len(trainFileList)
labels = []
trainDataSet = np.zeros((trainFileSize, 1024))
for i in range(trainFileSize):
filenameStr = trainFileList[i]
digitnameStr = filenameStr.split('.')[0]
digitLabels = digitnameStr.split('_')[0]
labels.append(digitLabels)
trainDataSet[i, :] = img2vector(trainfile + '/' + filenameStr)
testFileList = os.listdir(testfile)
testNumber = len(testFileList)
errorcount = 0.0
for testname in testFileList:
testdigit = img2vector(testfile + '/' + testname)
classifyresult = kNN.classfiy(testdigit, trainDataSet, labels, k)
testStr = testname.split('.')[0]
testDigitLabel = testStr.split('_')[0]
if classifyresult != testDigitLabel:
errorcount += 1.0
#print('this test real digit is:%s, and the result is: %s' % (testDigitLabel, classifyresult))
print('k = %d, errorRatio is: %f' % (k, errorcount/float(testNumber)))
return
if __name__ == '__main__':
filename = 'C:/Users/lx/Desktop/MachineLearning-master/kNN/use Python and NumPy/testDigits/0_1.txt'
traindir= 'C:/Users/lx/Desktop/MachineLearning-master/kNN/use Python and NumPy/trainingDigits'
testdir = 'C:/Users/lx/Desktop/MachineLearning-master/kNN/use Python and NumPy/testDigits'
handwriteClassfiy(testdir, traindir, 3)
錯誤提示Traceback (most recent call last):
File "kNN.py", line 56, in module
handwriteClassfiy(testdir, traindir, 3)
File "kNN.py", line 43, in handwriteClassfiy
classifyresult = kNN.classfiy(testdigit, trainDataSet, labels, k)
AttributeError: module 'kNN' has no attribute 'classfiy'
你這個文件是不是就叫 kNN.py ?如果是的話那你這個里面根本就沒有 classfiy 這個屬性,當然會報錯。
另外,import kNN 是 import 自己?
應該是哪里格式不對,它提示的不一定是錯誤所在地方。
注釋函數(shù)knn,運行函數(shù)distance查錯
沒有問題就接著運行下面的,逐一調試
給樣本數(shù)據(jù)集T={2,4,10,12,3,20,22,21,11,24} t={18},K=4 1. N={2,4,10,12},d1=16,d2=14,d3=8,d4=6 2.d={3},比較,N={4,10,12,3},d1=14,d2=8,d3=6,d4=15 3.d={20},比較,N={4,10,12,20},d1=14,d2=8,d3=6,d4=2 4.d={22},比較,N={10,12,20,22},