Scikit learn 使用回归-区分两个数据帧列,一个是线性的,另一个是多项式函数?

Scikit learn 使用回归-区分两个数据帧列,一个是线性的,另一个是多项式函数?,scikit-learn,linear-regression,statsmodels,Scikit Learn,Linear Regression,Statsmodels,在具有6列(a B C D E F)的数据帧中,来自列E或F的一列是前4列的线性组合,具有不同的系数,而另一列是相同输入的多项式函数。 找出哪列是线性函数,哪列是多项式函数 从dataframe提供30个样本(总共512行) 对(总共512行)执行线性回归 列A B C D作为输入,列E作为目标值。 输出- 截距[-2.67164069e-12] 系数[[2.3.-1.-4.] 列A B C D作为输入,列F作为目标值。 输出- 截距[0.32815962] 系数[[1.01293825-1.

在具有6列(a B C D E F)的数据帧中,来自列E或F的一列是前4列的线性组合,具有不同的系数,而另一列是相同输入的多项式函数。 找出哪列是线性函数,哪列是多项式函数

从dataframe提供30个样本(总共512行)

对(总共512行)执行线性回归
列A B C D作为输入,列E作为目标值。
输出-
截距[-2.67164069e-12]
系数[[2.3.-1.-4.]

列A B C D作为输入,列F作为目标值。
输出-
截距[0.32815962]
系数[[1.01293825-1.0003835 1.00503772-1.01765453]]

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression

For column E
x = df.iloc[:, :4].values
y = df.iloc[:, [4]].values

regressor = LinearRegression()
regressor.fit(x, y)
print(regressor.intercept_)
print(regressor.coef_)

output
[-2.67164069e-12]
[[ 2.  3. -1. -4.]]

For column F
x_new = df.iloc[:, :4].values
y_new = df.iloc[:, [5]].values

regressor_new = LinearRegression()
regressor_new.fit(x_new, y_new)
print(regressor_new.intercept_)
print(regressor_new.coef_)

output
[0.32815962]
[[ 1.01293825 -1.0003835   1.00503772 -1.01765453]]
两列中的一列是前4列的线性组合,具有不同的系数,而另一列是相同输入的多项式函数


提到哪一列是线性函数,哪一列是多项式。

我认为可以通过检查列之间的多重共线性来找到具有线性组合的列。因此,剩余柱的线性组合柱将具有较高的VIF。

我认为可以通过检查柱之间的多重共线性来找到线性组合柱。因此,剩余列的线性组合列将具有较高的VIF。

尝试绘制两列的图形(直方图),看看是否可以根据图形将函数识别为线性或多项式。

尝试绘制两列的图形(直方图),看看你是否能根据图表将函数识别为线性或多项式。

这是学校作业吗?不完全是,这是实习任务。这是学校作业吗?不完全是,这是实习任务。我计算了两列的VIF。对于E列,当R平方为1时,VIF为“无穷大”;对于F列,当R平方为0.99998666时,VIF为88221.79。那么,两列都是输入列的线性组合?不,这意味着两列高度相关。对不起,我原以为会有用的。你检查过这些列的散点图了吗?也许你可以找到模式。你可以使用seaborn pairplot。我也尝试了pairplot,我无法理解任何可以区分线性函数和多项式函数的相关性。我计算了两列的VIF。对于E列,当R平方为1时,VIF为“无穷大”;对于F列,当R平方为0.99998666时,VIF为88221.79。那么,两列都是输入列的线性组合?不,这意味着两列高度相关。对不起,我原以为会有用的。你检查过这些列的散点图了吗?也许你能找到模式。你可以使用seaborn pairplot。我也试过pairplot,我无法理解任何可以区分线性函数和多项式函数的相关性。
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression

For column E
x = df.iloc[:, :4].values
y = df.iloc[:, [4]].values

regressor = LinearRegression()
regressor.fit(x, y)
print(regressor.intercept_)
print(regressor.coef_)

output
[-2.67164069e-12]
[[ 2.  3. -1. -4.]]

For column F
x_new = df.iloc[:, :4].values
y_new = df.iloc[:, [5]].values

regressor_new = LinearRegression()
regressor_new.fit(x_new, y_new)
print(regressor_new.intercept_)
print(regressor_new.coef_)

output
[0.32815962]
[[ 1.01293825 -1.0003835   1.00503772 -1.01765453]]