KNN不仅适用于分类,也适用于回归问题。 学习如何使用KNN来预测数值型的标签。

    image.png

    如上图所示,假如我们知道一个人目前收入和工作年限,并预测跳槽之后的薪资。这时候,预测目标为数值型变量。

    用KNN来预测此变量:

    image.png

    所以呢,找到最近的K样本之后,我们直接取了平均作为预测值,很直观!

    关于回归的案例:

    这个案例的目的是基于二手车辆的状况来估计它的实际市场价格。

    image.png

    Ask Price字段是我们要预测的值,即二手车的估价。
    Brand为车辆的牌子。
    Type指的是它的发动机类型。
    Color字段为车辆外观颜色。
    Construction Year字段为车子生产年份。
    Odometer为仪表盘已经行驶的里程数。
    DaysUntilMOT指的是自从上一次的保养过了多久
    HP字段代表的是马力。

    这些特征里,都是类别型(categorical)变量

    这里有一个不太容易判断的特征为Type字段,因为Type从字面来看它像数值类型的特征比如1.0,1.1,并且它们是有大小关系的。 当然,从某种意义上其实也可以看作是数值型特征,但是又从它的关键词Type来看更像是一个类别型变量。所以在这个问题上既可以把它看作是数值型的也可以看作是类别型变量。

    另外,很容易发现每一个特征的范围具有明显的差异,比如Odometer和HP,所以需要做一些数值的归一化。

    看一段利用KNN来解决回归问题的代码:

    1. import pandas as pd
    2. import matplotlib
    3. import matplotlib.pyplot as plt
    4. import numpy as np
    5. import seaborn as sns #seaborn库用来画一个heatmap
    6. #读取数据
    7. df=pd.read_csv("/home/anaconda/data/RGZNXLY/ch4/data. csv')
    8. df # data frame
    9. #利用pandas读取数据并打印 可以看得到具体数据了,每一列都是一个特征值

    image.png