精华内容
下载资源
问答
  • k近邻回归
    千次阅读
    2017-07-04 15:13:43

    K近邻回归模型不需要训练参数,只需要借助周围K个最近训练样本的目标值,对待测试样本的回归值进行决策。由此就衍生出衡量待测样本回归值的不同方式,即普通的算术平均算法和考虑距离差异的加权平均。下面不具体介绍详细的算法,而是采用一个对波士顿房价进行预测的案例来使用这两种模型,并对两种模型的性能进行比较。

    语言是Python3.6,集成环境是Anaconda3。

    1、源代码

    #导入数据
    from sklearn.datasets import load_boston
    boston=load_boston()
    print(boston.DESCR)
    
    from sklearn.cross_validation import train_test_split
    import numpy as np
    X=boston.data
    y=boston.target
    
    X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=33,test_size=0.25)
    #分析回归目标值的差异
    print('max:',np.max(boston.target),'\tmin:',np.min(boston.target),'\taverage:',np.mean(boston.target))
    
    from sklearn.preprocessing import StandardScaler
    
    ss_X=StandardScaler()
    ss_y=StandardScaler()
    
    #标准化处理
    X_train=ss_X.fit_transform(X_train)
    X_test=ss_X.fit_transform(X_test)
    y_train=ss_y.fit_transform(y_train)
    y_test=ss_y.fit_transform(y_test)
    
    
    #从sklearn.neighbors导入KNeighborRegressor
    from sklearn.neighbors import KNeighborsRegressor
    
    #采用平均回归的方式配置K近邻回归器
    uni_knr=KNeighborsRegressor(weights='uniform')
    uni_knr.fit(X_train,y_train)
    uni_knr_y_predict=uni_knr.predict(X_test)
    
    #采用距离加权回归的方式配置K近邻回归器
    dis_knr=KNeighborsRegressor(weights='distance')
    dis_knr.fit(X_train,y_train)
    dis_knr_y_predict=dis_knr.predict(X_test)
    
    #对两种配置方式进行测评
    print('R-squared value of uniform-weighted KNeighborRegrssion:',uni_knr.score(X_test,y_test))
    print('R-squared value of distance-weighted KNeighborRegrssion:',dis_knr.score(X_test,y_test))
    

    2、结果分析

    运行结果:

    R-squared value of uniform-weighted KNeighborRegrssion: 0.651600223378
    R-squared value of distance-weighted KNeighborRegrssion: 0.672625483305

    从运行结果可以知道:K近邻加权平均的回归策略可以获得较高的模型性能。

    更多相关内容
  • 基于多线性分析和k近邻回归的短期交通流量预测
  • k近邻算法,实现机器学习中的回归功能,参数k需要自己选择
  • K近邻回归模型,回归模型的一般描述,K近邻回归算法的一般描述,K近邻回归模型的预测规则(等权平均,基于距离的加权平均)

    目录

    前言

    一、回归模型的一般描述

    二、K近邻回归算法的描述

    三、K近邻回归的预测规则

    方式一、等权平均 --- 传统的K近邻决策方式

    方式二、基于距离的加权平均


    前言

    有很多新手刚刚接触大数据与人工智能方向学习,如果不知道怎么着手的,跟我一起慢慢进步叭~


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、回归模型的一般描述

    给定训练样本集{(xi, yi),i = 1,…,n}.其中,xi为第i个观测样本的输入;yi为第i个观测样本的输出。

    基于上述样本集,构建预测模型y = f(x) ----- 模型的回归学习

    对特征空间的任意观测x的输出y进行预测 ----- 模型的使用

    二、K近邻回归算法的描述

    输入:(1)训练样本集D = {(xi, yi),i = 1,…,n},其中,xi为第i个训练样本的特征向量;yi为第i个训练样本的目标输出

    (2)观测样本x

    输出:观测样本x对应的输出y

    STEP1  输入特征的预处理

    STEP2  选择K值(K值的选择

    STEP3  在训练集D内找到样本x的K个近邻,记为

    STEP4  结合指定的预测规则,对x应导致的输出y进行预测

    注:训练集固定的前提下,不同的距离度量方式、不同的K值、不同的预测规则,会导致不同的预测结果。K近邻回归的距离度量方式和K值与K近邻分类模型一致,现讨论不同的预测规则对K近邻回归模型的影响,距离度量方式和K值的选择见上一篇博客(K近邻分类模型

    三、K近邻回归的预测规则

    方式一、等权平均 --- 传统的K近邻决策方式

    对于给定的观测样本x,利用距离度量,在训练样本集D中确定x的前K个近邻,x应导致的输出Y预测为:

    方式二、基于距离的加权平均

    对于给定的观测样本x,利用距离度量,在训练样本集D中确定x的前K个近邻,对于,该训练样本关于x的距离为d(x,xj),引入基于距离的预测权值,如:

    则x应导致的输出y预测为:

    展开全文
  • 【2】k近邻回归

    千次阅读 2021-01-27 16:50:24
    k近邻用于回归,先从单一近邻进行分析,使用wave数据集。有3个测试数据点,在x轴上用绿色五角星表示。预测结果用蓝色五角星表示。 import numpy as np import pandas as pd import mglearn import matplotlib.pyplot...

    k近邻用于回归,先从单一近邻进行分析,使用wave数据集。有3个测试数据点,在x轴上用绿色五角星表示。预测结果用蓝色五角星表示。

    import numpy as np
    import pandas as pd
    import mglearn
    import matplotlib.pyplot as plt
    
    mglearn.plots.plot_knn_regression(n_neighbors=1)
    

    输出
    在这里插入图片描述
    当然也可以用多个近邻进行回归,预测结果为这些邻居的平均值

    mglearn.plots.plot_knn_regression(n_neighbors=3)
    

    输出
    在这里插入图片描述
    使用scikit-learn中的KNeighborsRegressor来实施k近邻回归,

    from sklearn.neighbors import KNeighborsRegressor
    from sklearn.model_selection import train_test_split
    
    X,y = mglearn.datasets.make_wave(n_samples=40)
    #将数据集划分为训练集和测试集
    X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=0)
    #模型实例化
    reg = KNeighborsRegressor(n_neighbors=3)
    #训练模型
    reg.fit(X_train,y_train)
    #对测试集作出预测
    print('测试集预测结果为:{}'.format(reg.predict(X_test)))
    

    输出

    测试集预测结果为:[-0.05396539  0.35686046  1.13671923 -1.89415682 -1.13881398 -1.63113382
      0.35686046  0.91241374 -0.44680446 -1.13881398]
    

    使用score方法来评价模型,此时返回的是R2分数,位于0~1之间。R2等于1对应完美预测,R2等于0对应常数模型,即总是预测训练集目标值(y_train)的平均值。

    print('测试集 R^2 值:{:.2f}'.format(reg.score(X_test,y_test)))
    

    输出

    测试集 R^2 值:0.83
    

    下面考察多个邻居的情况,

    fig,axes = plt.subplots(1,3,figsize=(15,4))
    #在-3和3之间创建1000个均匀分布的点
    line = np.linspace(-3,3,1000).reshape(-1,1) #reshape(-1,1)表示变为1列,-1表示“未指定”
    for n_neighbors,ax in zip([1,3,9],axes):
        #使用1、3、9个邻居分别进行训练和预测
        reg = KNeighborsRegressor(n_neighbors=n_neighbors)
        reg.fit(X_train,y_train)
        ax.plot(line,reg.predict(line))
        ax.plot(X_train,y_train,'g>',markersize=8)
        ax.plot(X_test,y_test,'r<',markersize=8)
        ax.set_title(
            '{}neighbor(s)\n train score:{:.2f}, test score:{:.2f}'.format(
            n_neighbors,reg.score(X_train,y_train),
            reg.score(X_test,y_test)))
        ax.set_xlabel('Feature')
        ax.set_ylabel('Target')
    axes[0].legend(['Model prediction','Training data/target',
                   'Test data/target'],loc='best')
    

    输出
    在这里插入图片描述
    由图中可以看出,和k近邻分类的分类边界类似,邻居越多,训练出的曲线越平滑。

    k-NN优点:
    模型简单,容易理解。
    k-NN缺点:
    需要对数据进行预处理;训练集很大的情况下,训练速度很慢;对稀疏数据集的效果尤其不好。

    展开全文
  • 如下所示: from sklearn.datasets import load_boston boston = load_boston() from sklearn.cross_validation import train_test_split import numpy as np; X = boston.data y = boston.target ...
  • 本文利用k近邻算法对美国波士顿地区的房价进行了预测

    k近邻

    K近邻中这类模型不需要训练参数的特点。在回归任务中,K近邻(回归)模型同样只是借助周围K个最近训练样本的目标数值,对待测样本的回归值进行决策。自然,也衍生出衡量待测样本回归值的不同方式,即到底是对K个近邻目标数值使用普通的算术平均算法,还是同时考虑距离的差异进行加权平均。因此,本文也初始化不同配置的K近邻(回归)模型来比较回归性能的差异。

    美国波士顿地区房价预测

    这里我们利用前一篇文章Python回归预测汇总-线性回归(实例:美国波士顿地区房价预测)的数据继续进行k近邻回归预测。

    预测

    from sklearn.neighbors import KNeighborsRegressor
    #weights='uniform'
    uni_knr = KNeighborsRegressor(weights='uniform')
    uni_knr.fit(x_train,y_train)
    uni_knr_pred=uni_knr.predict(x_test)
    #weights='distance'
    dis_knr = KNeighborsRegressor(weights='distance')
    dis_knr.fit(x_train,y_train)
    dis_knr_pred=dis_knr.predict(x_test)
    

    性能测评

    #模型自带评估模块
    print("正确率为:\n",uni_knr.score(x_test,y_test.reshape(-1,1)))
    #
    from sklearn.metrics import r2_score,mean_absolute_error,mean_squared_error
    #使用r2_score模块评估
    print("正确率为:\n",r2_score(y_test,uni_knr_pred))
    #用mean_squared_error模块评估
    print("正确率为:\n",mean_squared_error(ss_y.inverse_transform(y_test.reshape(-1,1)),ss_y.inverse_transform(uni_knr_pred)))
    #用mean_absolute_error模块评估
    print("正确率为:\n",mean_absolute_error(ss_y.inverse_transform(y_test.reshape(-1,1)),ss_y.inverse_transform(uni_knr_pred)))
    

    在这里插入图片描述

    #模型自带评估模块
    print("正确率为:\n",dis_knr.score(x_test,y_test.reshape(-1,1)))
    #
    from sklearn.metrics import r2_score,mean_absolute_error,mean_squared_error
    #使用r2_score模块评估
    print("正确率为:\n",r2_score(y_test,dis_knr_pred))
    #用mean_squared_error模块评估
    print("正确率为:\n",mean_squared_error(ss_y.inverse_transform(y_test.reshape(-1,1)),ss_y.inverse_transform(dis_knr_pred)))
    #用mean_absolute_error模块评估
    print("正确率为:\n",mean_absolute_error(ss_y.inverse_transform(y_test.reshape(-1,1)),ss_y.inverse_transform(dis_knr_pred)))
    

    在这里插入图片描述

    总结

    K近邻(回归)与K近邻(分类)-样,均属于无参数模型(Nonparametricmodel),同样没有没有参数训练过程。但是由于其模型的计算方法非常直观,因此深受广大初学者的喜爱。这里讨论了两种根据数据样本的相似程度预测回归值的方法,并且验证采用K近邻加权平均的回归策略可以获得较高的模型性能,供读者参考。

    展开全文
  • 使用两种k近邻回归模型 分别是 平均k近邻回归 和 距离加权k近邻回归 进行预测 git:https://github.com/linyi0604/MachineLearning 代码: 1 from sklearn.datasets import load_boston 2 from sklearn.cross...
  • 回归任务重,k近邻回归)模型同样只是借助周围K个最近训练样本的目标数值,对待测样本的回归值进行决策。自然,也衍生出衡量待测样吧回归值的不同方式,即到底是对K个近邻目标数值使用普通的算术平均算法,还是...
  • 回归算法--K近邻算法

    2021-10-22 00:51:25
    文章目录 前言 一、K近邻算法的数学基础? 二、分类算法-k近邻算法(KNN) 1.定义 2.计算公式 3. K近邻API 三、代码实例化演示 1.==案例:== 2. 数据的处理![在这里插入图片描述]...
  • k-近邻分类适用于数据标签为离散变量的情况,而k-近邻回归适用于数据标签为连续变量的情况 k-近邻回归预测样本的标签由它最近临标签的均值计算而来 二.用法和参数 KneighborsRegressor类 基于每个查询点的k个最近...
  • k近邻,k近邻算法,matlab

    2021-09-10 17:44:55
    K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。
  • KNN模型分类:K近邻算法的主要思想是用离测试集数据点最近的训练集点(称为其邻居)的输出来估计测试集数据点的输出,参数K代表用多少个邻居来估计。超参数K通常设置为奇数来防止平局现象。其中对邻居的判定:我们可以...
  • k近邻回归与波士顿房价案例一、K 近邻(回归)理论(1)K 近邻回归原理(2)K 近邻加权法(3)算法流程(4)优缺点二、K 近邻(回归)具体案例操作参考文献: 一、K 近邻(回归)理论 (1)K 近邻回归原理 K 近邻...
  • 今天开始, 开始尝试进行机器学习算法的一些查缺补漏知识的整理, 主要还是之前没有注意的一些点吧, 这次主要是KNN算法和线性回归的两个点, 这两个算法或许在大家看来或许都是两个比较简单的算法, 但是这次又偶然...
  • K近邻算法的描述 1.K近邻分类模型的引入 算法是一种懒惰学习,无显示的训练过程,直接进行基于样本的空间划分。 模型训练之前需要准备:训练样本集、近邻数k与距离度量。 2.K近邻分类算法的描述 输入: 输出:观测...
  • 2.1.2.3 K近邻回归

    2019-03-04 19:12:51
    #初始化K近邻回归器,并且调整配置,使得预测的方式为根据距离,加权回归 dis_knr=KNeighborsRegressor(weights='distance') dis_knr.fit(X_train,y_train) dis_knr_y_predict=dis_knr.predict(X_test) #对...
  • k近邻算法的原理、示例与分析

    千次阅读 2021-04-06 23:07:48
    k近邻算法的原理、示例与分析 代码参考书籍 Python机器学习基础教程. Andreas C.muller, Sarah Guido著(张亮 译). 北京:人民邮电出版社,2018.1(2019.6重印) 实现环境 System:Ubuntu server 20.04 (Jupyter ...
  • 回归预测 | MATLAB实现KNN(K近邻)多输入单输出 目录回归预测 | MATLAB实现KNN(K近邻)多输入单输出基本介绍模型回归程序设计学习总结参考资料 基本介绍 k近邻算法(KNN)是监督学习算法,可用于回归,如有一系列样本...
  • K近邻算法(或简称kNN)是易于理解和实现的算法,而且是你解决问题的强大工具。什么是kNNkNN算法的模型就是整个训练数据集。当需要对一个未知数据实例进行预测时,kNN算法会在训练数据集中搜寻k个最相似实例。对k个最...
  • # 初试化K近邻回归器,并且调整配置,使得预测的方式为根据距离加权回归:weights='distance' dis_knr = KNeighborsRegressor(weights= 'distance' ) dis_knr.fit(X_train, y_train) dis_knr_y_predict = dis_knr....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,635
精华内容 6,254
关键字:

k近邻回归