机器学习实战之k-近邻算法

书中2.2.1 准备数据:从文本文件中解析数据 P22 

在Python命令提示符才输入下面命令时,出现ValueError: invalid literal for int() with base 10: 'largeDoses'错误。

datingDataMat, datingLabels = KNN.file2matrix('datingTestSet.txt')

 解决办法:

《机器学习实战》书中的一个小错误,P22的datingTestSet.txt这个文件,根据网上的源代码,应该选择datingTestSet2.txt这个文件。主要的区别是最后的标签,作者原来使用字符串‘veryLike’作为标签,但是Python转换会出现ValueError: invalid literal for int() with base 10: 'largeDoses'的错误。所以改成后面的文件就可以了。 --------------------- 本文来自 chchlh 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/chchlh/article/details/41596797?utm_source=copy

 

在命令行窗口直接输入reload(KNN)时报错NameError: name 'reload' is not defined
解决办法:
import importlib
importlib.reload(KNN)


在命令行窗口输入import matplotlib时报错NameError: name 'reload' is not defined
解决办法:
pip install matplotlib

绘制图2-5的具体代码如下:

import KNN
import importlib
importlib.reload(KNN)
datingDataMat, datingLabels = KNN.file2matrix('datingTestSet2.txt')
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
fig = plt.figure()
ax = fig.add_subplot(111)
font = FontProperties(fname=r"c:\windows\fonts\DengXian.ttf", size=15)
ax.scatter(datingDataMat[:, 0], datingDataMat[:, 1], labelsShowSizeColor, labelsShowSizeColor)
plt.title("datingDataMat矩阵的第二、第三列数据", fontproperties=font)
plt.xlabel('每年获取的飞行常客里程数', fontproperties=font)
plt.ylabel('玩视频游戏所耗时间百分比', fontproperties=font)
colors = ["#440154", "#21918C", '#FDE725'] 
texts = ["didntLike", "smallDoses", "largeDoses"]
ms = [5, 7, 9]
patches = [ plt.plot([],[], marker="o", ms=ms[i], ls="", mec=None, color=colors[i], 
      label="{:s}".format(texts[i]))[0] for i in range(len(texts)) ] 
plt.legend(handles=patches,loc='upper left', ncol=1, facecolor="plum", numpoints=1) 
plt.show()

 

 

  

posted @ 2018-10-04 11:38  假假修真  阅读(470)  评论(0)    收藏  举报