K邻近算法——约会成功预测【python实现】
发布日期:2021-05-07 23:08:02 浏览次数:17 分类:精选文章

本文共 1734 字,大约阅读时间需要 5 分钟。

题目

我们从:飞行公里数,玩游戏时间和冷饮消耗量来分析约会是否成功~

代码实现

import numpy as npimport pandas as pdimport matplotlib.pyplot as plt# 字体设置plt.rcParams['font.sans-serif'] = ['SimHei']# 训练集的载入datingTest = pd.read_table('datingTestSet.txt', header=None)# 测试集标签添加datingTest.columns = ['a', 'b', 'c', 'd']# 对应三类训练集数据,用来制作三维散点图Colors1 = datingTest.loc[datingTest['d'].str.contains('didntLike')]Colors2 = datingTest.loc[datingTest['d'].str.contains('smallDoses')]Colors3 = datingTest.loc[datingTest['d'].str.contains('largeDoses')]ax = plt.axes(projection='3d')# 散点图的坐标轴标签ax.set_xlabel('飞行公里数')ax.set_ylabel('玩游戏时间')ax.set_zlabel('冷饮消耗数')# 三维坐标轴数据天花, c 是颜色ax.scatter(Colors1.iloc[:, 0], Colors1.iloc[:, 1], Colors1.iloc[:, 2], c='black')ax.scatter(Colors2.iloc[:, 0], Colors2.iloc[:, 1], Colors2.iloc[:, 2], c='orange')ax.scatter(Colors3.iloc[:, 0], Colors3.iloc[:, 1], Colors3.iloc[:, 2], c='red')# 输入测试数据new_datax = int(input('飞行公里数:'))new_datay = int(input('玩游戏时间:'))new_dataz = int(input('冷饮消耗数:'))# 测试数据整合new_data = np.array([new_datax, new_datay, new_dataz])# 测试数据描点,并展现三维散点图ax.scatter(new_datax, new_datay, new_dataz, c='purple')plt.show()# 归一化处理找到最大值和最小值max_ = datingTest.iloc[:,0:3].max()min_ = datingTest.iloc[:,0:3].min()# 训练集制作,归一化处理training_set = (datingTest.iloc[:,0:3]-min_)/(max_-min_)new_data = (new_data-min_)/(max_-min_)# print(training_set)# print(max_, min_)# print(new_data)# 欧氏距离公式data_set = list((((training_set-new_data)**2).sum(1))**0.5)# print(data_set)# 完成数据集Test_set = pd.DataFrame({       'dist':data_set,    'like':datingTest.iloc[:, -1]})# print(Test_set)# 输入k值k = int(input('k:'))# 找到前k个值dr = Test_set.sort_values(by='dist')[0:k]# 统计标签数re = dr.loc[:, 'like'].value_counts()# 显示标签最多的,即预测结果print(re.index[0])

结果展示

在这里插入图片描述

在这里插入图片描述感觉自己终于可以开始筑基修炼了,好鸡冻~

上一篇:汉诺塔 C++实现【STL stack】
下一篇:2.4 大电路静态工作点的稳定

发表评论

最新留言

很好
[***.229.124.182]2025年04月14日 04时33分17秒