training.test.split возвращает пустой тренировочный набор - PullRequest
0 голосов
/ 16 апреля 2020

После назначения моего набора для обучения и тестирования и применения регрессии я получаю ошибку

> ValueError                                Traceback (most recent call last)
><ipython-input-32-26b4f0d4f5a4> in <module>()
>      1 Lin = LinearRegression()
>----> 2 Lin.fit(training_x,training_y)
>C:\Users\sayaji\Anaconda3\lib\site-packages\sklearn\linear_model\base.py in >fit(self, X, y, sample_weight)


>    510         n_jobs_ = self.n_jobs
>    511         X, y = check_X_y(X, y, accept_sparse=['csr', 'csc', 'coo'],
>--> 512                          y_numeric=True, multi_output=True)
>    513 
>    514         if sample_weight is not None and ?>np.atleast_1d(sample_weight).ndim > 1:

>C:\Users\sayaji\Anaconda3\lib\site-packages\sklearn\utils\validation.py in >check_X_y(X, y, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, >allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, >warn_on_dtype, estimator)
>    519     X = check_array(X, accept_sparse, dtype, order, copy, >force_all_finite,
>    520                     ensure_2d, allow_nd, ensure_min_samples,
>--> 521                     ensure_min_features, warn_on_dtype, estimator)
>    522     if multi_output:
>    523         y = check_array(y, 'csr', force_all_finite=True, >ensure_2d=False,

>C:\Users\sayaji\Anaconda3\lib\site-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)
>    414                              " minimum of %d is required%s."
>    415                              % (n_samples, shape_repr, >ensure_min_samples,
>--> 416                                 context))
>    417 
>    418     if ensure_min_features > 0 and array.ndim == 2:


>ValueError: Found array with 0 sample(s) (shape=(0, 50)) while a minimum of 1 is >required.

вот мой полный код, если он вам нужен

training_x,testing_x,training_y,testing_y = train_test_split(real_x,real_y,test_size=0.3,random_state=0)
Lin = LinearRegression()
Lin.fit(training_x,training_y)
real_x = data["R&D Spend"].values
real_y = data["State"].values
real_x = real_x.reshape(1,-1)
real_y = real_y.reshape(1,-1)
training_x,testing_x,training_y,testing_y = train_test_split(real_x,real_y,test_size=0.3,random_state=0)
Lin = LinearRegression()
Lin.fit(training_x,training_y)
real_x.shape
(1, 50)
real_x.shape
(1, 50)
training_x.shape
(0,50)
training_y.shape
(0,50)

я думаю, что это то, что вызывает ошибку, у тренинга x и тренинга y не должно быть 0, есть ли что-то, что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

после воспроизведения условий вашего дела и его запуска я получаю более явную ошибку:

ValueError: With n_samples=1, test_size=0.3 and train_size=None, the resulting train set will be empty. Adjust any of the aforementioned parameters.

, что означает, что выполняется разделение данных по первому измерению (в данном случае 1) что приводит к 0 в качестве первого измерения в результате.

, поэтому просто измените ваши входные данные для train_test_split, чтобы сделать 50 первым измерением. это решает это.

как например real_x.reshape(50,1) и то же самое для real_y

0 голосов
/ 16 апреля 2020

Когда задействована только 1 функция, используйте reshape(-1,1), и данные должны выглядеть следующим образом:

Reshaped

real_x = data["R&D Spend"].values
real_x = real_x.reshape(-1,1)

real_y = data["State"].values
real_y = real_y.reshape(-1,1)

training_x,testing_x,training_y,testing_y = train_test_split(real_x,real_y,test_size=0.3,random_state=0)

Lin = LinearRegression().fit(training_x,training_y)

Кроме того, вы обычно хотите сделать ваш код более читабельным, поэтому оставляйте пробелы между не связанными переменными или функциями.

...