2016-08-12 69 views
1

我期待構建一個預測模型,並且正在使用我們當前的JMP模型。我們目前的方法是猜測一個n次多項式,然後看看哪些項不是重要的模型效應。多項式並不總是最好的,這會導致很多混淆和不好的模型。我們的數據可以有2到7個效果,並且總是有一個響應。針對n變量預測方程的Python模型

我想爲此使用python,但是對於像這樣的包文檔或在線指南很難找到。我知道如何擬合特定的n次多項式或在python中做線性迴歸,但不知道如何猜測數據集的最佳函數類型。

我是否錯過了一些明顯的東西,或者我應該寫一些探測各種函數類型的東西?精度是最重要的。我正在使用一個小的(〜2000x100)數據集。

我可以對較小的訓練集進行迴歸,對驗證集進行測試,然後對模型進行排序並選擇最佳。有什麼更好的嗎?

回答

1

嘗試使用其他迴歸模型而不是vanilla線性模型。

您可以使用類似這樣的多項式迴歸:

poly = PolynomialFeatures(degree=2) 
X_ = poly.fit_transform(input_data) 

而且,您可以通過套索迴歸

clf = linear_model.Lasso(alpha = 0.5, positive = True) 
clf.fit(X_,Y_) 

約束的權重,其中Y_是要對抗訓練輸出。

將alpha設置爲0會將其變爲簡單的線性迴歸。阿爾法基本上是較小權重的懲罰。你也可以使權重嚴格爲正值。看看這個here.

運行它一小程度,並執行交叉驗證,以檢查它是否適合它。

增加多項式的程度通常會導致過度擬合。所以如果你被迫使用4或5級,這意味着你應該尋找其他模型。

你也應該看看這question.這說明你如何曲線擬合。

0

ANOVA (analysis of variance)使用協方差來確定哪些效應具有統計意義...您不應該隨機選擇條件。然而,如果你說你的數據是不均勻的(即,你不應該適合所有數據的單一模型),那麼你可以考慮使用scikit-learn工具包來構建一個分類器,它可以選擇一個子集要適合的數據。