- 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
- 🍖 原作者:K同学啊
这就是KNN(k-近邻)算法:在判定一个未知事物时,可以观察离它最近的几个样本。
K-近邻算法是一种基本分类和回归方法。
其核心思想是通过测量不同数据点之间的距离(例如欧几里得距离),找到输入样本最近的 k 个邻居,然后根据这 k 个邻居的信息来进行预测。
问题简介
背景: 海伦一直使用在线约会网站寻找适合自己的约会对象。尽管约会网站会推荐不同的人选,但她没有从中找到喜欢的人。经过一番总结,她发现曾交往过三种类型的人:
● ①不喜欢的人;
● ②魅力一般的人;
● ③极具魅力的人。
她现在总结好的数据中(即训练集)包含三种特征:
● ①每年获得的飞行常客里程数
● ②玩视频游戏所耗时间百分比
● ③每周消费的冰淇淋公升数
她希望根据现有的数据来判断一个陌生男人会被她归到哪一类。
导入数据
数据标签详解:
● 0:每年获得的飞行常客里程数
● 1:玩视频游戏所耗时间百分比
● 2:每周消费的冰淇淋公升数
● 3:人物类别(不喜欢的人、魅力一般的人、极具魅力的人)
数据集:
import pandas as pd
data=pd.read_table('../data/datingTestSet2.txt',
sep='\t',
header=None)
data.head()
X = data.iloc[:,:3]
y = data.iloc[:,3]
X 是一个包含数据集的特征(输入)的 DataFrame,这里你通过 data.iloc[:,:3] 来选择数据集的前 3 列(从 0 到 2 列)。
y 是目标变量(输出),你通过 data.iloc[:,3] 来选择数据集的第 4 列(索引为 3 的列)作为标签。
将数据集分成训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.25,
random_state=3)
K-邻近算法模型
from sklearn.neighbors import KNeighborsClassifier
knc = KNeighborsClassifier()
knc.fit(X_train, y_train)
结果预测
data["预测结果"] = knc.predict(data.iloc[:,:3])
data.head(10)
模型评分
scoreK = knc.score(X_test,y_test)
print(scoreK)
0.796