Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 15, 2018 00:00:05

Enmaboya
Зарегистрирован: 2017-09-28
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с построиением модели с использованием полиномиальной функции

Собственно делаю лабораторную работу, но не хватает знаний питона (ровно как и знаний в программировании)

Итак текст лабораторной выглядит следующим образом.

1) Написать программу, которая разделяет исходную выборку на обучающую и тестовую (training set, validation set, test set)
2) С использованием библиотеки scikit-learn (http://scikit-learn.org/stable/) обучить модель линейной регрессии по обучающей выборке (пример: http://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py)
3) Построить модель с использованием полиномиальной функции (пример: http://scikit-learn.org/stable/auto_examples/model_selection/plot_underfitting_overfitting.html#sphx-glr-auto-examples-model-selection-plot-underfitting-overfitting-py). Построить графики зависимости ошибки от степени полиномиальной функции.
И вот с третьим проблемы.

Код программы.
 from sklearn import linear_model
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import Pipeline
from sklearn.model_selection import cross_val_score
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
    	подкл выборку
df = pd.read_table ("tic/ticdata2000.txt")
cols = ['Col']
x_train = pd.read_table ("tic/ticdata2000.txt", header = None).iloc [0:4000, 0:85]
x_test = pd.read_table ("tic/ticeval2000.txt", header = None)
y_train = df['Col'] = df.iloc[0:4000, 84]
y_test = pd.read_table ("tic/tictgts2000.txt", header = None)
	обучение выборки
regression = linear_model.LinearRegression()
regression.fit (x_train, y_train)
	Предсказание на основе тестового набора
train_predict = regression.predict (x_train)
print('Коэффициенты: \n', regression.coef_)
print("Cреднеквадратичная ошибка: %.2f" % mean_squared_error(y_train, train_predict))
print('Оценка отклонения: %.2f' % r2_score(y_train, train_predict))
	Проверка точности модели по тестовой выборке и запись в файл¶
columns = ['y_pred']
y_pr = pd.DataFrame(train_predict)
y_test = y_test.reset_index(drop = True)
res = pd.concat([y_pr, y_test], axis=1)
res.to_csv("result.txt", index = False)
	[b]Построение полинома[/b]
degrees = [1,2,3]
err = [1,2,3]
for i in range(len(degrees)):
    polynomial_features = PolynomialFeatures(degree = degrees[i],
                                             include_bias = False)
    linear_regression = LinearRegression()
    pipeline = Pipeline([("polynomial_features", polynomial_features),
                         ("linear_regression", linear_regression)])
    pipeline.fit(x_train, y_train)
    scores = cross_val_score(pipeline, x_train, y_train,
                             scoring="neg_mean_squared_error")
    predict_y = pipeline.predict(x_test)
    err[i] = -scores.mean()
    print("\nСтепень: {}\nСреднеквадратичная ошибка = {}(+/- {})".format(degrees[i], -scores.mean(),
                                               scores.std()))
    print('Показатель отклонения: %.3f' % r2_score(y_test, predict_y))

И вот, собственно при построении полинома вылетает ошибка

 MemoryError                               Traceback (most recent call last)
<ipython-input-7-4a868cb24d24> in <module>()
     10     pipeline = Pipeline([("polynomial_features", polynomial_features),
     11                          ("linear_regression", linear_regression)])
---> 12     pipeline.fit(x_train, y_train)
     13     scores = cross_val_score(pipeline, x_train, y_train,
     14                              scoring="neg_mean_squared_error")
/usr/local/lib/python3.5/dist-packages/sklearn/pipeline.py in fit(self, X, y, **fit_params)
    257         Xt, fit_params = self._fit(X, y, **fit_params)
    258         if self._final_estimator is not None:
--> 259             self._final_estimator.fit(Xt, y, **fit_params)
    260         return self
    261 
/usr/local/lib/python3.5/dist-packages/sklearn/linear_model/base.py in fit(self, X, y, sample_weight)
    487         X, y, X_offset, y_offset, X_scale = self._preprocess_data(
    488             X, y, fit_intercept=self.fit_intercept, normalize=self.normalize,
--> 489             copy=self.copy_X, sample_weight=sample_weight)
    490 
    491         if sample_weight is not None:
/usr/local/lib/python3.5/dist-packages/sklearn/linear_model/base.py in _preprocess_data(X, y, fit_intercept, normalize, copy, sample_weight, return_mean)
    166 
    167     X = check_array(X, copy=copy, accept_sparse=['csr', 'csc'],
--> 168                     dtype=FLOAT_DTYPES)
    169     y = np.asarray(y, dtype=X.dtype)
    170 
/usr/local/lib/python3.5/dist-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
    400                                       force_all_finite)
    401     else:
--> 402         array = np.array(array, dtype=dtype, order=order, copy=copy)
    403 
    404         if ensure_2d:
MemoryError:
как от неё избавиться? направьте на пусть истинный!

Сама выборка бралась отсюда

Отредактировано Enmaboya (Янв. 15, 2018 00:00:49)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version