模型评估与优化

1.交叉验证法

在这里插入图片描述

from sklearn.model_selection import cross_val_score

svc=SVC(kernel='linear')
scores=cross_val_score(svc,x,y,cv=6)

2.随机拆分和挨个试试

from sklearn.model_selection import ShuffleSplit,cross_val_score,LeaveOneOut
shuffle_split=ShuffleSplit(test_size=.2 , train_size=.7,n_splits=10)
scores=cross_val_score(svc,wine.data,wine.target,cv=shuffle_split)

在这里插入图片描述

cv=LeaveOneOut()
scores=cross_val_score(svc,wine.data,wine.target,cv=cv)

3.网格优化----GridSearchCV

from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import Lasso

params={'alpha':[0.01,0.1,1.0,10],'max_iter':[100,1000,5000,10000]}
# lasso=SVC(kernel='linear')
lasso=Lasso()
# 网格搜索优化
grid=GridSearchCV(lasso,params,cv=6)
grid.fit(X_train,y_train)
print('{}'.format(grid.score(X_test,y_test)))
print('{}'.format(grid.best_params_))
print('{}'.format(grid.best_score_))

在这里插入图片描述

4.管道模型 sklearn.pipeline.Pipeline

params通过添加 "名字+__"形式进行调参。

from sklearn.datasets import make_blobs
from sklearn.model_selection import train_test_split,cross_val_score,GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPClassifier
from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestClassifier
import matplotlib.pyplot as plt
x,y=make_blobs(n_samples=200,centers=2,cluster_std=5)
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=1)
pipeline=Pipeline([('scaler',StandardScaler()),('mlp',MLPClassifier(
                                                                    # ,hidden_layer_sizes=1,alpha=1
                                                                    ))])
# params={'mlp__hidden_layer_sizes':[(50,),(100,),(100,100)],'mlp__alpha':[0.0001,0.001,0.01,0.1]}

params=[{'scaler':[None],'mlp':[RandomForestClassifier(random_state=1)],'mlp__n_estimators':[10,30,50]},
        {'scaler':[StandardScaler()],'mlp':[MLPClassifier(random_state=1)],
                                            'mlp__hidden_layer_sizes':[(100,),(10,10),(100,100)]
                      }]


grid=GridSearchCV(pipeline,params,cv=6)
# pipeline.fit(x_train,y_train)
# print('{}'.format(pipeline.score(x_test,y_test)))
grid.fit(x_train,y_train)
print('{}'.format(grid.score(x_test,y_test)))
print(grid.best_params_,grid.best_score_)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值