scikit learn 回歸分析 多元回歸

2021-09-27 13:01:24 字數 3414 閱讀 7545

般線性回歸中,使用的假設函式是一元一次方程,也就是二維平面上的一條直線。但是很多時候可能會遇到直線方程無法很好的擬合資料的情況,這個時候可以嘗試使用多項式回歸。多項式回歸中,加入了特徵的更高次方(例如平方項或立方項),也相當於增加了模型的自由度,用來捕獲資料中非線性的變化。新增高階項的時候,也增加了模型的複雜度。隨著模型複雜度的公升高,模型的容量以及擬合資料的能力增加,可以進一步降低訓練誤差,但導致過擬合的風險也隨之增加。

1.模型

某金融公司打算新開一類金融產品,現有9個金融產品的資料,包括使用者購買金融產品的綜合年化利率,以及公司收取使用者的佣金(手續費);如下表所示,產品利率為11%,佣金為50,我們需要**這款金融產品的銷售額

我們對自變數和因變數繪製散點圖,因為需要繪製多個變數兩兩之間的散點圖,在這裡介紹乙個更先進的繪圖方法scatter_matrix:我們把自變數和因變數從data中選取出來,然後設定好對應的引數。第乙個是的大小,如果變數太多,我們就要把的尺寸設定的足夠大才能夠展示出來;第二個引數diagonal是變數與變數本身的繪圖方式,我們選擇kde,是繪製直方圖,這個引數是什麼意思,我們執行**就知道了,**如下:

pd.plotting.scatter_matrix(data[

["百分比利率"

,"抽取使用者佣金"

,"金融產品銷售額"]]

, figsize =(10

,10),diagonal =

'kid'

,color=

'r')

plt.show(

)co=data[

["百分比利率"

,"抽取使用者佣金"

,"金融產品銷售額"]]

.corr(

)x = data[

["百分比利率"

,"抽取使用者佣金"]]

y = data[

["金融產品銷售額"]]

#建模

from sklearn.linear_model import linearregression

lrmodel = linearregression(

)#訓練模型

lrmodel.fit(x,y)

擬合完方程的引數之後,我們就要對回歸模型進行檢驗,在簡單線性回歸的分享中,我們用判定係數來驗證方程的擬合程度,而在多重線性回歸中,如果在模型中增加乙個自變數,模型中r平方往往也會相應增加,這就會給我們乙個錯覺:要使得模型擬合的好,只要增加自變數即可。因此,使用判定係數r平方來驗證方程的擬合程度是不夠科學的,需要自變數個數進行修正和調整,也就是調整判定係數;以上,我們只要理解原理即可,公式記不住也不要緊,知道多重線性模型需要用調整判定係數來判定方程的擬合程度,會用python看結果就可以了。

#**

lrmodel.predict([11

,50])

#檢視引數

lrmodel.coef_

#檢視截距

lrmodel.intercept_

import pandas

import pandas as pd

import matplotlib

pd.set_option(

'display.unicode.ambiguous_as_wide'

,true

)pd.set_option(

'display.unicode.east_asian_width'

,true

)font =

matplotlib.rc(

'font'

,**font)

data = pandas.read_excel(

'./mlr.xlsx'

,encoding=

'gbk'

)# print(data)

pd.plotting.scatter_matrix(data[

["百分比利率"

,"抽取使用者佣金"

,"金融產品銷售額"]]

, figsize =(10

,10),diagonal =

'kid'

,color=

'r')

# plt.show()

#相關係數r

corr=data[

["百分比利率"

,"抽取使用者佣金"

,"金融產品銷售額"]]

.corr(

)#檢視資料間的相關係數

x = data[

["百分比利率"

,"抽取使用者佣金"]]

y = data[

["金融產品銷售額"]]

#建模from sklearn.linear_model import linearregression

lrmodel = linearregression(

)#訓練模型

lrmodel.fit(x,y)

#**print

(lrmodel.predict([(

9,75)

]))#[[495.62788769]]

#檢視引數

corf=lrmodel.coef_

print

(corf)

#含有兩個自變數 ,有兩個引數[[62.35235754 -0.28005173]]

#檢視截距

print

(lrmodel.intercept_)

#[-44.5394503]

線性回歸 scikit learn

線性回歸即是我們希望能通過學習來得到乙個各屬性線性組合的函式,函式的各項係數表明了該屬性對於最後結果的重要性,可以用以下公式表達 y x 1 x1 2x2 pxp b線性回歸試圖讓各個點到回歸直線上的距離和最小,即最小化均方誤差。可用以下公式描述 min x y 22 matplotlib inli...

《scikit learn》隨機森林之回歸

今天我們學習下隨機森林做回歸的用法 話不多說直接上測試 看的更加清晰,總體上和回歸樹是一樣的使用流程 from sklearn.datasets import load boston from sklearn.model selection import cross val score from s...

Scikit learn 學習心得(線性回歸)

一開始學習線性回歸的時候,是在matlab裡寫的,現在學習用python來做。scikit learn 的線性回歸怎麼用呢?開始參考的是這個 官方參考為 其實很簡單,主要有如下幾步 1,各種import import matplotlib.pyplot as plt import numpy as ...