單變數非線性變換

2021-08-29 02:53:18 字數 1564 閱讀 3539

新增特徵的平方或者立方可以改進線性回歸模型,其他的變換通常也對變換某些特徵有用,特別是應用數學函式,如log,exp或sin。雖然基於樹的模型只關注特徵的順序,但線性模型和神經網路依賴於每個特徵的尺度和分布。如果特徵與目標之間存在非線性關係,那麼建模就變得非常困難,特別是對於回歸問題。log和exp函式可以幫助調節資料的相對比例,從而改變線性模型和神經網路的學習效果。此外,大部分模型都在每個特徵(在回歸問題中還包括目標值)大致遵循高斯分布時表現最好,也就是說,每個特徵的直方圖應該類似於熟悉的鐘形曲線。

1.生成資料集

特徵1和特徵2具有類似的性質。 

2.用嶺回歸訓練原始資料集

from sklearn.linear_model import ridge

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0)

score = ridge().fit(x_train, y_train).score(x_test, y_test)

print("test score: ".format(score))

3.將原始資料進行log變換,用嶺回歸訓練模型

變換之後,資料分布的不對稱性變小。構建嶺回歸模型,可以得到更好的擬合:

score = ridge().fit(x_train_log, y_train).score(x_test_log, y_test)

print("test score: ".format(score))

為資料集和模型的所有組合尋找最佳變換,這在某種程度上是一門藝術。通常來說,只有一部分特徵應該進行變換,有時每個特徵的變換方式也各不相同。對於基於樹的模型而言,這種變換並不重要,但對於線性模型來說可能至關重要。有時對目標變數進行變換也是一種思路。

單變數非線性變換

import mglearn import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.model selection import train test split from sklear...

機器學習基礎 非線性變換

在之前介紹的分類問題中,所涉及的分類的模型都是線性的,在非線性變換這一節中,我們將模型延伸到非線性的情況下來進行資料的分類。我們看到上面的例子,在左圖中,圓圈和紅叉的資料無法用一條直線將其分成兩類,那麼這這個例子中,我們其實可以用乙個大圓圈將資料分類,所以現在我們考慮假設,該假設hsep x 是乙個...

林軒田 12 非線性變換

toc 對於非線性的資料分類,如果我們使用線性模型,就會使得ein很大,分得不好。現在我們考慮如何用二次方程 圓的方式 來進行separate 我們可以使用半徑平方為0.6的圓可以將它分開 這裡我們進行非線性的變換,實現座標系的變換。從x空間變到z空間。在x系裡面圓圈可分的情況在z系裡面變得線性可分...