回归算法--K近邻算法

文章目录

  • 前言
  • 一、K近邻算法的数学基础?
  • 二、分类算法-k近邻算法(KNN)
    • 1.定义
    • 2.计算公式
    • 3. K近邻API
  • 三、代码实例化演示
    • 1.==案例:==
    • 2. 数据的处理![在这里插入图片描述](https://img-blog.csdnimg.cn/4f810731a9284d1db4433ba699befb8f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAd2VpeGluXzQ0NzE5NTI5,size_16,color_FFFFFF,t_70,g_se,x_16)
    • 3. 实例流程
  • 三、k-近邻算法优缺点
  • 四、总结

学习最简单的分类算法-K近邻算法

前言

一、K近邻算法的数学基础?

回归算法--K近邻算法_第1张图片
你的“邻居”来推断出你的类别
回归算法--K近邻算法_第2张图片
预测影片是爱情片

二、分类算法-k近邻算法(KNN)

1.定义

定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

2.计算公式

计算距离公式

回归算法--K近邻算法_第3张图片

3. K近邻API

回归算法--K近邻算法_第4张图片

三、代码实例化演示

1.案例:

回归算法--K近邻算法_第5张图片

2. 数据的处理回归算法--K近邻算法_第6张图片

3. 实例流程

1、数据集的处理

2、分割数据集

3、对数据集进行标准化

4、estimator流程进行分类预测

"" 
@author: Administrator 
@file: 03_K近邻算法.py 
@time: 2021/10/20 
@desc:
通过K近邻算法,训练模型,预测客户的place_id
"""
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
def kuns():
    #1.读取训练集数据
    data=pd.read_csv(r"F:\future\5-机器学习\facebook-v-predicting-check-ins\train.csv")
    """
    一、处理数据
    """
    #2.缩小数据范围
    #print(data.head(3))
    data=data.query("x>1 & x <1.25 & y >2.5 & y <2.75")
    # 3.处理日期数据
    time_value=pd.to_datetime(data["time"],unit="s")

    # 4. 将时间序列转化为字典格式的时间序列
    time_v=pd.DatetimeIndex(time_value)
    data.loc[:,"day"]=time_v.day#利用loc 而非data["列名"]=value,因为只会将value的copy添加到df的新列上
    data.loc[:,"hour"]=time_v.hour
    data.loc[:,"weekdays"]=time_v.weekday
    #5. 删除时间戳-time
    data=data.drop("time",axis=1)
    # 6. 将签到位置中少于3个用户的place_id进行删除
    # 6.1 将place_id 进行分组与统计:
    place_count=data.groupby("place_id").count()#place_count是df类型,并且与data中place_id数据一致,其他是次数
    """随便取一个column,将次数阈值设置为3"""
    tf=place_count[place_count["row_id"]>3].reset_index()#重新设置index,则place_id会进入place_count中
    # 7. 筛选data中的place_id值,即如果在tf中就保留在data中,即利用tf中place_id 筛选data 中place_id
    data=data[data["place_id"].isin(tf.place_id)]#df["列名"]=df.列名

    """
    二、特征工程
    """

    # 1. 取出数据集中的特征值和目标值
    y=data["place_id"]
    x=data.drop("place_id",axis=1)

    # 2. 进行分割数据集,形成训练集和测试集
    """
    关键输出的是训练集_特征值;测试集_目标值;测试集_目标值;测试集_目标值
    """
    x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.25)

    # #2 标准化训练集和测试集的特征值
    std=StandardScaler()
    x_train=std.fit_transform(x_train)#训练集的特征值建立标准,平均值,标准差
    x_test=std.transform(x_test)#直接利用训练集的特征值建立的标准
    # """
    # 三、 进行K近邻算法,构建模型,并利用分割的测试集进行验证
    # """
    # # 1、调用API,进行算法流程
    knn=KNeighborsClassifier(n_neighbors=5)
    # # 2. 传入训练集的特征值和目标值
    knn.fit(x_train,y_train)
    # # 3. 得出预测结果,进行计算测试集中特征值和上述输入的训练集的特征值之间的距离,并根据距离大小,利用类别进行判断
    y_predice=knn.predict(x_test)
    scor=knn.score(x_test,y_test)
    print(scor)





if __name__=="__main__":
    kuns()

三、k-近邻算法优缺点

优点:
简单,易于理解,易于实现,无需估计参数,无需训练

缺点:
懒惰算法,对测试样本分类时的计算量大,内存开销大
必须指定K值,K值选择不当则分类精度不能保证

四、总结

使用场景:小数据场景,几千~几万样本,具体场景具体业务
去测试

你可能感兴趣的:(机器学习,回归,近邻算法,数据挖掘)