k

您所在的位置:网站首页 knn数据归一化 k

k

2023-06-01 03:43| 来源: 网络整理| 查看: 265

1 #准备数据:归一化数值 2 def autoNorm(dataSet): #autoNorm()函数可以自动将数字特征值转换为0到1的区间 3 minVals = dataSet.min(0) 4 maxVals = dataSet.max(0) #ddataSet.max(0)中的参数0使得函数可以从列中选取最小值 5 ranges = maxVals - minVals 6 normDataSet = zeros(shape(dataSet)) 7 m = dataSet.shape[0] 8 #newValue = (oldValue-min)/(max-min),该公式可以将任意取值范围的特征值转换为0到1区间内的值 9 #tile()函数将变量内容复制成输入矩阵同样大小的矩阵(具体特征值相除) 10 #在numpy库中,矩阵除法需要使用函数linalg.solve(matA,matB) 11 normDataSet = dataSet - tile(minVals, (m,1)) 12 normDataSet = normDataSet/tile(ranges, (m,1)) 13 return normDataSet, ranges, minVals

运行结果:

1 >>>normMat, ranges, minVals = kNN.autoNorm(datingDataMat) 2 >>>normMat 3 array([[1., 1., 1.], 4 [0., 0., 0.], 5 [0., 0., 0.], 6 ..., 7 [0., 0., 0.], 8 [0., 0., 0.], 9 [0., 0., 0.]]) 10 >>>ranges 11 array([4.092000e+04, 8.326976e+00, 9.539520e-01]) 12 >>>minVals 13 array([0., 0., 0.])

出现的错误:

1 >>>normMat, ranges, minVals = kNN.autoNorm(datingDataMat) 2 Traceback (most recent call last): 3 File "", line 1, in 4 NameError: name 'kNN' is not defined 5 6 >>>normMat, ranges, minVals = kNN.autoNorm(datingDataMat) 7 Traceback (most recent call last): 8 File "", line 1, in 9 AttributeError: module 'kNN' has no attribute 'autoNorm'

解决办法:

  个人解决办法:重启PyCharm,运行kNN.py,重新完整的输入运行命令,问题就解决了

1 >>>from numpy import * 2 >>>random.rand(4,4) 3 >>>randMat = mat(random.rand(4,4)) 4 >>>randMat.I 5 >>>invRandMat = randMat.I 6 >>>myEye = randMat*invRandMat 7 >>>myEye - eye(4) 8 >>>group,labels = kNN.createDataSet() 9 >>>group 10 >>>labels 11 >>>kNN.classify0([0,0], group, labels, 3) 12 >>>datingDataMat,datingLabels = kNN.file2matrix('datingTestSet.txt') 13 >>>datingDataMat 14 >>>datingLabels[0:16] 15 >>>import matplotlib 16 >>>import matplotlib.pyplot as plt 17 >>>fig = plt.figure() 18 >>>ax = fig.add_subplot(111) 19 >>>ax.scatter(datingDataMat[:,1], datingDataMat[:,2]) 20 >>>plt.show() 21 >>>normMat, ranges, minVals = kNN.autoNorm(datingDataMat) 22 >>>normMat 23 array([[1., 1., 1.], 24 [0., 0., 0.], 25 [0., 0., 0.], 26 ..., 27 [0., 0., 0.], 28 [0., 0., 0.], 29 [0., 0., 0.]]) 30 >>>ranges 31 array([4.092000e+04, 8.326976e+00, 9.539520e-01]) 32 >>>minVals 33 array([0., 0., 0.])

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3