请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

使用逻辑回归时怎么利用网格搜索来查找degree,c等超参数

回答1 浏览1747 2018-06-03 17:18:02

老师,课上您说到如果在实际应用中逻辑回归的超参数是利用网格搜索来找的,我自己试了一下,下面是代码,您帮我看看哪里不对

#您课上举得例子
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(666)
X = np.random.normal(0, 1, size=(200, 2))
y = np.array((X[:,0]**2+X[:,1])<1.5, dtype='int')
for _ in range(20):
    y[np.random.randint(200)] = 1
#数据集分成训练数据集和测试数据集
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666)
#使用逻辑回归
from sklearn.linear_model import LogisticRegression
log_reg = LogisticRegression()
log_reg.fit(X_train, y_train)
log_reg.score(X_test, y_test)
##########这里已经能够看到SCORE是多少##############
#这里是重点,我想使用网格搜索来查找多项式回归和逻辑回归的超参数
C_PARM = [0.1,0.2,0.3,0.4,0.5]
param_grid = [
    {
        'degree': [i for i in range(1, 11)], 
        'C': [i for i in C_PARM]
    }
]
from sklearn.model_selection import GridSearchCV
grid_search = GridSearchCV(log_reg, param_grid)
grid_search.fit(X_train,y_train)  
#这一步进行fit的时候已经报错,我觉得是因为逻辑回归没有degree这个超参数
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

def PolynomialLogisticRegression(degree,C):
    return Pipeline([
        ('poly', PolynomialFeatures(degree=degree)),
        ('std_scaler', StandardScaler()),
        ('log_reg', LogisticRegression(C=C))
    ])
####老师,我最想表达的是怎么用网格搜索来搜索degree和C这两个超参数,让其跟后面的pipeline一起使用





该问题答案只有购买此课程才可进行查看~

Python3入门机器学习 经典算法与应用

难度中级
时长25小时
人数3396
好评度100%

Python3+sklearn,同时兼顾原理,算法底层实现和框架使用。零基础机器学习从此起步

讲师

liuyubobobo 全栈工程师

创业者,全栈工程师,持续学习者。对技术开发,产品设计、前后端,ios,html5,智能算法等领域均有接触;拥有多款独立App作品;对一切可编程的东西有浓厚兴趣,对游戏编程格外感兴趣。相信编程改变一切。

意见反馈 帮助中心 APP下载
官方微信