基於jupyter notebook的python編程-----運用sklearn庫,導入文件數據模擬一元線性迴歸分析


上次博客,我們對於線性迴歸分析運用的是最小二乘法,這種方法是我們理解線性迴歸的基礎,高中我們就學習過,所以可以根據這種方法來求解迴歸係數和截距,但作爲大學生的我們來說,顯然有更加簡單的方法,不用我們自己寫代碼,只需要通過第三方庫進行導入就ok,本次博客,林君學長將帶大家瞭解,如何運用sklearn庫來進行一元線性迴歸的分析

一、運行jupyter notebook,搭建python環境

1、打開Windows終端命令行,輸入jupyter notebook,打開我們的jupyter工具,如下所示:

在這裏插入圖片描述

2、在jupyter的web網頁中創建python文件,如下所示:

在這裏插入圖片描述

3、現在就可以在jupyter的代碼行裏面輸入我們的代碼啦!

二、以下列的csv文件爲例,編寫我們的最小二乘法的python代碼的分解步驟

在這裏插入圖片描述
文件內容如下:
在這裏插入圖片描述
文件中爲體重X,身高Y的線性迴歸關係

1、導入我們需要的基本庫

from sklearn import linear_model        #表示,可以調用sklearn中的linear_model模塊進行線性迴歸。
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

2、導入我們數據文件mytest.csv

data = np.loadtxt(open("D:mytest.csv","rb"),delimiter=",",skiprows=0)
data1=data[0:20]

以上==data1=data[0:20]==表示我們導入文件數據的前20行,舉一反三,導入200、2000行數據則可以在這裏進行修改,如下
1)、導入200行數據

data1=data[0:200]

2)、導入2000行數據

data1=data[0:2000]

3、爲我們的x,y賦值採樣

x=[example[1] for example in data1]
y=[example[2] for example in data1]
X = np.asarray(x).reshape(-1, 1)
Y = np.asarray(y).reshape(-1, 1)

1)、上面,X、Y表示將導入的數據的第1列、第二列分別賦值給X、Y,如下所示:
在這裏插入圖片描述
2)、上面的x、y是將數據列表裝換爲array數組方便sklearn庫進行數據解析

4、下面就是運用sklearn庫進行數據處理,求y=ax+b中的ab

model = linear_model.LinearRegression()
model.fit(X,Y)
b=model.intercept_[0] #截距
a=model.coef_[0]#線性模型的係數
a1=a[0]

以上的數據處理不需要我們去管,是第三方庫sklearn寫好了的,我們直接拿來用就ok

5、輸出打印我們求出的線性迴歸方程

print("y=",a1,"x+",b)

6、通過scatter畫出擬合曲線圖

y1 = a1*X + b
plt.scatter(X,Y)
plt.plot(x,y1,c='r')

以上就是運用sklearn庫來進行一元線性方程的迴歸分析,過程比較簡單,基本就是運用第三方的庫,唯一難點是解決文件導入,然後賦值!

三、python利用sklearn庫分析迴歸方程的全部源碼

from sklearn import linear_model        #表示,可以調用sklearn中的linear_model模塊進行線性迴歸。
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
data = np.loadtxt(open("D:mytest.csv","rb"),delimiter=",",skiprows=0)
data1=data[0:20]
x=[example[1] for example in data1]
y=[example[2] for example in data1]
X = np.asarray(x).reshape(-1, 1)
Y = np.asarray(y).reshape(-1, 1)
model = linear_model.LinearRegression()
model.fit(X,Y)
b=model.intercept_[0] #截距
a=model.coef_[0]#線性模型的係數
a1=a[0]
print("y=",a1,"x+",b)
y1 = a1*X + b
plt.scatter(X,Y)
plt.plot(x,y1,c='r')

四、shift+enter運行我們的代碼

1、運行結果如下圖所示:

在這裏插入圖片描述

2、可以看出,以上是我們通過python代碼擬合的自變量X(體重)取值20個的線性迴歸方程,接下來我們通過wps的excel對同樣的數據,同樣的20個取值,與我們sklearn庫的結果對比,如下圖所示:

在這裏插入圖片描述
可以看出,python擬合出來的線性迴歸和我們excel擬合的線性迴歸的方程,大致一樣,就是有效數字的問題,可以看出,我們編寫的代碼還是比較完美的!

3、給出自變量X取值200個和2000個的線性迴歸方程,大家可以自己修改x,y賦值來做!

1)、取值200個x
在這裏插入圖片描述
對比excel:
在這裏插入圖片描述
2)、取值2000個x
在這裏插入圖片描述
對比excel:
在這裏插入圖片描述
以上就是我們本次博客的全部內容,希望通過本次博客,大家可以更好的理解如何運用第三方庫sklearn求線性迴歸方程哦!
遇到問題的小夥伴評論區留言哦,學長給你們耐心解答!
陳一月的又一天編程歲月^ _ ^

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章