Ошибка значения: y должен быть массивом 1d, вместо этого получен массив формы (1, 375)

#python #pandas #sklearn-pandas

Вопрос:

Я создал код, который удаляет ругательства, но в нем говорится

Ошибка значения: y должен быть массивом 1d, вместо этого получил массив формы (1, 375).

Как вы можете видеть, я пытался изменить его, но это не сработало. И я написал все ошибки ниже кода.

 import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns; sns.set()
from sklearn.datasets import make_blobs

import pandas as pd

df = pd.read_excel('data.xls')


def handle_non_numerical_data(df):
    columns = df.columns.values
    for column in columns:
        text_digit_vals = {}
        def convert_to_int(val):
            return text_digit_vals[val]

        if df[column].dtype != np.int64 and df[column].dtype != np.float64:
            column_contents = df[column].values.tolist()
            unique_elements = set(column_contents)
            x = 0
            for unique in unique_elements:
                if unique not in text_digit_vals:
                    text_digit_vals[unique] = x
                    x =1

            df[column] = list(map(convert_to_int, df[column]))

    return df

df = handle_non_numerical_data(df)

X = df['str']
X = X.values.reshape(1, -1)

y = df['curse']
y = y.values.reshape(1,len(y))

plt.show()
from sklearn.naive_bayes import GaussianNB

model = GaussianNB()

model.fit(X,y)
rng = np.random.RandomState(0)

X_new=[-6,-14] [14,18]*rng.rand(1000,2)

y_new=model.predict(X_new)
plt.scatter(X[:,0],X[:,1],c=y,s=50,cmap='RdBu')
lim = plt.axis()
plt.scatter(X_new[:,0],X_new[:,1],c=y_new,s=20,cmap='RdBu',alpha=0.2)
plt.axis(lim)
plt.show()
 

Обратная связь (последний последний звонок):
Файл «C:Userspc1AppDataLocalProgramsPythonPython39libsite-packagessklearnnaive_bayes.py», строка 207, в соответствии
X, y = self._validate_data(X, y)
Файл «C:Userspc1AppDataLocalProgramsPythonPython39libsite-packagessklearnbase.py», строка 433, в _validate_data
X, y = check_X_y(X, y, **параметры проверки)
Файл «C:Userspc1AppDataLocalProgramsPythonPython39libsite-packagessklearnutilsvalidation.py», строка 63, в inner_f
возвращает f(*аргументы, **кварги)
Файл «C:Userspc1AppDataLocalProgramsPythonPython39libsite-packagessklearnutilsvalidation.py», строка 883, в столбце check_X_y
y = column_or_1d(y, предупреждение=True)
Файл «C:Userspc1AppDataLocalProgramsPythonPython39libsite-packagessklearnutilsvalidation.py», строка 63, в inner_f
возвращает f(*аргументы, **кварги)
Файл «C:Userspc1AppDataLocalProgramsPythonPython39libsite-packagessklearnutilsvalidation.py», строка 921, в столбце_or_1d ошибка
повышения значения(
Ошибка значения: y должен быть массивом 1d, вместо этого получил массив формы (1, 375).

Ответ №1:

вы изменили его на (1, n), который является 2d-массивом. Он ожидает получить массив 1d