首页 > 编程语言 >Knn-Python网格化搜索超参数及数据归一化处理

Knn-Python网格化搜索超参数及数据归一化处理

时间:2023-02-06 16:33:13浏览次数:55  
标签:Knn knn search clf test train grid 归一化 网格化


# 将数据分为测试集和训练集
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=666)
from sklearn.neighbors import KNeighborsClassifier

knn_clf = KNeighborsClassifier(n_neighbors=3)
knn_clf.fit(X_train, y_train)
y_predict = knn_clf.predict(X_test)
# 查看分类的准确度,原理是(真实值-测试值)/数据的个数
from sklearn.metrics import accuracy_score

accuracy_score(y_test, y_predict)
# 如果查看分类的准确度时,不需要关心y_predict是什么,而直接想得出准确度时,可以:
knn_clf.score(X_test, y_test)
# 网格化超参数搜索
param_grid = [
{
'weights': ['uniform'],
'n_neighbors': [i for i in range(1, 11)]
},
# 名科夫斯基距离
{
'weights': ['distance'],
'n_neighbors': [i for i in range(1, 11)],
'p': [i for i in range(1, 6)]
}
]
knn_clf = KNeighborsClassifier()
from sklearn.model_selection import GridSearchCV

grid_search = GridSearchCV(knn_clf, param_grid)
# 针对定义所有的参数,来寻找最佳的模型
%%timetime
grid_search.fit(X_train, y_train)
# 返回的是网格搜索最佳的分类器对应的参数(返回的是所有参数)
grid_search.best_estimator_
# 返回的是网格搜索最佳的分类器的准确度得分
grid_search.best_score_
# 返回的是网格化参数重最优的参数
grid_search.best_params_
# 测试最优参数的准确率
knn_clf = grid_search.best_estimator_
knn_clf.score(X_test,y_test)
# 并行处理超参数
# verbose的意思是在搜索的过程中进行一些输出
%%time
grid_search = GridSearchCV(knn_clf, param_grid, n_jobs=-1, verbose=2)
grid_search.fit(X_train, y_train)
'''
除了名科夫斯基距离外,还可以有:
向量空间余弦相似度
调整余弦相似度
皮尔森相关系数
Jaccard相似系数

metric参数修改(默认名科夫斯基距离)
'''
# 对测试数据集进行归一化的方法:(得到均值和方差)
# (x_test - mean_train)/std_train
# sklearn实现的流程:先对train数据集进行Scalar,fit后得到其Scalar相关的关键参数,
# 再经过transform得到输出结果
# 数据归一化
# 1.最值归一化:把所有数据映射到0-1之间
# 适用于分布有边界的i情况,受outlier影响较大

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(X_train)
# 归一化
X_train = scaler.transform(X_train)
X_test_standard = scaler.transform(X_test)
#2.均值方差归一化:把所有数据归一到均值为0方差为1的分布中
# 适用于数据分布没有明显的边界;有可能存在极端数据值

from sklearn.preprocessing import StandardScaler

standardScalar = StandardScaler()
standardScalar.fit(X_train)
# 均值
standardScalar.mean_
# 方差
standardScalar.scale_
# 归一化
X_train = standardScalar.transform(X_train)
X_test_standard = standardScalar.transform(X_test)
# 再用knn传入时:
knn_clf.score(X_test_standard, y_test)



'''
K近邻方法缺点:
⾼高度数据相关
预测结果不不具有可解释性
维数灾难
'''
# KNN做 回归 ->KNN Regressor
from sklearn.neighbors import KNeighborsRegressor

knn_reg = KNeighborsRegressor()
knn_reg.fit(X_train_standard, y_train)
knn_reg.score(X_test_standard, y_test)
# 超参数
from sklearn.model_selection import GridSearchCV

param_grid = [
{
"weights": ["uniform"],
"n_neighbors": [i for i in range(1, 11)]
},
{
"weights": ["distance"],
"n_neighbors": [i for i in range(1, 11)],
"p": [i for i in range(1,6)]
}
]

knn_reg = KNeighborsRegressor()
grid_search = GridSearchCV(knn_reg, param_grid, n_jobs=-1, verbose=1)
grid_search.fit(X_train_standard, y_train)
grid_search.best_params_
grid_search.best_score_

grid_searchgrid_sea .best_estimator_.score(X_test_standard, y_test)

 

标签:Knn,knn,search,clf,test,train,grid,归一化,网格化
From: https://blog.51cto.com/u_15955938/6039487

相关文章

  • 梯度归一化简介
    梯度归一化是一种解决深度神经网络中梯度消失/爆炸问题的技术。梯度消失/爆炸是指当神经网络比较深时,梯度的大小可能变得非常小或非常大,从而导致学习率变慢或者无法学习。......
  • 机器学习——k-近邻算法(KNN)、
    k-近邻算法(kNN),它的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新......
  • PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SV
    全文下载链接:http://tecdat.cn/?p=26219最近我们被客户要求撰写关于银行机器学习的研究报告,包括一些图形和统计输出。该数据与银行机构的直接营销活动相关,营销活动基于电......
  • 在使用KNN_cuda库中出现的问题小结
    什么是KNN_cuda​KNN_CUDA是一个用CUDA实现的计算k近邻搜索的项目。​KNN搜索是指通过计算query的向量和reference集合内的向量的相似度,并找出最相似的k个。......
  • Python酒店评论文本数据分析:tf-idf、贝叶斯、逻辑回归,支持向量机SVM、K最邻近算法KNN
    全文链接:http://tecdat.cn/?p=31233原文出处:拓端数据部落公众号分析师:YuanyuanZhang随着互联网的普及和移动端的应用的飞速发展,消费者在各大电商平台进行活动交易时产......
  • 归一化
    概念归一化就是把所有数据都转化成[0,1]或者[-1,1]之间的数,其目的是为了取消各维数据之间的数量级差别,避免因为输入输出数据数量级差别大而造成网络预测误差过大。好处......
  • kNN分类
    一、概述  kNN(knearestneighbor,k近邻)是一种基础分类算法,基于“物以类聚”的思想,将一个样本的类别归于它的邻近样本。二、算法描述1.基本原理  给定训练数据......
  • 多种归一化方法区别
    BatchNormalization简单的说,BN可以在不影响精度的情况下加速神经网络的训练收敛,具体的实现也比较简单,但是就可解释性来说依旧众说纷纭,有一个说法是加入了一定的噪音,因为......
  • 【大数据部落】R语言代写电信公司churn数据客户流失 k近邻(knn)模型预测分析
    电信公司churn数据客户流失k近邻(knn)模型预测分析 DatabackgroundAtelephonecompanyisinterestedindeterminingwhichcustomercharacter......
  • 36、RK3399Pro 环境搭建和Yolov5 c++调用opencv进行RKNN模型部署和使用
    基本思想:记录rk3399pro配置环境和c++npu开发记录,主要想搞一份c++代码和其它图像算法结合一下,好进行部署,淘宝链接见附录 需要的python3.7对应的aarch64的whl包:包含opencv......