使用Pandas DataFrame列进行Sklearn GridSearchCV

我正在使用Sklearn库中的GridSearchCV(网格搜索交叉验证)对SGDClassifier(随机梯度下降分类器)进行操作。我使用Pandas的DataFrame来处理特征和目标。以下是代码:

from sklearn.grid_search import GridSearchCVparameters = {'loss': [ 'hinge', 'log', 'modified_huber', 'squared_hinge', 'perceptron'], 'alpha': [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001], 'n_iter': list(np.arange(1,1001))}clf = GridSearchCV(estimator = SGDClassifier(), param_grid = parameters, scoring = 'f1')print(clf)clf.fit(X_train, y_train)

其中X_train是一个300行x31列的Pandas DataFrame,每列的名称如下:

['school', 'sex', 'age', 'address', 'famsize', 'Pstatus', 'Medu', 'Fedu', 'Mjob', 'Fjob', 'reason', 'guardian', 'traveltime', 'studytime', 'failures', 'schoolsup', 'famsup', 'paid', 'activities', 'nursery', 'higher', 'internet', 'romantic', 'famrel', 'freetime', 'goout', 'Dalc', 'Walc', 'health', 'absences']

而y_train是一个300行x1列的Pandas Series,名称如下:

['passed']

当我尝试运行GridSearchCV算法时,得到以下错误信息:

IndexError: too many indices for array

回答:

下面的代码准备了一个符合您定义的随机数据集:

  • X_train=300×31 DataFrame
  • y_train=300×1 Series,包含两个类别,0和1)。

使用下面的X_train和y_train,您的代码可以正常运行,因此问题可能出在数据本身。

import pandas as pdimport numpy as npN = 300D = 31y_train = pd.Series([0,1]*(N/2))X_train = np.matrix(y_train).T.repeat(D, axis=1) + np.random.normal(size=(N, D))X_train = pd.DataFrame(X_train)

确实,您提到DataFrame有31列,但您提供的列名列表只有30个元素。问题可能出在X_train的构建上。

(我已经用较少的参数进行了测试,以下是可复现的简化版本:)

from sklearn.grid_search import GridSearchCVfrom sklearn.linear_model import SGDClassifierparameters = {'loss': [ 'hinge', 'log', 'modified_huber', 'squared_hinge', 'perceptron'], 'alpha': [0.1, 0.01], 'n_iter': [1,2, 1000]}clf = GridSearchCV(estimator = SGDClassifier(), param_grid = parameters, scoring = 'f1')print(clf)clf.fit(X_train, y_train) 

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注