通过使用Sciki-learn运行多元线性回归,我需要获得一个等式 Y = a + bX1 + cX2 + dX2 + eX3 + fX4 + gX5 其中b,c,d,e,f和g是每个自变量的系数。
我已经使用Scikit-learn进行了多个线性回归,其中包含3个类别变量(Cat V)和2个连续变量(Cont V)
Cat V 1 Cat V 2 Cat V 3 Cont V 1 Cont V 2
A C3 X2 208 3000
B C6 X4 256 4000
B C7 X5 275 2000
C C2 X1 508 3200
我已经使用列转换器对分类数据进行了编码,这导致了更多的列,因为每个分类变量具有10多个不同的类别。我用于执行此操作的代码如下
# Encoding categorical data
mct = make_column_transformer((OneHotEncoder(drop='first'), [0, 1, 2]), remainder = 'passthrough')
X = mct.fit_transform(X)
# Splitting the dataset into the Training set and Test set
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.2, random_state = 0)
# Fitting Multiple Linear Regression to the Training set
regressor = LinearRegression()
regressor.fit(X_train, y_train)
我使用[.coef_]函数和以下代码找到了每个变量的系数(编码后)
print(regressor.coef_)
问题是这样显示了在编码中拆分后的变量系数,如下所示
[ 1.80198679e-05 -5.55304459e-05 1.90462615e-03 -6.22320276e-05
1.17184589e-03 .... -2.33744077e-03 -1.91538011e-04
8.61626216e-11 3.73358813e-03]
我需要找到原始5个变量的5个系数。像
Cat V 1 Coefficient 1
Cat V 2 Coefficient 2
Cat V 3 Coefficient 3
Cont V 1 Coefficient 4
Cont V 2 Coefficient 5
可以这样做吗?
答案 0 :(得分:0)
线性回归意味着您要在y = f(x)或y = f(x1,x2 ..)中的f中搜索连续变量。该机制不适用于类别:它认为与类别相对应的变量可以在C2和C3,C3和C4等之间平滑变化。 当您创建多个列时,情况可能会变得更糟:现在您有更多的变量试图适应f()的形状-明白我的意思吗?想一想类别的单列,y = f(c);现在您有了y = f(c1,c2 ...),每个变量都不断变化,并以此方式将类别少量混合(您的系数为10 ^ -5、10 ^ -6等)。>
Logistic回归使用f()具有奇异形状(S型),其极限值为0和1,并且介于两者之间有一个斜率;它在Cx和Cy之间是连续的,但是突然跳变。它通常与此类问题相关。作为多层感知器的神经网络不过是用花哨的名字(如AI,神经等)修饰的回归而已。它能解决您的问题吗?这取决于-时期。但是通过运行这样的回归,调整参数和“学习”算法并使用热门主题词标记整个内容,发表了数十篇论文。
如果-并且仅当-从一种类别过渡到另一种类别时存在某种逻辑(假设某个对象可能处于中间状态),则可以将类别编码为数字。也许C1 = 1,C2 = 2,依此类推。最后,连续值可能表示变量近似匹配类别,或者都不是,只是简单地将变量扭曲得足以使f()最适合。输出y1,y2 ..您提供的。看,这里没有确定的答案。无论采取哪种方式,都是近似的。
您可能会尝试拟合另一条曲线(例如,抛物线,正弦曲线),而不是使用线性回归,但这带来了许多新问题。 MLP(感知器)是S形的总和,具有很好的近似能力(与抛物线,sin ...相比),因此对此很感兴趣。
然后是场景中的另一只野兽SVM(支持向量机);相同的基本思想,但您可以使用y = f(g(x))处理一些疯狂的g(),从而很容易找到f()。
另一个镜头,例如树状决策学习和基于案例的推理;可以使用带有weka插件的RapidMiner工具或weka本身来执行此操作。
简单的线性回归是一个复杂的问题-不是因为数学(可以用可怕的方式表示),而是因为数据周围的微妙之处以及它如何表示现实世界中的事物。而且..您比简单的线性回归要难得多(对这个坏消息感到抱歉)。希望您找到可接受的解决方案。