ValueError: ожидаемый 2D-массив, вместо него получен 1D-массив: для матрицы? - PullRequest
0 голосов
/ 19 июня 2020

Я получаю следующую ошибку и не уверен, почему? ValueError: ожидаемый 2D-массив, вместо него получен 1D-массив: набор данных, который я использовал, https://catalog.data.gov/dataset/demographic-statistics-by-zip-code-acfc9

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

Любая помощь будет принята с благодарностью.

#implmenting KNN in python
import pandas as pd
import numpy as np
import operator
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import time
start_time = time.time()

#1) Ingest the data via one of the provided formats.

print("Getting csv")
###################################
#2.) Create a data structure to store the data.
data = pd.read_csv(r"C:\Users\trave.DESKTOP-KM5AM0U\Desktop\UNIT 5\Demographic_Statistics_By_Zip_Code.csv", usecols = ["COUNT PARTICIPANTS", "PERCENT RECEIVES PUBLIC ASSISTANCE"])
#msft.plot("JURISDICTION NAME", ["COUNT PUBLIC ASSISTANCE TOTAL", "COUNT PARTICIPANTS"], subplots=True)
# print("Entering data to datfram only 3 columns")
# print ("The number of rows is")
# print (len(data.index))
# print ("The number of columns is")
# print (len(data.columns))
print(data.head)

#################
print("running plots")
#scikit-learn
#####################################
#MATPLOT FOR REGRESSION LINE DATA
Par = data.iloc[:, 0]

Per = data.iloc[:, 1]

# Count_P = data[]
# Public_Aid = data[]



plt.title('Number of people to public aid percentage')
plt.xlabel('#Participant')
plt.ylabel('% Public aid')

plt.plot (Par, Per, 'k.')

plt.axis([.1,200,.1,1])
plt.grid(True)

print("plots complete")


###################################
print("sklearn running")

from  sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit (X=Par, y=Per)

print('SKLEARN MODULE COMPLETE')
#########################################
####making prediction
print("running prediction")

p = model.predict ([[78]]) [0][0]
print (round(p,2))





# STOP MY TIMER
print ("My program took", time.time() - start_time, "to run")

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Вы можете изменить X (Par в вашем случае) -

От:

Par = data.iloc[:, 0]

Кому:

Par = data.iloc[:, [0]]
0 голосов
/ 19 июня 2020

y, который вы использовали для подбора модели, - 1D, как и результат прогноза модели.

Если вы хотите сделать прогноз на основе уникального значения x, вы можете попробуйте:

p = model.predict([[78]])[0]

p будет 1D, поэтому вам просто нужно получить индекс 0 один раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...