我使用sklearn的PolynomialFeatures將數據預處理爲各種度數轉換,以便比較其模型擬合。 下面是我的代碼:Python PolynomialFeatures將數據轉換爲原始數據的不同形狀
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.model_selection import train_test_split
np.random.seed(0)
# x and y are the original data
n = 100
x = np.linspace(0,10,n) + np.random.randn(n)/5
y = np.sin(x)+n/6 + np.random.randn(n)/10
# using .PolynomialFeatures and fit_transform to transform original data to degree 2
poly1 = PolynomialFeatures(degree=2)
x_D2_poly = poly1.fit_transform(x)
#check out their dimensions
x.shape
x_D2_poly.shape
然而,上述變換從的原始x返回的(1,5151)的陣列(100,1)。這不是我所期望的。我無法弄清楚我的代碼有什麼問題。如果有人能指出我的代碼的錯誤或者我的錯誤概念,那將會很棒。 我應該使用替代方法來轉換原始數據嗎?
謝謝。
此致
[更新] 所以經過我用X = x.reshape(-1,1)來轉換的原始x,Python不給我所需的輸出尺寸(100,1)通過POLY1 .fit_transform(X)。然而,當我做了train_test_split,裝的數據,並嘗試以獲得預測值:
x_poly1_train, x_poly1_test, y_train, y_test = train_test_split(x_poly1, y, random_state = 0)
linreg = LinearRegression().fit(x_poly1_train, y_train)
poly_predict = LinearRegression().predict(x)
的Python返回錯誤消息:
shapes (1,100) and (2,) not aligned: 100 (dim 1) != 2 (dim 0)
顯然,必須有某處我得到了尺寸錯誤的地方獲得。任何人都可以對此有所瞭解嗎?
謝謝。
我已經回答了您編輯的問題,但由於我確實回答了您的第一個問題,您是否介意接受答案? –
再次感謝。我很抱歉無法早日投票答覆您,因爲我對理解重塑()的事情有點專注......:p –