将Pandas Dataframe转换为数组并评估多元线性回归模型

Bat*_*dak 5 python numpy machine-learning pandas

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

在此输入图像描述

该数据集有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)
Run Code Online (Sandbox Code Playgroud)

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

X = [[4984, 94, 2837, 857, 356, 1678, 29901],
     [4428, 101, 4245, 906, 477, 2313, 34176],
      ....
     ]
y = [[3.135999], [2.53356] ....]
Run Code Online (Sandbox Code Playgroud)

我无法将DataFrame转换为此类结构.我怎样才能做到这一点 ?

任何帮助表示赞赏.

JAB*_*JAB 11

您可以as_matrix直接在dataframe对象上使用该方法将数据框转换为矩阵.您可能需要指定您感兴趣的列,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'])
Run Code Online (Sandbox Code Playgroud)

call as_matrix()on df返回一个numpy.ndarray对象

X = df[['X1','X2','X3','X4']].as_matrix()
Run Code Online (Sandbox Code Playgroud)

呼叫从熊猫中values返回anumpy.ndarrayseries

y =df['y'].values
Run Code Online (Sandbox Code Playgroud)

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

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

X = df[['X1','X2','X3','X4']].values
Run Code Online (Sandbox Code Playgroud)