sklearn.model_selection中的GridSearchCV(自适应模型库)

今天想要简单的应用一下,svr模型做一下支持向量机的回归,然后突然发现了这个宝贝函数。

官网文档如下:https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html

class sklearn.model_selection.GridSearchCV(estimator, param_grid, scoring=None,
 fit_params=None, n_jobs=None, iid=’warn’, refit=True, cv=’warn’, 
verbose=0, pre_dispatch=‘2*n_jobs’, error_score=’raise-deprecating’, return_train_score=’warn’)

(1)estimator:sklearn 里面封装的模型

(2)param_grid:值为字典或者列表,字典里面的键代表estimator模型中的可以设置的参数,值是GridSearchCV要去遍历优化的具体值。

比如具体的GridSearchCV 函数结构如下:

svr = GridSearchCV(SVR(), param_grid={"kernel": ("linear", 'rbf'),\
      "C": np.logspace(-3, 3, 7), "gamma": np.logspace(-3, 3, 7)})

第一个参数是建立的SVR模型(estimator);

第二个参数是SVR()模型中,允许的参数。

kernel(核函数):linear(线性核)、rbf(径向基核)

C(惩罚系数):设置范围为从1.e-03到1.e+03的等比数列,共7个数

gamma(核系数):同上

SVR()详细参数可见:

https://blog.csdn.net/qq_24852439/article/details/85305317

(3) scoring:模型评价方法,也是按照上面参数的方法,给定一个列表或者字典形式。评价方法可以参照 sklearn里面的metric

(4) fit_params:在0.21里面被抛弃了,不介绍了

(5)n_jobs:并行数。默认值为:1。-1的时候运行你所有的CPU核

(6)就先到这把....

       然后就是把训练集扔进去。

svr.fit(x_train, y_train) #训练
y_pred = svr.predict(x_test)   #测试集测试
sigma = metrics.mean_squared_error(y_test, y_pred) #计算均方差
print(sigma)
print('the best patams is{}'.format(svr.best_params_))

然后就会看见这样的效果,

第一个就是 均方差(效果不好,是我数据集本身的原因)

第二个就是在我设定所有SVR参数中,使得模型训练效果最好的参数的输出。

这样感觉省略了很多调参的过程,直接把最好的都给你了,你也不用费劲的去写了。

原来做SVM的时候,为了想要改变kernel,还要写个list,每次用循环传进去,比如下面这样,然后用一个指标去评价不同的kernel的好坏。

kernel_class = ['linear', 'poly', 'rbf', 'sigmoid']

def train_SVC(x_train, x_test, y_train, y_test,kernel_class):
    model = SVC(kernel = kernel_class) #建立模型,设置相应模型参数
    model.fit(x_train, y_train)  #调用fit训练
    y_pred = model.predict(x_test)   #测试集测试 
    print(y_pred)
    acc = metrics.accuracy_score(y_test, y_pred) #计算模型准确率
    return acc 

for i in kernel_class: 
        print('class:{}'.format(i))
        acc = train_SVC(x_train, x_test, y_train, y_test,i)#存精确度
        print(acc)

 

参考:http://www.cnblogs.com/zinyy/p/9535069.html

好的,根据您的要求,我可以为您提供一个简单的实现,具体如下: 1. 预测模型选择 我们选择使用XGBoost算法进行预测。XGBoost是一种基于决策树的集成学习算法,能够自适应地学习每个样本的权重,同时具有较好的泛化能力和处理高维数据的能力。 2. 训练集和测试集的划分 我们可以使用sklearn的train_test_split方法将train_price.csv划分成训练样本和测试样本。在划分过程,我们将random_state参数设置为您的学号后四位。 ``` python from sklearn.model_selection import train_test_split # 读取数据集 data = pd.read_csv("train_price.csv", encoding="gbk") # 筛选微型车样本 data = data[data["bodyType"] == "微型车"] # 划分数据集 train_data, test_data = train_test_split(data, test_size=0.3, random_state=1234) ``` 3. 筛选样本 根据您的要求,我们只需要筛选训练样本车身类型(bodyType字段)为“微型车”的样本进行训练。在上面的代码,我们首先读取整个数据集,然后筛选出车身类型为微型车的样本。接着,我们将数据集划分为训练集和测试集。 4. 模型训练与评估 在模型训练过程,我们需要选择合适的特征作为模型的输入变量,并将价格(price)作为模型的输出变量。在本例,我们选择使用车龄(age)、公里数(kilometer)、排量(power)和变速器(gearbox)等特征作为输入变量。 ``` python import xgboost as xgb from sklearn.metrics import r2_score # 特征选择 features = ["age", "kilometer", "power", "gearbox"] # 建立XGBoost回归模型 model = xgb.XGBRegressor(n_estimators=100, max_depth=5, learning_rate=0.1, random_state=1234) # 模型训练 model.fit(train_data[features], train_data["price"]) # 模型预测 pred = model.predict(test_data[features]) # 模型评估 score = r2_score(test_data["price"], pred) print("R2 Score:", score) ``` 在上面的代码,我们使用XGBoost回归模型进行训练,并使用测试集进行模型预测和评估。在评估过程,我们使用R2指标来评估模型的预测效果。运行上面的代码后,您将会得到模型在测试集上的R2得分。 希望以上代码可以为您提供一些帮助。如果您有任何问题或需要更多帮助,请随时告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Foneone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值