Python机器学习入门——3.手动调参及网格搜索

#!/usr/bin/env python
# coding: utf-8

# In[1]:


import numpy as np
import pandas as np
from sklearn import datasets
iris=datasets.load_iris()


# In[2]:


X=iris.data
y=iris.target


# In[3]:


#分割训练集和测试集
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=6)


# In[4]:


#数据标准化
from sklearn.preprocessing import StandardScaler
standard=StandardScaler()
standard.fit(X_train)
std_X_train=standard.transform(X_train)
std_X_test=standard.transform(X_test)


# In[5]:


#knn算法模型进行训练
from sklearn.neighbors import KNeighborsClassifier
clf=KNeighborsClassifier(n_neighbors=5)
clf.fit(std_X_train,y_train)


# In[6]:


#模型测试得分
clf.score(std_X_test,y_test)


# In[7]:


#手动调参方法
#对多个参数进行测试,选择得分最高的参数用于最终参数的选择和模型训练
best_score=0
for weight in ['uniform','distance']:
    for i in range(1,10):
        clf=KNeighborsClassifier(n_neighbors=i,weights=weight)
        clf.fit(std_X_train,y_train)
        if clf.score(std_X_test,y_test)>best_score:
            best_score=clf.score(std_X_test,y_test)
            best_weight=weight
            best_n_neighbors=i
best_score


# In[8]:


best_weight


# In[9]:


best_n_neighbors


# In[10]:


#sklearn中内置网格搜索的调参方法调用
from sklearn.model_selection import GridSearchCV
clf=KNeighborsClassifier()

#需要调节的参数设置
param_grid=[{
     
    'n_neighbors':[i for i in range(1,10)],
    'weights':['uniform','distance']
       }]


# In[11]:


#clf选用模型
#param_grid调节参数
#cv交叉验证分割数
gs_clf=GridSearchCV(clf,param_grid=param_grid,cv=5)
gs_clf.fit(std_X_train,y_train)


# In[12]:


#最优模型
gs_clf.best_estimator_


# In[13]:


#最优得分
gs_clf.best_score_


# In[14]:


#最优参数
gs_clf.best_params_


# In[15]:


#最优模型下的对测试集的预测值
gs_clf.best_estimator_.predict(std_X_test)


# In[16]:


#最优模型下的对测试集的得分
gs_clf.best_estimator_.score(std_X_test,y_test)


你可能感兴趣的:(Python入门学习笔记)