多项式回归改进版线性回归。如果您知道线性回归,那对您来说很容易。如果没有,我将在本文中解释公式。还有其他更先进、更有效的机器学习算法。但是,学习基于线性的回归技术是个好主意。因为它们简单、快速并且使用众所周知的公式。虽然它可能不适合复杂的数据集。多项式回归公式线性回归只有在输入和输出变量之间存在线性相关时才会表现良好。如前所述,多项式回归建立在线性回归之上。如果您需要线性回归的基础知识,请访问线性回归:Python中的线性回归算法学习线性回归的概念并从头开始在Python中开发一个完整的线性回归算法多项式回归可以更好地找到输入特征和输出变量之间的关系,即使关系不是线性的。它使用与线性回归相同的公式:Y=BX+C我相信我们都在学校学过这个公式。对于线性回归,我们使用如下符号:这里我们从数据集中得到X和Y。X是输入特征,Y是输出变量。Theta值是随机初始化的。对于多项式回归,公式如下所示:我们在此处添加更多项。我们使用相同的输入函数并取不同的指数来制作更多的函数。这样,我们的算法将能够更好地理解数据。幂不必是2、3或4。它们也可以是1/2、1/3或1/4。公式将如下所示:成本函数和梯度下降成本函数给出了预测假设与值之间的距离。公式是:这个等式可能看起来很复杂。它正在做一个简单的计算。首先,从原始输出变量中减去假设。平方消除负值。然后将此值除以训练示例数的2倍。什么是梯度下降?它有助于微调我们随机初始化的theta值。我不打算在这里做微积分。如果我们对每个θ取成本函数的偏微分,我们得到以下公式:这里,alpha是学习率。您选择alpha的值。多项式回归的Python实现这是多项式回归的逐步实现。(1)在这个例子中,我们将使用一个简单的虚拟数据集来提供工作的薪水数据。导入数据集:importpandasapdimportnumpyasnpdf=pd.read_csv('position_salaries.csv')df.head()(2)添加theta0的bias列。bias列只会包含1s。因为如果你将1乘以一个数字,它不会改变。df=pd.concat([pd.Series(1,index=df.index,name='00'),df],axis=1)df.head()(3)删除“位置”列。由于“位置”列中有一个字符串,而算法无法理解该字符串。我们有“级别”列来表示位置。dfdf=df.drop(columns='Position')(4)定义了我们的输入变量X和输出变量y。在此示例中,“level”是输入特征,“salary”是输出变量。我们想要预测不同级别的薪水。y=df['Salary']X=df.drop(columns='Salary')X.head()(5)根据“Level”列的索引,创建“Level1”和“Level2”列。X['Level1']=X['Level']**2X['Level2']=X['Level']**3X.head()(6)现在,规范化数据。将每列除以该列的最大值。这样,我们将获得每一列的值,范围从0到1。即使没有归一化,该算法也应该可以工作。但它有助于更??快地收敛。同样,计算m的值,即数据集的长度。m=len(X)XX=X/X.max()(7)定义假设函数。这将使用X和theta来预测“y”。defhypothesis(X,theta):y1=theta*Xreturnp.sum(y1,axis=1)(8)使用上面的成本函数公式定义成本函数:defcost(X,y,theta):y1=hypothesis(X,theta)returnsum(np.sqrt((y1-y)**2))/(2*m)(9)写出梯度下降函数。我们将不断更新theta值,直到找到最佳成本。对于每次迭代,我们将计算成本以供将来分析。defgradientDescent(X,y,theta,alpha,epoch):J=[]k=0whilek
