天天看點

最新回歸算法了解、實作及應用(1)線性回歸

一、回歸模型間的關系,回歸是統計學中最有力的算法之一:

1.1 回歸:(regression):用已知樣本對未知公式參數的估計,給出一個點集D,用一個函數去拟合這個點集,并且使得點集與拟合函數間的誤差最小,如果這個函數曲線是一條直線,那就被稱為線性回歸,如果曲線是一條二次曲線,就被稱為二次回歸。

1.2.線性回歸(linear regression):回歸的一種,回歸函數是一次函數,例如:f(x,y,z,…)=ax+by+cz+…+…其中x,y,z是訓練樣本集中樣本的各個特征(feature),a,b,c是模型的未知參數。

1.3.邏輯回歸(logistic regression):将result歸一化到[0, 1]區間,即使用一個邏輯方程将線性回歸歸一化。

二 、線性回歸(linear regression)

線性回歸中的函數并不是指線性函數,屬于監督學習。

hθ(x)=θ0+θ1x

我們常稱x為feature,h(x)為hypothesis

diabetes dataset (資料集)

  • 樣本總數 442
  • 維數 10 這裡隻用到了1維
  • 特征範圍-.2 < x < .2
  • 标簽:integer 25 - 346
#_*_ coding:utf-8 _*_
#__author__=="dragon"

import matplotlib.pyplot as plt 
import numpy as np 
from sklearn import datasets,linear_model

#從sklearn中導入資料
diabetes = datasets.load_diabetes()
#隻用到資料集中的一種特征
diabetes_x = diabetes.data[:,np.newaxis,]
#将資料分成訓練和測試集
diabetes_x_train = diabetes_x[:-]##442
diabetes_x_test = diabetes_x[-:]##20
##将标簽分為測試和訓練集合
diabetes_y_train = diabetes.target[:-]
diabetes_y_test = diabetes.target[-:]
##建立一個線線回歸對象
regr = linear_model.LinearRegression()
#訓練
regr.fit(diabetes_x_train,diabetes_y_train)
#coefficients
print('coefficients = %f\n' % float(regr.coef_))
##均方誤差(殘差)
print('Residual sum of squares: %.2f' % np.mean((regr.predict(diabetes_x_test)-diabetes_y_test)**))
##變異指數,為1時最優
print('variance score: %.2f' % regr.score(diabetes_x_test,diabetes_y_test))
##輸出圖
plt.scatter(diabetes_x_test,diabetes_y_test,color='red')
plt.plot(diabetes_x_test,regr.predict(diabetes_x_test),color='blue',linewidth=)
plt.xticks(())
plt.yticks(())
plt.show()
           

輸出結果:

coefficients = 
Residual sum of squares: 
variance score: 
           

輸出圖檔:

最新回歸算法了解、實作及應用(1)線性回歸

源碼位址:

我戳!!!!!

繼續閱讀