Scikit Learn中的多元/多元线性回归?

18

我有一个数据集(dataTrain.csv和dataTest.csv)以.csv文件的格式呈现:

Temperature(K),Pressure(ATM),CompressibilityFactor(Z)
273.1,24.675,0.806677258
313.1,24.675,0.888394713
...,...,...

能够使用此代码构建回归模型并进行预测:

import pandas as pd
from sklearn import linear_model

dataTrain = pd.read_csv("dataTrain.csv")
dataTest = pd.read_csv("dataTest.csv")
# print df.head()

x_train = dataTrain['Temperature(K)'].reshape(-1,1)
y_train = dataTrain['CompressibilityFactor(Z)']

x_test = dataTest['Temperature(K)'].reshape(-1,1)
y_test = dataTest['CompressibilityFactor(Z)']

ols = linear_model.LinearRegression()
model = ols.fit(x_train, y_train)

print model.predict(x_test)[0:5]

然而,我想要做的是多变量回归分析。因此,模型将为压缩因子(Z) = 截距 + 系数*温度(K) + 系数*压力(ATM)

如何在scikit-learn中实现?


只需在xtrain和xtest中包含温度和压力即可。 x_train = dataTrain[["Temperature(K)", "Pressure(ATM)"]],然后对于x_test也是同样的操作。 - rtk22
2个回答

17

如果您在单变量上的代码可行,请尝试这个

import pandas as pd
from sklearn import linear_model

dataTrain = pd.read_csv("dataTrain.csv")
dataTest = pd.read_csv("dataTest.csv")
# print df.head()

x_train = dataTrain[['Temperature(K)', 'Pressure(ATM)']].to_numpy().reshape(-1,2)
y_train = dataTrain['CompressibilityFactor(Z)']

x_test = dataTest[['Temperature(K)', 'Pressure(ATM)']].to_numpy().reshape(-1,2)
y_test = dataTest['CompressibilityFactor(Z)']

ols = linear_model.LinearRegression()
model = ols.fit(x_train, y_train)

print model.predict(x_test)[0:5]

1
DataFrames没有reshape函数。要运行上面的代码,我必须首先使用values,例如x_train = dataTrain[['Temperature(K)', 'Pressure(ATM)']].values.reshape(-1,2) - Warren O'Neill

0

没错,你需要使用 .values.reshape(-1,2)

此外,如果你想知道表达式的系数和截距:

压缩因子(Z) = 截距 + 系数温度(K) + 系数压力(ATM)

你可以通过以下方式获取它们:

系数 = model.coef_
截距 = model.intercept_


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接