首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError:应为2D数组,而不是1D数组: array=[19. 27.896 0.1.0。]。使用array.reshape(-1,1)重塑数据

ValueError:应为2D数组,而不是1D数组: array=[19. 27.896 0.1.0。]。使用array.reshape(-1,1)重塑数据
EN

Stack Overflow用户
提问于 2021-02-10 22:22:50
回答 1查看 275关注 0票数 0

我正在尝试使用K近邻来预测美国个人的保险成本

我已经成功地训练了数据集,当我尝试预测时,它开始处理错误

代码语言:javascript
复制
ValueError: Expected 2D array, got 1D array instead:
array=[19.    27.896  0.     1.     0.   ].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

同时执行以下代码:

代码语言:javascript
复制
import pandas as pd 
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)


insurance = pd.read_csv(r"C:\Users\USER\Desktop\data set\insurance.csv")
insurance2 = pd.read_csv(r"C:\Users\USER\Desktop\data set\insurance.csv")


insurance['charges'] = insurance['charges'].astype('int')

sex_s=[]
for i in insurance['sex']:
    if i == "female":
        sex_s.append(1)
    elif i == "male":
        sex_s.append(0)
    
insurance2['sx']=sex_s

smk=[]
for y in insurance['smoker']:
    if y == "yes":
        smk.append(1)
    elif y == "no":
        smk.append(0)

insurance2['smks']=smk



insurance2 = insurance2.drop(['charges',"region", 'sex','smoker'], axis =1)

insurance2.rename(columns={'smks':'smoker', 'sx':'sex'}, inplace = True)


insurance2['bmi'] = insurance2['bmi'].astype('int')
insurance2['children'] = insurance2['children'].astype('int')
insurance2['sex'] = insurance2['sex'].astype('int')
insurance2['smoker'] = insurance2['smoker'].astype('int')
insurance2['age'] = insurance2['age'].astype('int')
insurance2.dtypes


X = insurance2
y = insurance['charges']


knn.fit(X,y)

knn.predict([19, 27.896, 0, 1, 0])

这是我第一次尝试预测

EN

回答 1

Stack Overflow用户

发布于 2021-02-10 22:30:44

我认为你在最后一行漏掉了一对额外的方括号,如果你看一下文档(https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html),你会看到他们用predict和下面的内容:

代码语言:javascript
复制
neigh.predict([[1.1]])

所以只要替换掉

代码语言:javascript
复制
knn.predict([19, 27.896, 0, 1, 0])

使用

代码语言:javascript
复制
knn.predict([[19, 27.896, 0, 1, 0]])

为了将来的参考,请确保首先查找您的问题以检查它是否存在,因为这是Error in Python script "Expected 2D array, got 1D array instead:"?的副本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66138731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档