forward selection, which involves starting with no variables in the
model, testing the addition of each variable using a chosen model
comparison criterion, adding the variable (if any) that improves the
model the most, and repeating this process until none improves the
model.
我認為這是乙個非常有趣的hill演算法的實現,因為它是hill演算法的乙個非常有趣的版本。在
我沒有足夠的經驗以優化的方式編寫這個演算法。這是我當前的實現:class fsr():
def __init__(self, n_components):
self.n_components = n_components
def cost(self, index):
lr = linearregression().fit(self.x[:, index], self.y)
hat_y = lr.predict(self.x[:, index])
e = np.linalg.norm(hat_y - self.y)
return e
def next_step_fsr(self, comp, cand):
""" given the current components and candidates the function
return the new components, the new candidates and the new ev"""
if comp == :
er = np.inf
else:
er = self.cost(comp)
for i in range(len(cand)):
e = cand.popleft()
new_er = self.cost(comp)
if new_er < er:
new_comp = comp.copy()
new_cand = deque(i for i in cand)
er = new_er
comp.pop()
return new_comp, new_cand, new_er
def fsr(self):
n, p = self.x.shape
er =
comp =
cand = deque(range(p))
for i in range(self.n_components):
comp, cand, new_er = self.next_step_fsr(comp, cand)
return comp, er
def fit(self, x, y):
self.x = x
self.y = y
self.comp_, self.er_ = self.fsr()
我想知道如何提高這個**的速度。在
^$我希望最後的**看起來和發布的**沒有太大的不同。這是因為我想把這個問題擴充套件到不同的組合問題,以及不同的成本函式。在
我認為應該改變的函式是next_step_fsr,在給定當前選定的變數的情況下,嘗試哪乙個變數是模型中最好的變數。我特別感興趣的是x有很多列(比如10000列)。我認為當前的瓶頸是複製候選名單的new_cand = deque(i for i in cand)行。在
逐步回歸法的基本步驟 逐步回歸法介紹及應用
一 逐步回歸法介紹 逐步回歸的基本思想是通過剔除變數中不太重要又和其他變數高度相關的變數,降低多重共線性程度。將變數逐個引入模型,每引入乙個解釋變數後都要進行f檢驗,並對已經選入的解釋變數逐個進行t檢驗,當原來引入的解釋變數由於後面解釋變數的引入變得不再顯著時,則將其刪除,以確保每次引入新的變數之前...
Matlab 逐步回歸
例 hald,1960 hald 資料是關於水泥生產的資料。某種水泥在凝固時放出的熱量 y 單位 卡 克 與水泥中 4 種化學成品所佔的百分比有關 在生產中測得 12 組資料,見表5,試建立 y 關於這些因子的 最優 回歸方程。對於例 4 中的問題,可以使用多元線性回歸 多元多項式回歸,但也可以考慮...
逐步回歸(R語言)
r軟體提供了非常方便地進行逐步回歸分析的計算函式step 它是以aic資訊統計量為準則,通過選擇最小的aic資訊統計量。來達到提出或新增變數的目的。實現如下 data3.1 lmo3.1 lm3.1.for summary lm3.1.for 輸出結果如下 由上述結果可以看到,前進法一次引入了x5,...