将 Pandas 数据框转换为数组并评估多元线性回归模型
Turning a Pandas Dataframe to an array and evaluate Multiple Linear Regression Model
我正在尝试评估多元线性回归模型。我有这样的数据集:
这个数据集有 157 行 * 54 列。
我需要预测文章的 ground_truth 价值。我将在 en_Amantadine 和 en_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 中提取 X 和 y 变量的数据。在我的代码中 X 应该是:
X = [[4984, 94, 2837, 857, 356, 1678, 29901],
[4428, 101, 4245, 906, 477, 2313, 34176],
....
]
y = [[3.135999], [2.53356] ....]
我无法将 DataFrame 转换为这种类型的结构。
我怎样才能做到这一点 ?
感谢任何帮助。
您可以直接在数据框对象上使用方法 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
returns numpy.ndarray
对象上调用 as_matrix()
X = df[['X1','X2','X3','X4']].as_matrix()
从 pandas series
调用 values
returns 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 = 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))
我正在尝试评估多元线性回归模型。我有这样的数据集:
这个数据集有 157 行 * 54 列。
我需要预测文章的 ground_truth 价值。我将在 en_Amantadine 和 en_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 中提取 X 和 y 变量的数据。在我的代码中 X 应该是:
X = [[4984, 94, 2837, 857, 356, 1678, 29901],
[4428, 101, 4245, 906, 477, 2313, 34176],
....
]
y = [[3.135999], [2.53356] ....]
我无法将 DataFrame 转换为这种类型的结构。 我怎样才能做到这一点 ?
感谢任何帮助。
您可以直接在数据框对象上使用方法 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
returns numpy.ndarray
对象上调用 as_matrix()
X = df[['X1','X2','X3','X4']].as_matrix()
从 pandas series
values
returns 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 = 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))