博客
关于我
10.寻找最好的超参数
阅读量:449 次
发布时间:2019-03-06

本文共 2376 字,大约阅读时间需要 7 分钟。

import numpy as npimport matplotlibimport matplotlib.pyplot as pltfrom sklearn import datasetsfrom sklearn.model_selection import train_test_splitfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.metrics import accuracy_score

1、获取数据

digits = datasets.load_digits()X = digits.datay = digits.target

2、分割数据,得到训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=666)

3、手动寻找

# def temp():    # knn_clf = KNeighborsClassifier(3)    # knn_clf.fit(X_train, y_train)    # y_predict = knn_clf.predict(X_test)    # accuracy_score(y_test, y_predict)    # # 寻找最好的k    # best_score = 0.0    # best_k = -1    # for k in range(1,11):    #     knn_clf = KNeighborsClassifier(k)    #     knn_clf.fit(X_train, y_train)    #     y_predict = knn_clf.predict(X_test)    #     score= accuracy_score(y_test, y_predict)    #     if score > best_score:    #         best_k = k    #         best_score = score    # print("best_k:", best_k)    # print("best_score:", best_score)    # # 考虑距离?不考虑距离?    # best_method = ""    # best_score = 0.0    # best_k = -1    # for method in ["uniform", "distance"]:    #     for k in range(1,11):    #         knn_clf = KNeighborsClassifier(n_neighbors=k, weights=method)    #         knn_clf.fit(X_train, y_train)    #         y_predict = knn_clf.predict(X_test)    #         score= accuracy_score(y_test, y_predict)    #         if score > best_score:    #             best_k = k    #             best_score = score    #             best_method = method    # print("best_k:", best_k)    # print("best_score:", best_score)    # print("best_method:", best_method)    # # # 探索明可夫斯基距离相应的p    # # 寻找最好的超参数 Grid Search

 

3、超参数配置

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)]    }]

4、实例化分类器

knn_clf = KNeighborsClassifier()

5、为分类器和超参数搭建模型

from sklearn.model_selection import GridSearchCVgrid_search = GridSearchCV(knn_clf, param_grid, n_jobs=-1, verbose=2)

6、实例化模型(多种参数配置的分类器)fit训练集

# 本质上是将训练集进一步分为训练集和测试集,得到最好的参数配置

# 因为要不断尝试各种参数交叉验证,所以非常耗时

grid_search.fit(X_train, y_train)

7、最终拿到最佳参数配置分类器 best_estimator_

knn_clf = grid_search.best_estimator_

8、使用最佳分类器对测试集预测

y_predict = knn_clf.predict(X_test)

9、打印准确率

print(accuracy_score(y_test, y_predict))

 

转载地址:http://iwubz.baihongyu.com/

你可能感兴趣的文章
深入学习Tesseract-ocr识别中文并训练字库的方法
查看>>
Python机器学习笔记:SVM(3)——证明SVM
查看>>
Python机器学习笔记:深入理解Keras中序贯模型和函数模型
查看>>
js编写动态时钟
查看>>
solr8.6添加中文分词器
查看>>
100_网络编程
查看>>
JavaSE总结
查看>>
030_http协议详解
查看>>
妈妈再也不担心我面试被Redis问得脸都绿了
查看>>
「MoreThanJava」机器指令到汇编再到高级编程语言
查看>>
「MoreThanJava」Day 6:面向对象进阶——多态
查看>>
SpringBoot技术栈搭建个人博客【后台开发】
查看>>
java设计模式学习(-)
查看>>
learn shell
查看>>
gradle中使用嵌入式(embedded) tomcat, debug 启动
查看>>
SpringMVC 参数注入
查看>>
centos安装memcached和PHP php-pecl-memcached.x86_64
查看>>
Consul安装使用
查看>>
crontab不能执行sudo:抱歉,您必须拥有一个终端来执行 sudo
查看>>
不要使用Integer做HashMap的key,尤其在json序列化的时候
查看>>