我在做多元回归问题。我有如下数据集。
rank--discipline--yrs.since.phd--yrs.service--sex--salary
[ 1 1 19 18 1 139750],......
我把工资作为因变量,其他变量作为自变量。在做了数据预处理之后,我运行了梯度下降、回归模型。我估计了所有独立特征的偏差(截距)和系数。我想做实际值的散点图和我预测的假设的回归线。因为我们这里有不止一个功能,
我有以下问题。
>
在绘制回归线时,特征值是多少,这样我就可以计算假设值。?意思是现在,我有截距和所有特征的权重,但是我没有特征值。我现在如何决定特征值?
我想计算点数,并使用矩阵图来完成工作。我知道外面有很多工具可以使用,包括matplotlib来完成这项工作。但是我想得到基本的了解。
谢谢。
你能做的就是-
from pandas import plotting as pdplt
pdplt.scatter_matrix(dataframe, pass the remaining required parameters)
通过这一点,您将得到一个图矩阵(在您的例子中是6X6),它将准确地显示数据帧中的每一列与其他列之间的关系,并且您可以清楚地可视化哪个特性主导结果,以及这些特性如何相互关联。如果你问我,这是我用来处理此类问题的第一件事,然后删除所有相关特征,选择最接近输出的特征。
但是,当你必须绘制一个2d图时,在上面的方法中,你可能会得到不止一个控制输出的特征,那么你能做的就是一个名为PCA的奇迹。如果你问我PCA是机器学习中最美丽的东西之一。它将以某种神奇的比例将您的所有数据合并在一起,从而为您的数据生成主要组件。主成分是那些对模型起支配/主要作用的成分。只需从sklearn导入,然后选择第一个主分量(因为需要2d绘图),或者选择两个主分量并绘制3d图形,即可应用pca。但请始终记住,这些主要组件不是模型的真正特征,但它们是一些神奇的组合,PCA是如何做到这一点的非常有趣(通过使用特征值和向量等概念),您也可以自己构建。
除此之外,你还可以将奇异值分解(SVD)应用到你的模型中,这是整个线性代数的本质,它是一种存在于所有矩阵中的矩阵分解。这样做是把你的矩阵分解成三个矩阵,其中对角线矩阵由奇异值(缩放因子)按降序排列,你要做的是选择顶部的奇异值(在你的情况下,只有第一个具有最高值大小),并构造一个从5列到1列的特征矩阵,然后绘制。你可以用numpy.linalg做svd
一旦你应用了这些方法中的任何一种,你所能做的就是仅用一个最重要的特征来学习你的假设,并最终绘制出图表。但是有一个提示,仅仅为了绘制一个2d图形,你应该避免其他重要的特征,因为可能你有三个主成分,它们的贡献几乎相同,并且可能前三个奇异值彼此非常接近。因此,考虑我的话,并考虑所有重要的特征,如果你需要这些重要特征的可视化,那么使用散射矩阵
总结-
我想说的是,你可以对所有这些东西做同样的处理,也可以发明你自己的统计或数学模型来压缩你的特征空间。但对我来说,我更喜欢使用PCA,在这类问题中,我甚至首先绘制散射矩阵,以获得数据的直观性。PCA和SVD也有助于消除冗余,从而消除过度拟合。
其余细节请参考文档。
快乐的机器学习...
我仍然不确定我是否完全理解你的问题,所以如果有些事情不是你所期望的,请在下面评论,我们会解决的。
现在,
问题1:在您的所有数据集中,您将有多个输入,并且无法查看目标变量工资
。在您的情况下,在单个图形中,通常要做的是使用t-sne
(链接)对数据应用降维概念或者使用主成分分析(PCA)来降低数据的维数,并将输出作为两个或三个变量的函数,然后在屏幕上绘制,我更喜欢的另一种技术是将目标
与每个变量分别绘制为子图,原因是我们甚至没有办法理解我们如何看待三维以上的数据。
问题2:如果你没有决心使用matplotlib,我会建议
seaborn.regplot()
,但是让我们也在matplotlib中这样做。假设你想首先使用的变量是“纪律”和“工资”。
from sklearn.linear_model import LinearRegression
lm = LinearRegression()
X = df[['discipline']]
Y = df['salary']
lm.fit(X,Y)
运行这个
lm.coef_< /code>会给你系数,
lm.intercept_< /code>会给你截距,在形成这个变量的线性方程中,然后你可以使用matplotlib轻松绘制两个变量和一行之间的数据。
我对机器学习算法不熟悉,对统计学知识了解不多。我知道这个例子可能不能给你正确的体积预测。然而,让我们考虑我有两个功能和来预测音量。这是样本数据 让我们假设股票是“趋势股票”,在第四天和第五天,股票价值正在上升。我想预测剩余时间框架的音量。在这种情况下,线性回归如何计算数量的产出值?
我想用python计算多元线性回归。我找到了这个简单线性回归的代码 a是系数,但我不明白是什么意思? 如何更改代码以获得多重线性回归?
我试图拟合在库中实现的线性回归模型。 我对方法有疑问。假设我有大小为15的数据样本,我将其分为3部分,并拟合模型。调用每个将正确拟合模型或覆盖以前的值。
多元线性回归模型 方程:Y=Xβ 求解多元线性回归问题就是求解β: 因为X不一定是方阵,所以不能直接β=X-1Y 两边同时乘以Xt,得到XtY=XtXβ 因为XtX是方阵,它的逆是(XtX)-1,所以两边同时乘(XtX)-1得到 (XtX)-1XtY=β 根据这个公式,我们自己设计一个例子,验证一下 设计二元一次方程:y=1+2x1+3x2 取样本为(1,1,1),(1,1,2),(1,2,1)
我试图训练一个非常简单的线性回归模型。 我的代码是: 我得到以下错误: 我的输入有什么问题?我试过用几种方法改变的结构,但都没有效果。
我有困难得到的线性回归中的加权数组来影响输出。 这里有一个没有加权的例子。 现在,当添加重量时,我得到了相同的最佳拟合线。我希望看到回归有利于曲线的陡峭部分。我做错了什么?