Python机器学习bug:ValueError_ Expected 2D array, got 1D array instead
admin
2024-02-21 23:44:00
0

0 前言

在学习机器学习时,为了便于理解观察,有时候会拿一些一维的数组进行测试,在初学阶段可能就难免会踩到这个坑。这个bug处理起来比较简单,就是将一维的数组变成二维的数组。

相关环境:

Windows 64位
Python3.9
scikit-learn1.0.2
pandas
1.4.2

1 场景还原

下面用一个简单的小例子还原一下场景来看看如何处理:
在做一个线性回归训练的时候,前面读数据、画图,进展的很顺利,但是到了训练模型步骤竟然报错了,从字面意思,训练模型期望传递一个二维的数组,但是实际传递的是一维数组,从给出的信息看,是X出问题了。
相关代码如下:

# 测试代码
import pandas as pd
# 调用sklearn的线性模型
from sklearn.linear_model import LinearRegressiondata = pd.DataFrame({'x':[1,2,3,4,5,6],'y':[3,4,5,6,7,8]})
X = data.loc[:,'x']
y = data.loc[:,'y']# 实例化线性模型
lr_model = LinearRegression()# 训练模型
lr_model.fit(X,y)
# 预测x结果
y_predict = lr_model.predict(X)
# 预测具体某个值的结果
y_p = lr_model.predict([[3.5]])

报错内容:

ValueError: Expected 2D array, got 1D array instead: array=[1 2 3 4 5 6].
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.

2 解决方案

官方在报错之后也提供了相关的解决方案,只要对报错的**array=[1 2 3 4 5 6]**加一步**array.reshape(-1, 1)**转换为二维数组即可。
具体代码如下,添加了第12~13行。将Series转化为二维数组即可。

import pandas as pd
# 调用sklearn的线性模型
from sklearn.linear_model import LinearRegressiondata = pd.DataFrame({'x':[1,2,3,4,5,6],'y':[3,4,5,6,7,8]})
X = data.loc[:,'x']
y = data.loc[:,'y']# 实例化线性模型
lr_model = LinearRegression()# 将Series转化为二维数组
X = X.values.reshape(-1, 1) 
# 训练模型
lr_model.fit(X,y)
# 预测x结果
y_predict = lr_model.predict(X)
# 预测具体某个值的结果
y_p = lr_model.predict([[3.5]])

除了使用array.reshape(-1, 1),还可以在一开始给变量**X**赋值的时候就从**data**中取出一个二维数组,使用**X = df[['x']]**即可。
具体代码如下:

import pandas as pd
# 调用sklearn的线性模型
from sklearn.linear_model import LinearRegressiondata = pd.DataFrame({'x':[1,2,3,4,5,6],'y':[3,4,5,6,7,8]})
# X = data.loc[:,'x']
X = data[['x']].values      # values是转化为数组,不转也不影响最终的结果,只是会有一个提示:X does not have valid feature names
y = data.loc[:,'y']# 实例化线性模型
lr_model = LinearRegression()# 训练模型
lr_model.fit(X,y)
# 预测x结果
y_predict = lr_model.predict(x)
# 预测具体某个值的结果
y_p = lr_model.predict([[3.5]])

注:这里忽略了一些查看数据的过程,大家有需要自己打印出来看看。

相关内容

热门资讯

安卓系统打游戏推荐,一触即达! 你有没有发现,现在手机游戏越来越好玩了?不管是休闲小游戏还是大型MMORPG,都能在手机上畅玩。但是...
开店宝系统和安卓,助力商家轻松... 你有没有想过,开店也能变得如此轻松?没错,就是那个神奇的“开店宝系统”,它可是安卓平台上的一大神器呢...
安卓平板装早教机系统,安卓平板... 你有没有想过,家里的安卓平板除了刷剧、玩游戏,还能变成一个超级早教机呢?没错,就是那种能让孩子从小接...
电脑装安卓系统好处,电脑装安卓... 你有没有想过,你的电脑装上安卓系统会有什么神奇的变化呢?想象一台原本只能处理文档和PPT的电脑,突然...
HTC莫扎特刷安卓系统,畅享全... 你有没有听说过HTC莫扎特这款手机?最近,它可是刷爆了安卓系统爱好者们的眼球呢!今天,就让我带你一起...
安卓系统的致命漏洞,揭秘潜在安... 你知道吗?最近安卓系统可是闹出了一个大新闻,一个致命的漏洞让无数用户都紧张兮兮的。咱们就来聊聊这个事...
安卓的系统文件在哪,安卓系统文... 你有没有想过,你的安卓手机里那些神秘的系统文件都藏在哪个角落呢?别急,今天就来带你一探究竟,让你对这...
公认最好的安卓系统,揭秘公认最... 你有没有想过,为什么安卓手机那么受欢迎?是不是因为那个公认最好的安卓系统?没错,今天咱们就来聊聊这个...
安卓系统默认音量调整,轻松设置... 你有没有发现,每次拿起手机,那个默认的音量调整按钮总是那么默默无闻地躺在那里?今天,就让我带你一探究...
照片怎样导出安卓系统,一键导出... 你有没有遇到过这种情况:手机里存了好多美美的照片,想分享给朋友或者保存到电脑上,却发现导出照片到安卓...
什么电视支持安卓系统,解锁智能... 你有没有想过,家里的电视是不是也能像手机一样,随时随地下载各种应用,畅享网络世界呢?没错,现在很多电...
鸿蒙系统投屏安卓系统电视,开启... 亲爱的读者们,你是否曾想过,家里的安卓电视也能享受到鸿蒙系统的魅力呢?没错,今天就要来聊聊这个让人眼...
安卓系统如何连手柄,安卓系统下... 你有没有想过,在安卓系统上玩游戏的时候,如果能够用上游戏手柄,那该有多爽啊!想象手指轻轻一按,游戏角...
安卓打包当前系统rom,基于安... 你有没有想过,手机里的安卓系统其实就像是一个个精心打造的城堡,而ROM就像是这座城堡的装修风格。今天...
索爱售后安卓系统,索爱售后安卓... 你有没有遇到过手机售后的问题呢?尤其是那些安卓系统的手机,有时候出了点小状况,真是让人头疼。今天,咱...
安卓7.0系统速度咋样,速度与... 你有没有发现,自从手机更新到安卓7.0系统后,感觉整个手机都焕然一新了呢?今天,就让我来给你详细聊聊...
安卓文件系统隔离,Androi... 你知道吗?在安卓的世界里,有一个神奇的小秘密,那就是安卓文件系统隔离。听起来是不是有点高大上?别急,...
电脑板安卓系统下载,轻松实现多... 你有没有想过,你的电脑板突然间变得如此强大,竟然能运行安卓系统?没错,这就是科技的魅力!今天,就让我...
安卓系统双开app排行,热门双... 安卓系统双开App排行大揭秘在数字化时代,手机已经成为我们生活中不可或缺的一部分。而安卓系统,作为全...
安卓原生系统谁在开发,谷歌主导... 你有没有想过,那个陪伴你每天刷抖音、玩游戏、办公的安卓系统,究竟是谁在背后默默开发呢?今天,就让我带...