python建立回归模型_简单线性回归的Python建模方法
簡單線性回歸,就是兩個隨機變量存在一定大小的相關系數的前提下,結合散點圖觀察,采用最小二乘OLS方法,嘗試建立一條回歸直線,使得誤差平方和SSE最小。OLS是一種參數方法,通過確定直線的斜率b和截距a,求得直線方程y=a+bx。利用該直線方程,可對滿足條件的測試集中的x值,預測出相應的y值,并評價模型效果。
本文通過一些人造數據,講解Python實現簡單線性回歸的建模方法。
數據集包含兩個隨機變量:學習時間、分數。
一、統一概念
機器學習和數據分析的步驟相似:
①提出問題
②理解數據
③數據清洗
④建立模型
⑤評估模型
本文重點關注建模過程,故而忽略前3步。
簡單線性回歸就是一元線性回歸。含有一個自變量(特征)+一個因變量(標簽)。
通用表達式為y=a+bx,a為截距項,b為斜率(也叫回歸系數)。
機器學習的一般建模分析方法,需先將原始數據集拆分出一定比例的數據子集,作為訓練集。其余的數據則作為測試集,用來評估模型效果。
拆分的時候采用隨機拆分,只需指定比例即可。
簡單線性回歸的特征一般為連續型變量,標簽也為連續型變量。
二、建立模型
解釋了可能出現的概念之后,可以著手準備建立模型了。
0.準備數據
通過有序字典的方式,手動創建一個原始數據集,包括兩個隨機變量(特征:x;標簽:y):創建原始數據集
1.建模第一步:計算相關系數矩陣,提取特征和標簽提取原始數據集的特征和標簽
2.建模第二步:得到訓練集和測試集
在導入機器學習交叉驗證包的分割模塊時,會彈出警告,經搜索,sklearn 0.20以后的版本將不支持sklearn.cross_validation包:
解決辦法:修改為高級版本支持的包sklearn.model_selection.
在分割數據集的過程中,又彈出警告:
警告信息說的很清楚了,讓我們補足testsize的大小。加一個參數test_size=0.2。如下:
原始數據集的特征:exam_x;訓練集特征:x_train;測試集特征:x_test;
原始數據集的標簽:exam_y;訓練集標簽:y_train;測試集標簽:y_test。
二八分,訓練集80%,測試集20%。
這里補充一下第一步需要的散點圖,由于散點圖的繪制過程需要提取出特征和標簽,所以放在這里補充:
這里也可看出,適合用簡單線性回歸模型。
3.建模第三步:創建并訓練模型
首先,導入 機器學習的線性模型包:from sklearn.linear_model import LinearRegression
然后,創建線性回歸模型;再用訓練集訓練模型:
此處會報錯:
通過劃線部分我們得到:此處需要二維參數,而我們只傳入了一維參數,如果只有一個特征,需要通過numpy重塑形狀為n行1列。
備注:reshape為numpy的ndarray類型所具有的方法,Series需要先取出值的部分,即Series.values,再reshape(-1,1)成n行1列。關于reshape的規則見下圖:numpy.array.reshape規則
言歸正傳,將訓練集特征和測試集特征重塑為n行1列:
再訓練模型一次,并求出截距和斜率,寫出OLS方程:求出OLS方程
由于在繪制OLS直線時,需要用到 模型對訓練集特征預測出來的y值,此處求一下:
y_train_pred = model.predict(x_train)
三、評估模型
簡單線性回歸模型的效果用判別系數r^2
可以看到,判別系數r平方為0.74,模型擬合效果較好。
下面通過可視化,直觀感受一下效果:訓練集:藍色;測試集:紅色
總結
以上是生活随笔為你收集整理的python建立回归模型_简单线性回归的Python建模方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ftp 工具_ftp,ftp工具哪个好用
- 下一篇: 在python中print表示的数据类型