5 7 多元線性回歸

2021-09-26 09:00:17 字數 2838 閱讀 9167

每個樣本有多個特徵

向量化

目標: 使

多元線性回歸的正規方程解:

求出:缺點:時間複雜度高:o(n^3)

優點:不需要考慮量綱的問題

每個係數對應乙個特徵,係數可以用於描述每個特徵對於結果的貢獻程度

所以實現的時候是將截距和係數分開返回給使用者

封裝成類:

import numpy as np

from sklearn.metrics import r2_score #r^2評價方式(取值範圍是0-1,越大說明效能越好)

class linearregression:

def __init__(self):

"""初始化模型"""

self.coef_ = none #係數

self.interception_ = none #截距

self._theta = none

def fit_normal(self, x_train, y_train):

"""根據訓練資料集訓練模型---採用正規方程的解法"""

assert x_train.shape[0] == y_train.shape[0]

x_b = np.hstack([np.ones((len(x_train), 1)), x_train])

self._theta = np.linalg.inv(x_b.t.dot(x_b)).dot(x_b.t).dot(y_train)

self.interception_ = self._theta[0]

self.coef_ = self._theta[1:]

return self

def predict(self, x_predict):

"""返回表示x_predict的結果向量"""

assert self.coef_ is not none and self.interception_ is not none

assert x_predict.shape[1] == len(self.coef_)

x_b = np.hstack([np.ones((len(x_predict), 1)), x_predict])

y_predict = x_b.dot(self._theta)

return y_predict

def score(self, x_test, y_test):

y_predict = self.predict(x_test)

return r2_score(y_test, y_predict)

def __repr__(self):

"""多元線性回歸"""

呼叫:

from sklearn import datasets

boston = datasets.load_boston()

x = boston.data

y = boston.target

x = x[y < 50.0]

y = y[y < 50.0]

# 劃分資料集

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=666)

# 模型

from linearregression import linearregression

reg = linearregression()

reg.fit_normal(x_train, y_train)

print(reg.coef_)

print(reg.score(x_test, y_test))

from sklearn.linear_model import linearregression

reg = linearregression()

reg.fit(x_train, y_train)

# 檢視係數和截距

print(reg.coef_)

print(reg.intercept_)

print(reg.score(x_test, y_test))

from sklearn.neighbors import kneighborsregressor

使用網格搜尋確定最好的超引數(from sklearn.model_selection import gridsearchcv)

可以通過可解釋性採集有助於分類的更多特徵

典型的引數學習

只能解決回歸問題

對資料有假設,線性

對資料具有強解釋性

對比knn:

非引數學習

回歸分類問題都能解決

對資料沒有假設

前面都是使用多元線性回歸的正規方程解,複雜度大

後面將介紹梯度下降法

多元線性回歸

多元線性回歸的基本原理和基本計算過程與一元線性回歸相同,但由於自變數個數多,計算相當麻煩,一般在實際中應用時都要借助統計軟體。介紹多元線性回歸的一些基本問題。但由於各個自變數的單位可能不一樣,比如說乙個消費水平的關係式中,工資水平 受教育程度 職業 地區 家庭負擔等等因素都會影響到消費水平,而這些影...

多元線性回歸

from numpy import genfromtxt 用來讀取資料轉化為矩陣 from sklearn import linear model 含有回歸的模型 datapath r c users qaq desktop delivery dummy.csv 路徑 deliverydata ge...

多元線性回歸

比如有乙個住房 的資料集,可能會有多個不同的模型用於擬合,選擇之一像是這種二次模型 0 1x 2x2,因為直線並不能很好的擬合這些資料。但是現在如果用二次函式去考慮,可能會想到二次函式在最高點之後會下降,但是 並不會下降,並不合理,那我們可以用 0 1x 2x2 3x3這樣的三次模型。如果像這樣選擇...