【问题标题】:Sklearn GridSearchCV using Pandas DataFrame ColumnSklearn GridSearchCV 使用 Pandas DataFrame 列
【发布时间】:2016-07-27 05:49:51
【问题描述】:

我在 SGDClassifier(随机梯度下降分类器)上运行 Sklearn 库中的 GridSearchCV(网格搜索交叉验证)。我正在使用 Pandas 的 DataFrame 来获取功能和目标。这是代码:

from sklearn.grid_search import GridSearchCV
parameters = {'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 行 x 31 列的 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 行 x 1 列的 Pandas 系列,由以下命名:

['passed']

当我尝试 GridSearchCV 算法时,我收到以下错误声明:

IndexError: too many indices for array

【问题讨论】:

    标签: python pandas machine-learning scikit-learn grid-search


    【解决方案1】:

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

    • X_train=300x31 数据帧
    • y_train=300x1 系列有 2 个类别,0 和 1)。

    您的代码下方的 X_train 和 y_train 可以正常工作,因此问题可能出在数据本身上。

    import pandas as pd
    import numpy as np
    
    N = 300
    D = 31
    
    y_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 GridSearchCV
    from sklearn.linear_model import SGDClassifier
    parameters = {'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) 
    

    【讨论】:

      猜你喜欢
      • 2020-09-08
      • 2016-02-10
      • 2021-11-12
      • 1970-01-01
      • 2015-06-13
      • 2014-05-12
      • 2019-06-15
      • 2017-12-06
      • 2014-01-29
      相关资源
      最近更新 更多