線性回歸:通過擬合線性模型的回歸系數W =(w_1,…,w_p)來減少數據中觀察到的結果和實際結果之間的殘差平方和,並通過線性逼近進行預測。
從數學上講,它解決了下面這個形式的問題:
LinearRegression()模型在Sklearn.linear_model下,他主要是通過fit(x,y)的方法來訓練模型,其中x為數據的屬性,y為所屬類型。線性模型的回歸系數W會保存在他的coef_方法中。
例如:
>>> from sklearn import linear_model >>> clf = linear_model.LinearRegression() >>> clf.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2]) LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False) >>> clf.coef_ array([ 0.5, 0.5])
實例:
使用的數據集為Sklearn.dataset.load_diabetes()一個關於糖尿病的數據集。
為了說明這個回歸技術的一個二維圖,例子僅僅使用了糖尿病數據集的第一個特征。
代碼如下:
# -*- encoding:utf-8 -*- """ Line Regression Example DataBase:diavetes """ import matplotlib.pyplot as plt import numpy as np from sklearn import datasets,linear_model import time a=time.time() ####加載數據集 diabetes=datasets.load_diabetes() ####僅僅使用一個特征: diabetes_X=diabetes.data[:,np.newaxis,2] ###s數據划分訓練集和測試集 diabetes_X_train=diabetes_X[:-20] diabetes_X_test=diabetes_X[-20:] ###目標划分為訓練集和測試集 diabetes_y_train=diabetes.target[:-20] diabetes_y_test=diabetes.target[-20:] ###訓練模型 regr=linear_model.LogisticRegression() regr.fit(diabetes_X_train,diabetes_y_train) ###回歸系數 print('Coefficients:\n',regr.coef_) ###均方誤差 print('the mean sqare error:%.2f' %np.mean((regr.predict(diabetes_X_test)-diabetes_y_test)**2)) print('Variance score:%.2f' %regr.score(diabetes_X_test,diabetes_y_test)) ##散點圖 plt.scatter(diabetes_X_test,diabetes_y_test,color='black') plt.plot(diabetes_X_test,regr.predict(diabetes_X_test),color='blue',linewidth=3) plt.xticks() plt.yticks() b=time.time() print('the running time is %.2f' %(b-a)) plt.show()
實驗結果:
Coefficients: [ 938.23786125] Residual sum of squares: 2548.07 Variance score: 0.47
the running time is 0.31