线性回归的改进版本中的多项式回归。如果您知道线性回归,那么对您来说很简单。如果没有,我将在本文中解释这些公式。

线性回归的改善版别中的多项式回归。假如您知道线性回归,那么对您来说很简略。假如没有,我将在本文中解说这些公式。还有其他先进且更有用的机器学习算法。可是,学习依据线性的回归技能是一个好主意。因为它们简略,快速而且能够运用众所周知的公式。虽然它或许不适用于杂乱的数据集。

 免费Python机器学习课程三:多项式回归(多项式回归 python) Python 机器学习 多项式回归 第1张

多项式回归公式

仅当输入变量和输出变量之间存在线性相关性时,线性回归才干很好地履行。如前所述,多项式回归建立在线性回归的根底上。假如您需求线性回归的根底知识,请拜访线性回归:

Python中的线性回归算法

学习线性回归的概念并从头开端在Python中开发完好的线性回归算法

多项式回归能够更好地找到输入要素与输出变量之间的联系,即便该联系不是线性的。它运用与线性回归相同的公式:

Y = BX + C

我敢肯定,咱们都在校园学过这个公式。关于线性回归,咱们运用如下符号:

免费Python机器学习课程三:多项式回归(多项式回归 python)  Python 机器学习 多项式回归 第2张

在这儿,咱们从数据会集取得X和Y。X是输入要素,Y是输出变量。Theta值是随机初始化的。

关于多项式回归,公式如下所示:

免费Python机器学习课程三:多项式回归(多项式回归 python)  Python 机器学习 多项式回归 第3张

咱们在这儿增加更多术语。咱们运用相同的输入功用,并选用不同的指数以制造更多功用。这样,咱们的算法将能够更好地了解数据。

幂不用为2、3或4。它们也可认为1 / 2、1 / 3或1/4。然后,公式将如下所示:

免费Python机器学习课程三:多项式回归(多项式回归 python)  Python 机器学习 多项式回归 第4张

本钱函数和梯度下降

本钱函数给出了猜测假定与值之间的间隔的概念。公式为:

免费Python机器学习课程三:多项式回归(多项式回归 python)  Python 机器学习 多项式回归 第5张

这个方程或许看起来很杂乱。它正在做一个简略的核算。首要,从原始输出变量中减去假定。取平方消除负值。然后将该值除以练习示例数量的2倍。

什么是梯度下降?它有助于微调咱们随机初始化的theta值。我不打算在这儿进行微积分。假如对每个θ取本钱函数的偏微分,则能够得出以下公式:

免费Python机器学习课程三:多项式回归(多项式回归 python)  Python 机器学习 多项式回归 第6张

在这儿,alpha是学习率。您挑选alpha的值。

多项式回归的Python完成

这是多项式回归的逐渐完成。

(1) 在此示例中,咱们将运用一个简略的虚拟数据集,该数据集供给职位的薪水数据。导入数据集:

  1. importpandasaspd
  2. importnumpyasnp
  3. df=pd.read_csv('position_salaries.csv')
  4. df.head()
免费Python机器学习课程三:多项式回归(多项式回归 python)  Python 机器学习 多项式回归 第7张

(2) 增加theta 0的误差列。该误差列将仅包括1。因为假如将1乘以数字,则它不会改动。

  1. df=pd.concat([pd.Series(1,index=df.index,name='00'),df],axis=1)
  2. df.head()
免费Python机器学习课程三:多项式回归(多项式回归 python)  Python 机器学习 多项式回归 第8张

(3) 删去"方位"列。因为"方位"列中包括字符串,而且算法无法了解字符串。咱们有"等级"列来代表职位。

  1. dfdf=df.drop(columns='Position')

(4) 界说咱们的输入变量X和输出变量y。在此示例中,"等级"是输入功用,而"薪水"是输出变量。咱们要猜测各个等级的薪水。

  1. y=df['Salary']X=df.drop(columns='Salary')
  2. X.head()
免费Python机器学习课程三:多项式回归(多项式回归 python)  Python 机器学习 多项式回归 第9张

(5) 以"等级"列的指数为根底,创立"等级1"和"等级2"列。

  1. X['Level1']=X['Level']**2
  2. X['Level2']=X['Level']**3
  3. X.head()
免费Python机器学习课程三:多项式回归(多项式回归 python)  Python 机器学习 多项式回归 第10张

(6) 现在,标准化数据。用每一列除以该列的最大值。这样,咱们将取得每列的值,规模从0到1。即便没有规范化,该算法也应该起作用。但这有助于收敛更快。相同,核算m的值,它是数据集的长度。

  1. m=len(X)
  2. XX=X/X.max()

(7) 界说假定函数。这将运用X和theta来猜测" y"。

  1. defhypothesis(X,theta):
  2. y1=theta*X
  3. returnnp.sum(y1,axis=1)

(8) 运用上面的本钱函数公式界说本钱函数:

  1. defcost(X,y,theta):
  2. y1=hypothesis(X,theta)
  3. returnsum(np.sqrt((y1-y)**2))/(2*m)

(9) 编写梯度下降函数。咱们将不断更新theta值,直到找到最佳本钱。关于每次迭代,咱们将核算本钱以供将来剖析。

  1. defgradientDescent(X,y,theta,alpha,epoch):
  2. J=[]
  3. k=0
  4. whilek<epoch:
  5. y1=hypothesis(X,theta)
  6. forcinrange(0,len(X.columns)):
  7. theta[c]=theta[c]-alpha*sum((y1-y)*X.iloc[:,c])/m
  8. j=cost(X,y,theta)
  9. J.append(j)
  10. k+=1
  11. returnJ,theta

(10) 界说了一切功用。现在,初始化theta。我正在初始化零数组。您能够选用任何其他随机值。我挑选alpha为0.05,我将迭代700个纪元的theta值。

  1. theta=np.array([0.0]*len(X.columns))
  2. J,theta=gradientDescent(X,y,theta,0.05,700)

(11) 咱们还取得了终究的theta值以及每次迭代的本钱。让咱们运用终究theta查找薪水猜测。

  1. df=pd.concat([pd.Series(1,index=df.index,name='00'),df],axis=1)
  2. df.head()
0

(12) 现在依据水平制作原始薪水和咱们的预期薪水。

  1. df=pd.concat([pd.Series(1,index=df.index,name='00'),df],axis=1)
  2. df.head()
1
免费Python机器学习课程三:多项式回归(多项式回归 python)  Python 机器学习 多项式回归 第11张

咱们的猜测并不完全符合薪资趋势,但挨近。线性回归只能回来一条直线。可是在多项式回归中,咱们能够得到这样的曲线。假如该线不是一条好曲线,则多项式回归也能够学习一些更杂乱的趋势。

(13) 让咱们制作咱们在梯度下降函数中每个时期核算的本钱。

  1. df=pd.concat([pd.Series(1,index=df.index,name='00'),df],axis=1)
  2. df.head()
2
免费Python机器学习课程三:多项式回归(多项式回归 python)  Python 机器学习 多项式回归 第12张

本钱从一开端就急剧下降,然后下降缓慢。在一个好的机器学习算法中,本钱应该一向下降直到收敛。请随意测验不同的时期和不同的学习率(alpha)。

  • 这是数据集:salary_data https://github.com/rashida048/Machine-Learning-With-Python/blob/master/position_salaries.csv
  • 请点击以下链接获取完好的作业代码:多项式回归 https://github.com/rashida048/Machine-Learning-With-Python/blob/master/polynomial%20regression.ipynb

转载请说明出处
知优网 » 免费Python机器学习课程三:多项式回归(多项式回归 python)

发表评论

您需要后才能发表评论