栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

sklearn代码5 5-KNN参数的筛选

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sklearn代码5 5-KNN参数的筛选

import numpy as np

from sklearn.neighbors import KNeighborsClassifier

from sklearn import datasets

# model_selection:模型选择
# cross_val_score:交叉 validation:验证
# 交叉验证
from sklearn.model_selection import cross_val_score
导包加载数据
X,y = datasets.load_iris(True)

X.shape
(150, 4)
150**0.5    # 样本数量的开平方

# K值选择时从1到13  大概是其开平方的数值,只是用于参考
12.24744871391589
cross_val_score交叉验证筛选最合适的参数
knn = KNeighborsClassifier()
score = cross_val_score(knn,X,y,scoring='accuracy',cv= 10)  #训练了10次
score.mean()
0.96666666666666679
应用cross_val_score筛选最合适的邻居数量
errors = []  #误差
for k in range(1,14):
    knn = KNeighborsClassifier(n_neighbors=k)
    
    score = cross_val_score(knn,X,y,scoring='accuracy',cv=6).mean()  # 越接近于1越好
    
#     误差越小 说明K选择越合适
    errors.append(1-score)
import matplotlib.pyplot as plt
%matplotlib inline

# k=11时,误差最小,说明K =  11对此案例来说是最合适的K值
plt.plot(np.arange(1,14),errors)
[]

weights = ['uniform','distance']

for w in weights:
    knn = KNeighborsClassifier(n_neighbors= 11, weights= w)
    
    print(w,cross_val_score(knn,X,y,scoring='accuracy',cv = 6).mean())
uniform 0.980709876543
distance 0.979938271605
多参数组合使用cross_val_score筛选最合适的组合参数 模型如何调参的 ,参数调节
result = {}
for k in range(1,14):
    for w in weights:
        knn = KNeighborsClassifier(n_neighbors=k,weights=w)
        sm = cross_val_score(knn,X,y,scoring='accuracy',cv=6).mean()
        result[w+str(k)] =sm
result
{'distance1': 0.95910493827160492,
 'distance10': 0.97299382716049376,
 'distance11': 0.97993827160493829,
 'distance12': 0.97993827160493829,
 'distance13': 0.97299382716049376,
 'distance2': 0.95910493827160492,
 'distance3': 0.96604938271604934,
 'distance4': 0.96604938271604934,
 'distance5': 0.96604938271604934,
 'distance6': 0.97299382716049376,
 'distance7': 0.97299382716049376,
 'distance8': 0.97299382716049376,
 'distance9': 0.97299382716049376,
 'uniform1': 0.95910493827160492,
 'uniform10': 0.97299382716049376,
 'uniform11': 0.98070987654320996,
 'uniform12': 0.97376543209876543,
 'uniform13': 0.97376543209876543,
 'uniform2': 0.93904320987654311,
 'uniform3': 0.96604938271604934,
 'uniform4': 0.96604938271604934,
 'uniform5': 0.96604938271604934,
 'uniform6': 0.97299382716049376,
 'uniform7': 0.97299382716049376,
 'uniform8': 0.95910493827160492,
 'uniform9': 0.96604938271604934}
np.array(list(result.values())).argmax()
20
list(result)[20]
'uniform11'
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/355516.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号