偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

免費(fèi)Python機(jī)器學(xué)習(xí)課程三:多項(xiàng)式回歸

人工智能 機(jī)器學(xué)習(xí)
線(xiàn)性回歸的改進(jìn)版本中的多項(xiàng)式回歸。如果您知道線(xiàn)性回歸,那么對(duì)您來(lái)說(shuō)很簡(jiǎn)單。如果沒(méi)有,我將在本文中解釋這些公式。

線(xiàn)性回歸的改進(jìn)版本中的多項(xiàng)式回歸。如果您知道線(xiàn)性回歸,那么對(duì)您來(lái)說(shuō)很簡(jiǎn)單。如果沒(méi)有,我將在本文中解釋這些公式。還有其他先進(jìn)且更有效的機(jī)器學(xué)習(xí)算法。但是,學(xué)習(xí)基于線(xiàn)性的回歸技術(shù)是一個(gè)好主意。因?yàn)樗鼈兒?jiǎn)單,快速并且可以使用眾所周知的公式。盡管它可能不適用于復(fù)雜的數(shù)據(jù)集。

[[359167]]

多項(xiàng)式回歸公式

僅當(dāng)輸入變量和輸出變量之間存在線(xiàn)性相關(guān)性時(shí),線(xiàn)性回歸才能很好地執(zhí)行。如前所述,多項(xiàng)式回歸建立在線(xiàn)性回歸的基礎(chǔ)上。如果您需要線(xiàn)性回歸的基礎(chǔ)知識(shí),請(qǐng)?jiān)L問(wèn)線(xiàn)性回歸:

Python中的線(xiàn)性回歸算法

學(xué)習(xí)線(xiàn)性回歸的概念并從頭開(kāi)始在python中開(kāi)發(fā)完整的線(xiàn)性回歸算法

多項(xiàng)式回歸可以更好地找到輸入要素與輸出變量之間的關(guān)系,即使該關(guān)系不是線(xiàn)性的。它使用與線(xiàn)性回歸相同的公式:

Y = BX + C

我敢肯定,我們都在學(xué)校學(xué)過(guò)這個(gè)公式。對(duì)于線(xiàn)性回歸,我們使用如下符號(hào):

免費(fèi)Python機(jī)器學(xué)習(xí)課程三:多項(xiàng)式回歸

在這里,我們從數(shù)據(jù)集中獲得X和Y。X是輸入要素,Y是輸出變量。Theta值是隨機(jī)初始化的。

對(duì)于多項(xiàng)式回歸,公式如下所示:

免費(fèi)Python機(jī)器學(xué)習(xí)課程三:多項(xiàng)式回歸

我們?cè)谶@里添加更多術(shù)語(yǔ)。我們使用相同的輸入功能,并采用不同的指數(shù)以制作更多功能。這樣,我們的算法將能夠更好地了解數(shù)據(jù)。

冪不必為2、3或4。它們也可以為1 / 2、1 / 3或1/4。然后,公式將如下所示:

免費(fèi)Python機(jī)器學(xué)習(xí)課程三:多項(xiàng)式回歸

成本函數(shù)和梯度下降

成本函數(shù)給出了預(yù)測(cè)假設(shè)與值之間的距離的概念。公式為:

免費(fèi)Python機(jī)器學(xué)習(xí)課程三:多項(xiàng)式回歸

這個(gè)方程可能看起來(lái)很復(fù)雜。它正在做一個(gè)簡(jiǎn)單的計(jì)算。首先,從原始輸出變量中減去假設(shè)。取平方消除負(fù)值。然后將該值除以訓(xùn)練示例數(shù)量的2倍。

什么是梯度下降?它有助于微調(diào)我們隨機(jī)初始化的theta值。我不打算在這里進(jìn)行微積分。如果對(duì)每個(gè)θ取成本函數(shù)的偏微分,則可以得出以下公式:

免費(fèi)Python機(jī)器學(xué)習(xí)課程三:多項(xiàng)式回歸

在這里,alpha是學(xué)習(xí)率。您選擇alpha的值。

多項(xiàng)式回歸的Python實(shí)現(xiàn)

這是多項(xiàng)式回歸的逐步實(shí)現(xiàn)。

(1) 在此示例中,我們將使用一個(gè)簡(jiǎn)單的虛擬數(shù)據(jù)集,該數(shù)據(jù)集提供職位的薪水?dāng)?shù)據(jù)。導(dǎo)入數(shù)據(jù)集:

  1. import pandas as pd 
  2. import numpy as np 
  3. df = pd.read_csv('position_salaries.csv') 
  4. df.head() 
免費(fèi)Python機(jī)器學(xué)習(xí)課程三:多項(xiàng)式回歸

(2) 添加theta 0的偏差列。該偏差列將僅包含1。因?yàn)槿绻麑?乘以數(shù)字,則它不會(huì)改變。

  1. df = pd.concat([pd.Series(1, index=df.index, name='00'), df], axis=1
  2. df.head() 
免費(fèi)Python機(jī)器學(xué)習(xí)課程三:多項(xiàng)式回歸

(3) 刪除"位置"列。由于"位置"列中包含字符串,并且算法無(wú)法理解字符串。我們有"級(jí)別"列來(lái)代表職位。

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

(4) 定義我們的輸入變量X和輸出變量y。在此示例中,"級(jí)別"是輸入功能,而"薪水"是輸出變量。我們要預(yù)測(cè)各個(gè)級(jí)別的薪水。

  1. y = df['Salary']X = df.drop(columns = 'Salary'
  2. X.head() 
免費(fèi)Python機(jī)器學(xué)習(xí)課程三:多項(xiàng)式回歸

(5) 以"級(jí)別"列的指數(shù)為基礎(chǔ),創(chuàng)建"級(jí)別1"和"級(jí)別2"列。

  1. X['Level1'] = X['Level']**2 
  2. X['Level2'] = X['Level']**3 
  3. X.head() 
免費(fèi)Python機(jī)器學(xué)習(xí)課程三:多項(xiàng)式回歸

(6) 現(xiàn)在,標(biāo)準(zhǔn)化數(shù)據(jù)。用每一列除以該列的最大值。這樣,我們將獲得每列的值,范圍從0到1。即使沒(méi)有規(guī)范化,該算法也應(yīng)該起作用。但這有助于收斂更快。同樣,計(jì)算m的值,它是數(shù)據(jù)集的長(zhǎng)度。

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

(7) 定義假設(shè)函數(shù)。這將使用X和theta來(lái)預(yù)測(cè)" y"。

  1. def hypothesis(X, theta):  
  2.   y1 = theta*X  
  3.   return np.sum(y1, axis=1

(8) 使用上面的成本函數(shù)公式定義成本函數(shù):

  1. def cost(X, y, theta):  
  2.   y1 = hypothesis(X, theta)  
  3.   return sum(np.sqrt((y1-y)**2))/(2*m) 

(9) 編寫(xiě)梯度下降函數(shù)。我們將不斷更新theta值,直到找到最佳成本。對(duì)于每次迭代,我們將計(jì)算成本以供將來(lái)分析。

  1. def gradientDescent(X, y, theta, alpha, epoch): 
  2.     J=[] 
  3.     k=0 
  4.     while k < epoch: 
  5.         y1 = hypothesis(X, theta) 
  6.         for c in range(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.     return J, theta 

(10) 定義了所有功能?,F(xiàn)在,初始化theta。我正在初始化零數(shù)組。您可以采用任何其他隨機(jī)值。我選擇alpha為0.05,我將迭代700個(gè)紀(jì)元的theta值。

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

(11) 我們還獲得了最終的theta值以及每次迭代的成本。讓我們使用最終theta查找薪水預(yù)測(cè)。

  1. y_hat = hypothesis(X, theta) 

(12) 現(xiàn)在根據(jù)水平繪制原始薪水和我們的預(yù)期薪水。

  1. %matplotlib inline 
  2. import matplotlib.pyplot as plt 
  3. plt.figure() 
  4. plt.scatter(x=X['Level'],yy= y)            
  5. plt.scatter(x=X['Level'], y=y_hat
  6. plt.show() 
免費(fèi)Python機(jī)器學(xué)習(xí)課程三:多項(xiàng)式回歸

我們的預(yù)測(cè)并不完全符合薪資趨勢(shì),但接近。線(xiàn)性回歸只能返回一條直線(xiàn)。但是在多項(xiàng)式回歸中,我們可以得到這樣的曲線(xiàn)。如果該線(xiàn)不是一條好曲線(xiàn),則多項(xiàng)式回歸也可以學(xué)習(xí)一些更復(fù)雜的趨勢(shì)。

(13) 讓我們繪制我們?cè)谔荻认陆岛瘮?shù)中每個(gè)時(shí)期計(jì)算的成本。

  1. plt.figure() 
  2. plt.scatter(x=list(range(0, 700)), y=J
  3. plt.show() 
免費(fèi)Python機(jī)器學(xué)習(xí)課程三:多項(xiàng)式回歸

成本從一開(kāi)始就急劇下降,然后下降緩慢。在一個(gè)好的機(jī)器學(xué)習(xí)算法中,成本應(yīng)該一直下降直到收斂。請(qǐng)隨意嘗試不同的時(shí)期和不同的學(xué)習(xí)率(alpha)。

  • 這是數(shù)據(jù)集:salary_data https://github.com/rashida048/Machine-Learning-With-Python/blob/master/position_salaries.csv
  • 請(qǐng)點(diǎn)擊以下鏈接獲取完整的工作代碼:多項(xiàng)式回歸 https://github.com/rashida048/Machine-Learning-With-Python/blob/master/polynomial%20regression.ipynb

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2024-10-22 10:23:58

2020-12-19 10:54:25

機(jī)器學(xué)習(xí)線(xiàn)性回歸算法

2020-12-23 07:54:56

Python機(jī)器學(xué)習(xí)邏輯回歸算法

2020-12-20 20:31:56

Python機(jī)器學(xué)習(xí)多元線(xiàn)性回歸

2020-12-24 06:54:45

Python機(jī)器學(xué)習(xí)多類(lèi)分類(lèi)邏輯回歸

2020-12-25 10:08:53

Python機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)算法

2020-12-29 06:45:30

Python機(jī)器學(xué)習(xí)K均值聚類(lèi)

2022-09-25 23:34:42

算法回歸算法機(jī)器學(xué)習(xí)

2020-12-27 21:14:06

Python機(jī)器學(xué)習(xí)算法

2020-12-28 08:26:51

Python機(jī)器學(xué)習(xí)數(shù)據(jù)集

2021-01-01 14:59:51

Python機(jī)器學(xué)習(xí)算法

2020-06-01 08:43:23

機(jī)器學(xué)習(xí)函數(shù)模型

2019-05-29 07:59:54

機(jī)器學(xué)習(xí)深度學(xué)習(xí)自然語(yǔ)言

2014-08-22 10:06:46

機(jī)器學(xué)習(xí)

2020-11-10 08:37:05

Python線(xiàn)性回歸機(jī)器學(xué)習(xí)

2017-09-01 13:19:21

機(jī)器學(xué)習(xí)Logostic回歸

2017-06-14 17:18:43

機(jī)器學(xué)習(xí)數(shù)據(jù)研究回歸

2024-01-30 14:23:06

2017-04-18 14:17:09

機(jī)器學(xué)習(xí)算法數(shù)據(jù)

2017-04-05 14:00:10

拖拽式機(jī)器學(xué)習(xí)配置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)