Python 線性回歸分析以及評價指標

2021-08-25 05:17:19 字數 2942 閱讀 1848

"""

# 利用 diabetes資料集來學習線性回歸

# diabetes 是乙個關於糖尿病的資料集, 該資料集包括442個病人的生理資料及一年以後的病情發展情況。

# 資料集中的特徵值總共10項, 如下:

# 年齡

# 性別

#體質指數

#血壓

#s1,s2,s3,s4,s4,s6 (六種血清的化驗資料)

#但請注意,以上的資料是經過特殊處理, 10個資料中的每個都做了均值中心化處理,然後又用標準差乘以個體數量調整了數值範圍。

#驗證就會發現任何一列的所有數值平方和為1.

"""import matplotlib.pyplot as plt

import numpy as np

from sklearn import datasets, linear_model

from sklearn.metrics import mean_squared_error, r2_score

# load the diabetes dataset

diabetes = datasets.load_diabetes()

# use only one feature

# 增加乙個維度,得到乙個體質指數陣列[[1],[2],...[442]]

diabetes_x = diabetes.data[:, np.newaxis,2]

print(diabetes_x)

# split the data into training/testing sets

diabetes_x_train = diabetes_x[:-20]

diabetes_x_test = diabetes_x[-20:]

# split the targets into training/testing sets

diabetes_y_train = diabetes.target[:-20]

diabetes_y_test = diabetes.target[-20:]

# create linear regression object

regr = linear_model.linearregression()

# train the model using the training sets

regr.fit(diabetes_x_train, diabetes_y_train)

# make predictions using the testing set

diabetes_y_pred = regr.predict(diabetes_x_test)

# the coefficients

# 檢視相關係數

print('coefficients: \n', regr.coef_)

# the mean squared error

# 均方差

# 檢視殘差平方的均值(mean square error,mse)

print("mean squared error: %.2f"

% mean_squared_error(diabetes_y_test, diabetes_y_pred))

# explained variance score: 1 is perfect prediction

# r2 決定係數(擬合優度)

# 模型越好:r2→1

# 模型越差:r2→0

print('variance score: %.2f' % r2_score(diabetes_y_test, diabetes_y_pred))

# plot outputs

plt.scatter(diabetes_x_test, diabetes_y_test, color='black')

plt.plot(diabetes_x_test, diabetes_y_pred, color='blue', linewidth=3)

plt.xticks(())

plt.yticks(())

plt.show()

對於回歸模型效果的判斷指標經過了幾個過程,從sse到r-square再到ajusted r-square, 是乙個完善的過程:

sse(誤差平方和):the sum of squares due to error

r-square(決定係數):coefficient of determination

adjusted r-square:degree-of-freedom adjusted coefficient of determination

下面我對以上幾個名詞進行詳細的解釋下,相信能給大家帶來一定的幫助!!

一、sse(誤差平方和)

計算公式如下:

sse數值大小本身沒有意義,隨著樣本增加,sse必然增加,也就是說,不同的資料集的情況下,sse比較沒有意義

二、r-square(決定係數)

越接近1,表明方程的變數對y的解釋能力越強,這個模型對資料擬合的也較好

越接近0,表明模型擬合的越差

經驗值:>0.4, 擬合效果好

資料集的樣本越大,r²越大,因此,不同資料集的模型結果比較會有一定的誤差

三、adjusted r-square (校正決定係數)

n為樣本數量,p為特徵數量

Python線性回歸與回歸分析(支援多元)

import matplotlib.pyplot as plt plt.style.use ggplot from matplotlib.font manager import fontproperties 解決中文字元顯示不全 import numpy as np font fontpropert...

python模型評估 薦線性回歸及模型的評估

線性回歸模型 以鳶尾花的花瓣長度與寬度為例,實現回歸 import numpy as np from sklearn.model selection import train test split from sklearn.linear model import linearregression f...

多元線性回歸分析

功能 多元線性回歸分析 include math.h include stdio.h include stdlib.h typedef struct rmatrix rm,rmp rm 實矩陣型別,rmp 實矩陣型別指標 typedef struct cnumber cnum,cnump cnum ...