python - 转换目标变量时,“DataFrame”对象没有属性 'ravel'?

标签 python numpy logistic-regression sklearn-pandas

我正在用子集数据集拟合逻辑回归。拆分数据集并拟合模型后,我收到以下错误消息:

/Users/Eddie/anaconda/lib/python3.4/site-packages/sklearn/utils/validation.py:526: DataConversionWarning: 当需要一维数组时传递了列向量 y。请将 y 的形状更改为 (n_samples, ),例如使用 ravel()。 y = column_or_1d(y, warn=True)

所以我使用 target_newrdn = target_newrdn.ravel() 来修改我的目标变量,但它给了我这个:

AttributeError: 'DataFrame' 对象没有属性 'ravel'

我想知道问题出在哪里,我该如何解决?请问有人可以帮忙吗?

我的代码:

    from sklearn.datasets import fetch_covtype
    import numpy as np
    import pandas as pd

    from sklearn.utils import shuffle
    from sklearn.model_selection import train_test_split

    cov = fetch_covtype()
    cov_data = pd.DataFrame(cov.data)
    cov_target = pd.DataFrame(cov.target)

    data_newrdn = cov_data.head(n=10000)
    target_newrdn = cov_target.head(n=10000)


    target_newrdn = target_newrdn.ravel() ## I thought this could fix it??


    X_train2, X_test2, y_train2, y_test2 = train_test_split(data_newrdn, 
    target_newrdn, random_state=42)

    scaler.fit(X_train2)
    X_train_scaled2 = scaler.transform(X_train2)

    # Logistic Regression
    param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]}
    print(param_grid)
    grid = GridSearchCV(LogisticRegression(), param_grid, cv=kfold) 
    grid.fit(X_train_scaled2, y_train2)
    print("Best cross-validation score w/ kfold: 
    {:.2f}".format(grid.best_score_))
    print("Best parameters: ", grid.best_params_)

最佳答案

显然,dataframe 没有ravel 功能。尝试:

target_newrdn.values.ravel()

target_newrdn.values 返回一个 numpy ndarray,然后您对其执行 ravel。请注意,这将返回一个扁平化的 numpy 数组。您可能需要转换回数据框。

但我认为您需要 flatten(),因为它返回一个副本,因此如果您修改 ravel 返回的数组,它不会修改原始数组中的条目。

关于python - 转换目标变量时,“DataFrame”对象没有属性 'ravel'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48841624/

相关文章:

python - OpenCV错误-python中的Imread语句

python - 在 scikit 学习的多类逻辑回归中,哪些系数属于哪个类?

python - 没有预测器的 Sklearn 回归

java - 逻辑回归实现不起作用

javascript - 将数据传递给 Bootstrap 模态

Python 函数返回正确的结果但解释器返回奇怪的错误

python - 将程序转换为列表理解

python - 如何在 Kotlin 中获取 Python 的切片运算符

python - 从每列中删除零并使用 python pandas/numpy 重新排列

python - 如何使用一个函数或 for 循环导入大量 csv 数据文件?