1. 程式人生 > >分別使用普通線性迴歸、嶺迴歸、lasso迴歸預測鮑魚年齡

分別使用普通線性迴歸、嶺迴歸、lasso迴歸預測鮑魚年齡

1.匯入相關模組

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

#機器學習的普通線性模型、嶺迴歸模型、lasso模型
from sklearn.linear_model import LinearRegression,Ridge,Lasso

#匯入機器學習相關的資料集
import sklearn.datasets as datasets

2.獲取訓練資料

abalone=pd.read_csv('../day09/data/abalone.txt',sep='\t',header=None
)

資料為自己本地資料,格式如下:
這裡寫圖片描述

#前7列為特徵
train = abalone.loc[:,0:7]
#第8列為標籤
target = abalone[8]
#訓練資料
X_train = train[:4000]
Y_train = target[:4000]
#測試資料
x_test = train[4000:]
y_true = target[4000:]

3.確定學習模型

  • 普通線性迴歸
line=LinearRegression()
  • 嶺迴歸模型
ridge = Ridge(alpha=0.5)
  • lasso迴歸模型
lasso = Lasso(alpha=0.003)

4.使用訓練資料對學習模型進行訓練

  • 訓練普通線性迴歸模型
line.fit(X_train,Y_train)
  • 訓練嶺迴歸模型
ridge.fit(X_train,Y_train)
  • 訓練lasso迴歸模型
lasso.fit(X_train,Y_train)

5.使用測試資料,獲取預測結果

  • 使用普通線性迴歸模型預測結果
y_pre_line = line.predict(x_test)
  • 使用嶺迴歸模型預測結果
y_pre_ridge = line.predict(x_test)
  • 使用lasso迴歸模型預測結果
y_pre_lasso = line.predict(x_test)

6.繪圖

  • 普通線性迴歸
plt.plot(np.arange(y_pre_line.size),y_pre)
plt.plot(np.arange(y_true.size),y_true)

這裡寫圖片描述

  • 嶺迴歸
plt.plot(np.arange(y_pre_ridge.size),y_pre)
plt.plot(np.arange(y_true.size),y_true)

這裡寫圖片描述

  • lasso迴歸
plt.plot(np.arange(y_pre_lasso.size),y_pre)
plt.plot(np.arange(y_true.size),y_true)

這裡寫圖片描述