導航:首頁 > 編程知識 > 編程回歸直線哪裡錯了

編程回歸直線哪裡錯了

發布時間:2022-09-17 05:14:30

A. 使用Python的線性回歸問題,怎麼解決

本文中,我們將進行大量的編程——但在這之前,我們先介紹一下我們今天要解決的實例問題。

1) 預測房子價格

閃電俠是一部由劇作家/製片人Greg Berlanti、Andrew Kreisberg和Geoff Johns創作,由CW電視台播放的美國電視連續劇。它基於DC漫畫角色閃電俠(Barry Allen),一個具有超人速度移動能力的裝扮奇特的打擊犯罪的超級英雄,這個角色是由Robert Kanigher、John Broome和Carmine Infantino創作。它是綠箭俠的衍生作品,存在於同一世界。該劇集的試播篇由Berlanti、Kreisberg和Johns寫作,David Nutter執導。該劇集於2014年10月7日在北美首映,成為CW電視台收視率最高的電視節目。

綠箭俠是一部由劇作家/製片人 Greg Berlanti、Marc Guggenheim和Andrew Kreisberg創作的電視連續劇。它基於DC漫畫角色綠箭俠,一個由Mort Weisinger和George Papp創作的裝扮奇特的犯罪打擊戰士。它於2012年10月10日在北美首映,與2012年末開始全球播出。主要拍攝於Vancouver、British Columbia、Canada,該系列講述了億萬花花公子Oliver Queen,由Stephen Amell扮演,被困在敵人的島嶼上五年之後,回到家鄉打擊犯罪和腐敗,成為一名武器是弓箭的神秘義務警員。不像漫畫書中,Queen最初沒有使用化名」綠箭俠「。

由於這兩個節目並列為我最喜愛的電視節目頭銜,我一直想知道哪個節目更受其他人歡迎——誰會最終贏得這場收視率之戰。 所以讓我們寫一個程序來預測哪個電視節目會有更多觀眾。 我們需要一個數據集,給出每一集的觀眾。幸運地,我從維基網路上得到了這個數據,並整理成一個.csv文件。它如下所示。

閃電俠

閃電俠美國觀眾數

綠箭俠

綠箭俠美國觀眾數

1 4.83 1 2.84

2 4.27 2 2.32

3 3.59 3 2.55

4 3.53 4 2.49

5 3.46 5 2.73

6 3.73 6 2.6

7 3.47 7 2.64

8 4.34 8 3.92

9 4.66 9 3.06

觀眾數以百萬為單位。

解決問題的步驟:

首先我們需要把數據轉換為X_parameters和Y_parameters,不過這里我們有兩個X_parameters和Y_parameters。因此,把他們命名為flash_x_parameter、flash_y_parameter、arrow_x_parameter、arrow_y_parameter吧。然後我們需要把數據擬合為兩個不同的線性回歸模型——先是閃電俠,然後是綠箭俠。 接著我們需要預測兩個電視節目下一集的觀眾數量。 然後我們可以比較結果,推測哪個節目會有更多觀眾。

步驟1

導入我們的程序包:

Python

1

2

3

4

5

6

7

# Required Packages

import csv

import sys

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

from sklearn import datasets, linear_model

步驟2

寫一個函數,把我們的數據集作為輸入,返回flash_x_parameter、flash_y_parameter、arrow_x_parameter、arrow_y_parameter values。

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

# Function to get data

def get_data(file_name):

data = pd.read_csv(file_name)

flash_x_parameter = []

flash_y_parameter = []

arrow_x_parameter = []

arrow_y_parameter = []

for x1,y1,x2,y2 in zip(data['flash_episode_number'],data['flash_us_viewers'],data['arrow_episode_number'],data['arrow_us_viewers']):

flash_x_parameter.append([float(x1)])

flash_y_parameter.append(float(y1))

arrow_x_parameter.append([float(x2)])

arrow_y_parameter.append(float(y2))

return flash_x_parameter,flash_y_parameter,arrow_x_parameter,arrow_y_parameter

現在我們有了我們的參數,來寫一個函數,用上面這些參數作為輸入,給出一個輸出,預測哪個節目會有更多觀眾。

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# Function to know which Tv show will have more viewers

def more_viewers(x1,y1,x2,y2):

regr1 = linear_model.LinearRegression()

regr1.fit(x1, y1)

predicted_value1 = regr1.predict(9)

print predicted_value1

regr2 = linear_model.LinearRegression()

regr2.fit(x2, y2)

predicted_value2 = regr2.predict(9)

#print predicted_value1

#print predicted_value2

if predicted_value1 > predicted_value2:

print "The Flash Tv Show will have more viewers for next week"

else:

print "Arrow Tv Show will have more viewers for next week"

把所有東西寫在一個文件中。打開你的編輯器,把它命名為prediction.py,復制下面的代碼到prediction.py中。

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

# Required Packages

import csv

import sys

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

from sklearn import datasets, linear_model

# Function to get data

def get_data(file_name):

data = pd.read_csv(file_name)

flash_x_parameter = []

flash_y_parameter = []

arrow_x_parameter = []

arrow_y_parameter = []

for x1,y1,x2,y2 in zip(data['flash_episode_number'],data['flash_us_viewers'],data['arrow_episode_number'],data['arrow_us_viewers']):

flash_x_parameter.append([float(x1)])

flash_y_parameter.append(float(y1))

arrow_x_parameter.append([float(x2)])

arrow_y_parameter.append(float(y2))

return flash_x_parameter,flash_y_parameter,arrow_x_parameter,arrow_y_parameter

# Function to know which Tv show will have more viewers

def more_viewers(x1,y1,x2,y2):

regr1 = linear_model.LinearRegression()

regr1.fit(x1, y1)

predicted_value1 = regr1.predict(9)

print predicted_value1

regr2 = linear_model.LinearRegression()

regr2.fit(x2, y2)

predicted_value2 = regr2.predict(9)

#print predicted_value1

#print predicted_value2

if predicted_value1 > predicted_value2:

print "The Flash Tv Show will have more viewers for next week"

else:

print "Arrow Tv Show will have more viewers for next week"

x1,y1,x2,y2 = get_data('input_data.csv')

#print x1,y1,x2,y2

more_viewers(x1,y1,x2,y2)

可能你能猜出哪個節目會有更多觀眾——但運行一下這個程序看看你猜的對不對。

3) 替換數據集中的缺失值

有時候,我們會遇到需要分析包含有缺失值的數據的情況。有些人會把這些缺失值捨去,接著分析;有些人會用最大值、最小值或平均值替換他們。平均值是三者中最好的,但可以用線性回歸來有效地替換那些缺失值。

這種方法差不多像這樣進行。

首先我們找到我們要替換那一列里的缺失值,並找出缺失值依賴於其他列的哪些數據。把缺失值那一列作為Y_parameters,把缺失值更依賴的那些列作為X_parameters,並把這些數據擬合為線性回歸模型。現在就可以用缺失值更依賴的那些列預測缺失的那一列。

一旦這個過程完成了,我們就得到了沒有任何缺失值的數據,供我們自由地分析數據。

為了練習,我會把這個問題留給你,所以請從網上獲取一些缺失值數據,解決這個問題。一旦你完成了請留下你的評論。我很想看看你的結果。

個人小筆記:

我想分享我個人的數據挖掘經歷。記得在我的數據挖掘引論課程上,教師開始很慢,解釋了一些數據挖掘可以應用的領域以及一些基本概念。然後突然地,難度迅速上升。這令我的一些同學感到非常沮喪,被這個課程嚇到,終於扼殺了他們對數據挖掘的興趣。所以我想避免在我的博客文章中這樣做。我想讓事情更輕松隨意。因此我嘗試用有趣的例子,來使讀者更舒服地學習,而不是感到無聊或被嚇到。

謝謝讀到這里——請在評論框里留下你的問題或建議,我很樂意回復你。

B. 下列直線回歸方程中,錯誤的有()

這項是多選題,考卷剛做過,答案B C D

C. 回歸直線法解析

讀財管時很難記的一個公式是:關於企業資金需要量預測中的資金習性預測法下的回歸直線法.

以前也是死記硬背,但是一會功夫就一股腦地忘到九宵雲外去了.
可是,前幾天,有了一個簡單的公式:

該聯立方程組,可以用以下方法很簡便地推出:
基本公式:y=a+bx
將各期數據代入,可得:

以前這樣已經很不錯了.
可是.哈哈,晚上聽課,
又有了一個更世俗,更簡單的記法.

好像變復雜了,可是這個記憶的方法真的很管用.它的產生還是緣於一個老師的靈感:
看到路上有個結婚的車隊想到了這個變形公式:
B的推導:
西格瑪像一座房子,X和Y看成是兩個人一女一男,兩個人結婚了住在同一幢房子里,有很多人來祝賀,用網路語言說是N個人,這樣就有分子的前半部分了.隨著時間的流逝,就是減號,兩個人感情不和了,分居了,住在不同的房子里了,當然分開來不是什麼好事,然後就沒有祝賀的人了,N不見了,這樣分子的後半部分出來了.
接下來就是分母了,把分子的Y全變成X,好了.B的公式出來了.
A的公式就是根據推出.

這位老師笑著說,相信用這個方法可以將回歸直線法的公式記上兩年.
嗯.我看成!

D. 應用直線相關與回歸時應注意哪些問題

1、作回歸分析要有實際意義,不能把毫無關聯的兩種現象,隨意進行回歸分析,忽視事物現象間的內在聯系和規律;如對兒童身高與小樹的生長數據進行回歸分析既無道理也無用途。另外,即使兩個變數間存在回歸關系時,也不一定是因果關系,必須結合專業知識作出合理解釋和結論。
2、直線回歸分析的資料,一般要求應變數Y是來自正態總體的隨機變數,自變數X可以是正態隨機變數,也可以是精確測量和嚴密控制的值。若稍偏離要求時,一般對回歸方程中參數的估計影響不大,但可能影響到標准差的估計,也會影響假設檢驗時P值的真實性。
3、進行回歸分析時,應先繪制散點圖(scatter plot)。若提示有直線趨勢存在時,可作直線回歸分析;若提示無明顯線性趨勢,則應根據散點分布類型,選擇合適的曲線模型(curvilinear modal),經數據變換後,化為線性回歸來解決。一般說,不滿足線性條件的情形下去計算回歸方程會毫無意義,最好採用非線性回歸方程的方法進行分析。
4、繪制散點圖後,若出現一些特大特小的離群值(異常點),則應及時復核檢查,對由於測定、記錄或計算機錄入的錯誤數據,應予以修正和剔除。否則,異常點的存在會對回歸方程中的系數a、b的估計產生較大影響。
5、回歸直線不要外延。直線回歸的適用范圍一般以自變數取值范圍為限,在此范圍內求出的估計值稱為內插(interpolation);超過自變數取值范圍所計算的稱為外延(extrapolation)。若無充足理由證明,超出自變數取值范圍後直線回歸關系仍成立時,應該避免隨意外延。

E. 這兩個數控編程程序哪裡出錯了呀,顯示起點半徑和終點半徑之差超過規定值

一、數控中起點半徑和終點半徑之差超過規定值的意思是:有某個數值給大了,超過了機床的承受極限。也就是終點坐標與前一句的終點坐標之間距離相距過大,以至於圓弧不能連接起兩個點來。

如果允許的話,要不改一下兩點之間的坐標,讓兩點之間的距離「近」一些; 要不就加大「R」值,讓圓弧的半徑值大一點。

二、起點半徑和終點半徑之差超過規定值的原因:

1、小數點問題,圓弧指令G02/G03,半徑R未加小數點;

2、G02或G03格式有誤,G02/G03指令中終點坐標值不正確;

3、圓弧指本身沒問題,但其前後程序段有問題,G02/G03圓弧指令後一句指令,若是走直線段,未加指令G00/G01;

4、漏寫了程序段。

三、解決案例

1、小數點問題

如:G03 X30. Z-10. R5

G02X55.Z-23R10

2、G02或G03格式有誤:

如缺少R:G02 X20.Z-12;

3、圓弧指本身沒問題,但其前後程序段有問題如下圖


向左轉|向右轉

F. 有關線性回歸方程的問題。

我們把y尖成為y_hat。同理可推a,b

現在我們有一堆觀測點(xi,yi),想用一個線性方程y=bx+a來代表這堆觀測點,但是b,a都是算不出來的(為什麼,因為觀測點根本就不在一條線上,數學告訴我們2點確定一條直線)。所以我們用b_hat,a_hat來重新構造一條新的直線,使該直線在某種意義下離所有點最近。這條線就是回歸方程 y_hat=b_hat x+ a_hat

原來的觀測點(xi,yi)都在這條線的周圍(可能會有幾個准確的在線上,但都是巧合)。這些個y_hat是在回歸方程上的點。

所以(均值x,均值y)必在回歸方程上是錯誤的。(均值x,均值y_hat)才是

G. 【數必修3】 回歸直線必經過散點圖的多個點 這句話對么

錯,就一條,到各個點距離和最小的直線為回歸直線。

H. 思考:回歸直線方程一定過點(x巴,y巴)嗎

對變數之間統計關系進行定量描述的一種數學表達式。 指具有相關的隨機變數和固定變數之間關系的方程。 回歸直線方程 若:在一組具有相關關系的變數的數據(x與Y)間,通過散點圖我們可觀察出所有數據點都分布在一條直線附近,這樣的直線可以畫出許多條,而我們希望其中的一條最好地反映x與Y之間的關系,即我們要找出一條直線,使這條直線「最貼近」已知的數據點,記此直線方程為(如右所示,記為①式) 這里在y的上方加記號「^」,是為了區分Y的實際值y,表示當x取值xi=1,2,……,6)時,Y相應的觀察值為yi,而直線上對應於xi的縱坐標是 ①式叫做Y對x的 回歸直線方程,相應的直線叫做回歸直線,b叫做回歸系數。要確定回歸直線方程①,只要確定a與回歸系數b。 回歸直線的求法 最小二乘法: 總離差不能用n個離差之和 來表示,通常是用離差的平方和,即 作為總離差,並使之達到最小,這樣回歸直線就是所有直線中Q去最小值的那一條,這種使「離差平方和最小」的方法,叫做最小二乘法

閱讀全文

與編程回歸直線哪裡錯了相關的資料

熱點內容
大數據人格分析報告 瀏覽:16
nvidia錄的視頻在哪個文件 瀏覽:48
為什麼excel表格輸入數據顯示星號 瀏覽:406
斯巴魯brz輪轂是什麼數據 瀏覽:695
直接放壓縮文件的播放器 瀏覽:713
橙意健康電腦版app怎麼下載 瀏覽:229
電腦播放蘋果視頻文件 瀏覽:703
微信搖多少次會被限制 瀏覽:554
編輯文件如何去掉單位抬頭 瀏覽:241
win10取消密碼輸入框 瀏覽:89
手機qq怎麼撤迴文件 瀏覽:814
配置文件中的坐標 瀏覽:172
dnf90版本遠古套裝狂戰 瀏覽:887
master資料庫 瀏覽:29
三維設計和數控編程哪個工資高 瀏覽:505
桌面軟體怎麼可以找到原文件 瀏覽:865
iphone4situnes官方下載 瀏覽:918
1x大數據平台運維主要考什麼 瀏覽:718
淘寶模板使用教程 瀏覽:906
微信刪除群文件 瀏覽:29

友情鏈接