ML基础-k近邻算法-2

本文介绍了如何使用k近邻算法进行约会网站的配对效果分析。通过Python程序,详细解释了数据准备、归一化处理、分类算法的步骤和代码实现,以及测试算法后的误差率。利用Matplotlib进行数据可视化,展示了不同特征对配对结果的影响。
摘要由CSDN通过智能技术生成

【事例:关于约会网站配对的效果】Python程序解析

准备数据

def file2matrix(filename):
    love_dictionary = {
  'largeDoses': 3, 'smallDoses': 2, 'didntLike': 1}
    fr = open(filename)  # 打开文件
    arrayOLines = fr.readlines() #读文件的所有行
    numberOfLines = len(arrayOLines)  # get the number of lines in the file(得到文件行数)
    returnMat = zeros((numberOfLines, 3))  # prepare matrix to return(创建Numpy矩阵)
    classLabelVector = []  # prepare labels return 设置返回的级别的数组
    index = 0
    for line in arrayOLines:
        line = line.strip()#用于移除字符串头尾的空格
        listFromLine = line.split('\t')#根据空格截取,txt文件中不同种类就是用空格来差分的
        returnMat[index, :] = listFromLine[0:3]# 一行的前三个
        if (listFromLine[-1].isdigit()):#方法检测字符串是否只由数字组成
            classLabelVector.append(int(listFromLine[-1]))#直接添加123的数字
        else:
            classLabelVector.append(love_dictionary.get(listFromLine[-1]))#将文字转换成文字进行
        index += 1#+1之后准备返回2个集合,一个是矩阵,一个是好感度
    return returnMat, classLabelVector

实施分类算法

步骤

  1. 计算已知类别数据集中的点与当前点之间的距离;
  2. 按照距离递增次序排序;
  3. 选取与当前点距离最小的k个点;
  4. 确定前k个点所在类别的出现频率;
  5. 返回前k个点出现频率最高的类别作为当前点的预测分类

代码解析

可以直接调用上文的抽出数据,可以在控制台数据若干数组,下面需要通过图形化展示这些内容,Matplotlib创建散点图。

fig = plt.figure()  # 创建plot的图像展示
ax = fig.add_subplot(111)  # z整体展示
datingDataMat, datingLabels = kNN.file2matrix('datingTestSet.txt')  # 读文件,得到3项数据的矩阵,和好感度的数组
# ax.scatter(datingDataMat[:,1], datingDataMat[:,2])
#scatter是做散点图的函数,分别是
print("***************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值