机器学习 使用交叉验证为KNN调优参数

本文详细介绍了如何利用交叉验证技术为K近邻(KNN)算法选择最佳的参数,通过实例展示了调参过程,从而提高模型的预测性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# KNN的距离算法  使用的是欧氏距离  即算空间中点的距离 (根号下的 差的平方和)
# 要注意的是knn算法是需要做 标准化处理的
# API:(参数:n_neighbors=5)默认使用5个邻居  邻居的数量对算法的结果有影响 数量越大则要判断的点越多
from sklearn.neighbors import KNeighborsClassifier
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 网格参数最优搜索
from sklearn.model_selection import GridSearchCV


def knncls():
    data = pd.read_csv("./data/facebook/train.csv")
    #     处理数据
    print(data.head(10))
    # 缩小数据集
    # 使用query查询数据筛选数据 输入字符串 用& 表示与
    data = data.query("x>1.0 & x<1.25 &y>2.5 & y <2.75")
    # 处理时间戳 转换成年月日 时分秒
    # 调用pd.to_datatime() 可以吧时间戳转换为时间年月日
    time_values = pd.to_datetime(data['time'])
    print(time_values)
    # 构造更多的特征  年月都一致  不再使用年月
    # 获取参数 使用打他timeindex
    time_values = pd.DatetimeIndex(time_values)
    data['day'] = time_values.day
    data['hour'] = time_values.hour
    data['weekday'] = time_values.weekday
    data['weekday'] = time_values.week