K邻近回归算法
代码:
1 # -*- coding: utf-8 -*- 2 """ 3 Created on Fri Jul 13 10:40:22 2018 4 5 @author: zhen 6 """ 7 import mglearn 8 from sklearn.neighbors import KNeighborsRegressor 9 from sklearn.model_selection import train_test_split 10 import matplotlib.pyplot as plt 11 import numpy as np 12 13 x, y = mglearn.datasets.make_wave(n_samples=40) 14 # 将wave数据集分为训练集和测试集 15 x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0) 16 17 fig, axes = plt.subplots(1, 3, figsize=(15, 4)) 18 19 # 创建1000个数据点,在-3到3之间均匀分布 20 line = np.linspace(-3, 3, 1000).reshape(-1, 1) 21 for n_neighbors, ax in zip([1, 3, 9],axes): 22 # 利用1个,3个和9个邻居分别进行预测 23 reg = KNeighborsRegressor(n_neighbors=n_neighbors) 24 reg.fit(x_train, y_train) 25 ax.plot(line, reg.predict(line)) 26 ax.plot(x_train, y_train, '^', c=mglearn.cm2(0), markersize=8) 27 ax.plot(x_test, y_test, 'v', c=mglearn.cm2(1), markersize=8) 28 ax.set_title( 29 "{} neighbor(s)\n train score:{:.2f} test score:{:.2f}".format( 30 n_neighbors, reg.score(x_train, y_train), 31 reg.score(x_test, y_test))) 32 ax.set_xlabel("Feature") 33 ax.set_ylabel("Target") 34 axes[0].legend(["Model prediction", "Training data/target", "Test data/target"], loc="best")
结果:
总结:
K-NN的优点之一就是模型很容易理解,通常不需要过多调节就可以得到不错的性能。
在考虑使用更高级的技术之前,尝试此算法是一种很好的基准方法。
构建模型的速度通常很快,但如果训练集很大(特征数很多或样本基数很大),预测速度可能会比较慢。
因此,使用此算法之前进行数据预处理是很重要的!
此算法对特征数很多(几百或更多)的数据集效果往往不好,特别是稀疏数据集!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架