Ошибка matplotlib: x и y должны быть одинакового размера - PullRequest
0 голосов
/ 29 марта 2019

Пожалуйста, как я могу исправить ошибку ' ValueError: x и y должны быть одинакового размера ' Ошибка в коде Python?

Идея кода заключается в том, что от разных датчиков температурыи НИКАКИЕ данные не применяли модель многомерной линейной регрессии.Чтобы обучить модель и увидеть результаты, сопоставленные между ними, а также прогноз в целом.

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

Большое вам спасибо

from sklearn import linear_model
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import pandas as pd
import matplotlib.pyplot as plt

# Name of de file
filename = 'NORM_AC_HAE.csv'
file = 'NORM_NABEL_HAE_lev1.csv'

# Read the data
data=pd.read_csv(filename)
data_other=pd.read_csv(file)

col = ['Aircube.009.0.no.we.aux.ch6', 'Aircube.009.0.sht.temperature.ch1']
X = data.loc[:, col]
Y = data_other.loc[:,'NO.ppb']

# Fitting the Liner Regression to training set
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.3, train_size = 0.6, random_state = np.random.seed(0))
mlr = LinearRegression()
mlr.fit(X_train, y_train)

# Visualization of the test set results
plt.figure(2)
plt.scatter(y_test, X_test) #The VALUE ERROR appears here

Код ошибки:

Traceback (most recent call last):
  File "C:\Users\andre\Desktop\UV\4o\TFG\EMPA\dataset_Mila\MLR_no_temp_hae_no.py", line 65, in <module>
    plt.scatter(y_test, X_test)
  File "C:\Users\andre\AppData\Local\Programs\Python\Python37-32\lib\site-packages\matplotlib\pyplot.py", line 2864, in scatter
    is not None else {}), **kwargs)
  File "C:\Users\andre\AppData\Local\Programs\Python\Python37-32\lib\site-packages\matplotlib\__init__.py", line 1810, in inner
    return func(ax, *args, **kwargs)
  File "C:\Users\andre\AppData\Local\Programs\Python\Python37-32\lib\site-packages\matplotlib\axes\_axes.py", line 4182, in scatter
    raise ValueError("x and y must be the same size")
ValueError: x and y must be the same size
[Finished in 6.9s]

1 Ответ

0 голосов
/ 29 марта 2019

X_test.shape = [36648 строк x 2 столбца]

Оба аргумента данных в plt.scatter (здесь y_test и X_test) должны быть одномерными массивами; из документов :

x, y : массив_образный, форма (n,)

пока вы пытаетесь передать 2-мерную матрицу для X_test, отсюда и ошибка другого размера.

Вы не можете получить график рассеяния матрицы с массивом / вектором; то, что вы могли бы сделать, это создать два отдельных графика рассеяния, по одному для каждого столбца в вашем X_test:

plt.figure(2)
plt.scatter(y_test, X_test.iloc[:,0].values)

plt.figure(3)
plt.scatter(y_test, X_test.iloc[:,1].values)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...