【问题标题】:Turning a Pandas Dataframe to an array and evaluate Multiple Linear Regression Model将 Pandas 数据框转换为数组并评估多元线性回归模型
【发布时间】:2015-04-04 17:24:32
【问题描述】:

我正在尝试评估多元线性回归模型。我有一个这样的数据集:

这个数据集有 157 行 * 54 列。

我需要从文章中预测 ground_truth 值。我将在 en_Amantadineen_Common 之间添加我的多重线性模型 7 文章。

我有多元线性回归的代码:

from sklearn.linear_model import LinearRegression
X = [[6, 2], [8, 1], [10, 0], [14, 2], [18, 0]] // need to modify for my problem
y = [[7],[9],[13],[17.5], [18]] // need to modify
model = LinearRegression()
model.fit(X, y)

我的问题是,我无法从 DataFrame 中提取 Xy 变量的数据。在我的代码中 X 应该是:

X = [[4984, 94, 2837, 857, 356, 1678, 29901],
     [4428, 101, 4245, 906, 477, 2313, 34176],
      ....
     ]
y = [[3.135999], [2.53356] ....]

我无法将 DataFrame 转换为这种类型的结构。 我怎样才能做到这一点 ?

感谢任何帮助。

【问题讨论】:

    标签: python numpy pandas machine-learning


    【解决方案1】:

    您可以直接在数据框对象上使用as_matrix 方法将数据框转换为矩阵。您可能需要指定您对X=df[['x1','x2','X3']].as_matrix() 感兴趣的列,其中不同的 x 是列名。

    对于 y 变量,您可以使用y = df['ground_truth'].values 来获取数组。

    以下是一些随机生成数据的示例:

    import numpy as np
    #create a 5X5 dataframe
    df = pd.DataFrame(np.random.random_integers(0, 100, (5, 5)), columns = ['X1','X2','X3','X4','y'])
    

    df 上调用as_matrix() 会返回一个numpy.ndarray 对象

    X = df[['X1','X2','X3','X4']].as_matrix()
    

    调用values会从熊猫series返回numpy.ndarray

    y =df['y'].values
    

    注意:您可能会收到一条警告:FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.

    要修复它,请使用values 而不是as_matrix,如下所示

    X = df[['X1','X2','X3','X4']].values
    

    【讨论】:

    • 我编辑了我的问题,似乎有问题。可以帮忙吗?
    • 如果您只想获得一列并且您知道该列。你可以这样使用它 -> Y = df['column_name'].as_matrix()
    • 从 pandas 0.23 开始,as_matrix() 已被弃用,值应适用于 Series 和 DataFrame。
    【解决方案2】:
    y = broken_df.ground_truth.values
    X = broken_df.drop('ground_truth', axis=1).values
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
    linreg = LinearRegression()
    linreg.fit(X_train, y_train)
    y_pred = linreg.predict(X_test)
    print(linreg.score(X_test, y_test)
    print(classification_report(y_test, y_pred))
    

    【讨论】:

    • 您的回答中没有提到DataFrame
    猜你喜欢
    • 2020-01-28
    • 2014-08-26
    • 2017-02-19
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    相关资源
    最近更新 更多