機器學習基礎 sklearn之多項回歸

2021-09-29 18:55:16 字數 2171 閱讀 2806

利用sklearn裡的函式對多項式進行擬合

第一幅圖是資料圖

第二幅圖是用一元線性回歸擬合的圖

第三幅圖是用多項式回歸擬合出來的

import numpy as np 

import matplotlib.pyplot as plt

from sklearn.linear_model import linearregression # 線性回歸

from numpy import genfromtxt

from sklearn.preprocessing import polynomialfeatures # 生成多項式

# 載入資料

data = genfromtxt(r"c:\\ml\\chapter-1\\job.csv",delimiter=",")

x_data = data[1:,1]

y_data = data[1:,2]

plt.scatter(x_data,y_data)

plt.show()

x_data = data[1:,1,np.newaxis] # 給資料加上維度

y_data = data[1:,2,np.newaxis]

# 建立並擬合模型 一元線性回歸

model = linearregression()

model.fit(x_data,y_data)

# 畫圖

# 使用直線來擬合曲線,有對比性

plt.plot(x_data,y_data,'b.') # b代表blue .表示用.畫出來

plt.plot(x_data,model.predict(x_data),'r') # 畫線,r代表red

plt.show()

# 定義多項式回歸,degree的值可以調節多項式的特徵

poly_reg = polynomialfeatures(degree=5)

# 特徵處理

x_poly = poly_reg.fit_transform(x_data)

# 定義回歸模型

lin_reg = linearregression()

# 訓練模型

lin_reg.fit(x_poly,y_data)

# print(x_poly)

# 結果如下(當degree=1):

# [[ 1. 1.]

# [ 1. 2.]

# [ 1. 3.]

# [ 1. 4.]

# [ 1. 5.]

# [ 1. 6.]

# [ 1. 7.]

# [ 1. 8.]

# [ 1. 9.]

# [ 1. 10.]]

# 結果如下(degree=2):

# [[ 1. 1. 1.]

# [ 1. 2. 4.]

# [ 1. 3. 9.]

# [ 1. 4. 16.]

# [ 1. 5. 25.]

# [ 1. 6. 36.]

# [ 1. 7. 49.]

# [ 1. 8. 64.]

# [ 1. 9. 81.]

# [ 1. 10. 100.]]

# 畫圖

plt.plot(x_data,y_data,'b.')

plt.plot(x_data,lin_reg.predict(poly_reg.fit_transform(x_data)), c='r')

plt.title('truth or bluff (polynomial regression)') # 標題

plt.xlabel('position level') # x座標

plt.ylabel('salary') # y座標

sklearn機器學習 PCA

pca使用的資訊量衡量指標,就是樣本方差,又稱可解釋性方差,方差越大,特徵所帶的資訊量越多 原理推導 class sklearn decomposition.pca n components none,copy true whiten false svd solver auto tol 0.0,it...

sklearn 機器學習庫

pipeline parameters steps 步驟 列表 list 被連線的 名稱,變換 元組 實現擬合 變換 的列表,按照它們被連線的順序,最後乙個物件是估計器 estimator memory 記憶體引數,instance of sklearn.external.joblib.memory...

機器學習 Sklearn 除錯模型

1 過擬合 處理過擬合的方法有 a 減少特徵,降低模型的複雜度 b 減小除錯引數 c 增加訓練資料量 常用的調參方法就是通過在懲罰函式中新增乙個正則化引數c來控制分類邊界對樣本的辨識度,如果是用權重的二次方,則是l2正則化,如果是 w c則是l1正則化。l2損失函式 x是訓練集,w權重矩陣,b是偏置...