Получение ValueError: x и y должны быть одинакового размера для значений x и y.Любая помощь будет оценена - PullRequest
0 голосов
/ 30 апреля 2019

В настоящее время работает проблема машинного обучения для прогнозирования погоды.Здесь, однако, когда я выполнял свой код в блокноте Jupyter, я столкнулся с вышеуказанной ошибкой, и я не уверен, где я ошибаюсь, поскольку значения для моих данных должны быть в двухмерных массивах.Любая помощь будет принята с благодарностью.В моей записной книжке в качестве проблемы упоминается строка 133

        axes[row, col]. scatter(df2[feature], df2['meantempm'])

.Если это поможет, я использую https://stackabuse.com/using-machine-learning-to-predict-the-weather-part-2/ в качестве болевого ресурса для этого

import jupyter
import IPython
from IPython import get_ipython
from datetime import datetime
from datetime import timedelta
import time
from collections import namedtuple
import pandas as pd
import requests
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import statsmodels.api as sm
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, median_absolute_error
from sklearn.metrics import explained_variance_score, \
    mean_absolute_error, \
    median_absolute_error
import tensorflow as tf

df = pd.read_csv('end-part2_df.csv').set_index('date')

df.corr()[['meantempm']].sort_values('meantempm')

predictors = ['meantempm_1',  'meantempm_2',  'meantempm_3',
              'mintempm_1',   'mintempm_2',   'mintempm_2',
              'meandewptm_1', 'meandewptm_2', 'meandewptm_3',
              'maxdewptm_1',  'maxdewptm_2',  'maxdewptm_3',
              'mindewptm_1',  'mindewptm_2',  'mindewptm_3',
              'maxtempm_1',   'maxtempm_2',   'maxtempm_3']

df2 = df[['meantempm'] + predictors]

get_ipython().run_line_magic('matplotlib','inline')

plt.rcParams['figure.figsize'] = [16, 22]

fig, axes = plt.subplots(nrows=6, ncols=3, sharey=True)

arr = np.array(predictors).reshape(6, 3)

for row, col_arr in enumerate(arr):
    for col, feature in enumerate(col_arr):
        axes[row, col]. scatter(df2[feature], df2['meantempm'])
        if col == 0:
            axes[row, col].set(xlabel=feature, ylabel='meantempm')
        else:
            axes[row, col].set(xlabel=feature)
plt.show()

1 Ответ

0 голосов
/ 30 апреля 2019

Ваш df ['mintempm_2'] является 2D (997, 2).Это связано с тем, что в массиве Предикторы вы дважды добавили mintempm_2.

...