機器學習 建立嶺回歸器

2021-08-15 04:36:46 字數 1677 閱讀 6592

線性回歸的主要問題是對異常值敏感。在真實世界的資料收集過程中,經常會遇到錯誤的度量結果。而線性回歸使用的是普通最小二乘法,其目標是使平方誤差最小化。這時,由於異常誤差的絕對值很大,因此破壞整個模型。普通最小二乘法在建模的時候會考慮每個資料點的影響,為了避免這個問題,我們引入正則化項的係數作為閾值來消除異常值的影響。這個方法被稱為嶺回歸。

#開啟檔案,獲取資料

import sys

import numpy as np

import sklearn.metrics as sm

from sklearn.linear_model import ridge

from sklearn.preprocessing import polynomialfeatures

from sklearn.linear_model import linearregression

x =

y =

f = open('e:\machinelearning\codebook\data_multivar.txt', 'r')#開啟檔案

lines = f.readlines() #一次性按行把所有資料讀取出來

for line in lines: #逐行讀取檔案

#print(line) #列印一行資料

data = [float(i) for i in line.split(',')]#逗號分隔字段,並將字段轉化為浮點數

xt ,yt = data[:-1], data[-1]

#劃分資料為訓練集與驗證集

num_training = int(0.8*len(x))

num_test = len(x) - num_training

#訓練資料,80%的資料是訓練資料

x_train = np.array(x[:num_training]).reshape(num_training, 3)

y_train = np.array(y[:num_training])

#測試資料,20%的資料是測試資料

x_test = np.array(x[num_training:]).reshape(num_test, 3)

y_test = np.array(y[num_training:])

#訓練模型

ridge_regressor = ridge(alpha=0.01, fit_intercept=true,max_iter=10000)#alpha引數控制回歸器的複雜度

ridge_regressor.fit(x_train, y_train)

y_test_predict = ridge_regressor.predict(x_test)

#計算回歸準確性

print('mean absolute error = ', round(sm.mean_absolute_error(y_test, y_test_predict)), 2)

print('mean squared error = ', round(sm.mean_squared_error(y_test, y_test_predict)), 2)

print('median absolute error = ', round(sm.median_absolute_error(y_test, y_test_predict)), 2)

機器學習 嶺回歸和LASSO回歸

1.用矩陣表示多元線性回歸 y bx a q b y bx t y bx 達到最小時的b值。也即是殘差平方和最小時。b bi 的值。可以證明b的最小二乘估計 xtx 1xty 其中 xtx 1為廣義逆。1.出現多重共線性2.當n 嶺回歸 ridge regression 先對資料做標準化 b k x...

機器學習 監督學習 (回歸)嶺回歸

1 嶺回歸 標準方程法 import numpy as np from numpy import genfromtxt import matplotlib.pyplot as plt 讀入資料 data genfromtxt r longley.csv delimiter 切分資料 x data d...

機器學習 嶺回歸和Lasso回歸(4)

任何資料都存在雜訊和多重共線性 如何解決多重共線性 1.演算法角度 正則化 2.資料角度 最有效果 嶺回歸與lasso回歸的出現是為了解決線性回歸出現的過擬合 資料間高度線性相關 以及在通過正規方程方法求解 的過程 現的x轉置乘以x不可逆這兩類問題的,這兩種回歸均通過在損失函式中引入正則化項來達到目...