Я работаю над заданием Coursera,
Вопрос:
Напишите функцию, которая соответствует полиномиальной модели LinearRegression на тренировочных данных X_train для степеней 1, 3 , 6 и 9. (Используйте PolynomialFeatures в sklearn.preprocessing для создания полиномиальных объектов и затем подгоните модель линейной регрессии). Для каждой модели найдите 100 предсказанных значений в интервале от x = 0 до 10 (например, np.linspace (0, 10 100)) и сохраните его в массиве numpy. Первая строка этого массива должна соответствовать выходным данным модели, обученной по степени 1, степени второй строки 3, степени третьей строки 6 и степени четвертой строки 9.
Эта функция должна возвращать массив numpy с формой (4, 100)
Мой код:
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
np.random.seed(0)
n = 15
x = np.linspace(0,10,n) + np.random.randn(n)/5
y = np.sin(x)+x/6 + np.random.randn(n)/10
X_train, X_test, y_train, y_test =train_test_split(x,y,random_state=0)
X_train=X_train.reshape(-1,1)
X_test=X_test.reshape(-1,1)
def answer_one():
poly1=PolynomialFeatures(1)
poly2=PolynomialFeatures(3)
poly3=PolynomialFeatures(6)
poly4=PolynomialFeatures(9)
x_polyte1=poly1.fit_transform(X_test)
x_polytr1=poly1.fit_transform(X_train)
x_polyte2=poly2.fit_transform(X_test)
x_polytr2=poly2.fit_transform(X_train)
x_polyte3=poly3.fit_transform(X_test)
x_polytr3=poly3.fit_transform(X_train)
x_polyte4=poly4.fit_transform(X_test)
x_polytr4=poly4.fit_transform(X_train)
model=LinearRegression()
mo1=model.fit(x_polytr1,y_train)
mo2=model.fit(x_polytr2,y_train)
mo3=model.fit(x_polytr3,y_train)
mo4=model.fit(x_polytr4,y_train)
pre=np.linspace(0,10,100).reshape(1,100)
pre1=poly1.fit_transform(pre)
pre2=poly2.fit_transform(pre)
pre3=poly3.fit_transform(pre)
pre4=poly4.fit_transform(pre)
a=mo1.predict(pre1)
b=mo2.predict(pre2)
c=mo3.predict(pre3)
d=mo4.predict(pre4)
return np.vstack(a,b,c,d)
Это дает мне ошибку:
ValueError Traceback (последний вызов был последним) из 48 49 возвращает np.vstack (a, b, c, d) ---> 50 answer_one ()
в answer_one () 39 pre1 = poly1. fit_transform (pre) 40 pre2 = poly2.fit_transform (pre) ---> 41 pre3 = poly3.fit_transform (pre) 42 pre4 = poly4.fit_transform (pre) 43
~ \ Anaconda3 \ lib \ site- packages \ sklearn \ base.py в fit_transform (self, X, y, ** fit_params) 551, если y равен None: 552 # метод соответствия arity 1 (преобразование без контроля) -> 553, возвращающий self.fit (X, ** fit_params) .transform (X) 554 else: 555 # метод подгонки arity 2 (контролируемое преобразование)
~ \ Anaconda3 \ lib \ site-packages \ sklearn \ preprocessing \ data.py i n transform (self, X) 1544 else: 1545
XP = np.empty ((n_samples, self.n_output_features_), -> 1546 dtype = X.dtype, order = self.order) 1547 для i, прочесать перечислить (комбинации): 1548
XP [:, i] = X [:, comb] .prod (1)
ValueError: массив слишком большой; arr.size * arr.dtype.itemsize
больше максимально возможного размера.
ps: прошу прощения за мой уродливый код, поскольку я только начинающий программировать, я пытался написать для l oop, но с треском провалился . Спасибо.