使用sklearn和线性回归时出错:shape(1,16)和(1,1)未对齐:16(dim 1)!= 1(dim 0)

使用sklearn和线性回归时出错:shape(1,16)和(1,1)未对齐:16(dim 1)!= 1(dim 0),第1张

概述我看到了机器学习的故事,我偶然发现了youtube siraj和他的Udacity视频,想要尝试拿起一些东西.他的视频参考:https://www.youtube.com/watch?v=vOppzHpvTiQ&index=1&list=PL2-dafEMk2A7YdKv4XfKpfbTH5z6rEEj3在他的视频中,他有一个导入和读取的tx

我看到了机器学习的故事,我偶然发现了youtube siraj和他的Udacity视频,想要尝试拿起一些东西.

他的视频参考:https://www.youtube.com/watch?v=vOppzHpvTiQ&index=1&list=PL2-dafEMk2A7YdKv4XfKpfbTH5z6rEEj3

在他的视频中,他有一个导入和读取的txt文件,但是当我尝试重新创建txt文件时,它无法正确读取.相反,我尝试使用相同的数据创建一个pandas数据帧并对其执行线性回归/预测,但后来我得到了以下错误.

找到具有不一致样本数的输入变量:[1,16]以及关于传递1d数组的内容,我需要重新整形它们.

然后,当我试图在这篇文章后重塑它们:Sklearn : ValueError: Found input variables with inconsistent numbers of samples: [1,6]

我收到这个错误….

形状(1,16)和(1,1)未对齐:16(暗淡1)!= 1(暗0)

这是我在下面的代码.我知道这可能是一个语法错误,我只是不熟悉这个scklearn,并希望得到一些帮助.

import pandas as pdimport matplotlib.pyplot as pltimport numpy as npfrom sklearn import linear_model#DF = pd.read_fwf('BrainBodyWeight.txt')DF = pd.DataFrame()DF['Brain'] = [3.385,.480,1.350,465.00,36.330,27.660,14.830,1.040,4.190,0.425,0.101,0.920,1.000,0.005,0.060,3.500 ]DF['Body'] = [44.500,15.5,8.1,423,119.5,115,98.2,5.5,58,6.40,4,5.7,6.6,.140,1,10.8]try:    x = DF['Brain']    y = DF['Body']    x = x.toList()    y = y.toList()    x = np.asarray(x)    y = np.asarray(y)    body_reg = linear_model.linearRegression()    body_reg.fit(x.reshape(-1,1),y.reshape(-1,1))    plt.scatter(x,y)    plt.plot(x,body_reg.predict(x))    plt.show()except Exception as e:    print(e)

任何人都可以解释为什么sklearn不喜欢我的输入????最佳答案从documentation开始,linearRegression.fit()需要一个带有[n_samples,n_features]形状的x数组.这就是为什么你在调用fit之前重塑你的x数组的原因.因为如果你没有,你将拥有一个带有(16,)形状的数组,它不符合所需的[n_samples,n_features]形状,所以没有给出n_features.

x = DF['Brain']x = x.toList()x = np.asarray(x)# 16 samples,None featurex.shape(16,)# 16 samples,1 featurex.reshape(-1,1).shape(16,1)

对于LinearRegression.predict函数(以及一致性)也有相同的要求,您只需要在调用预测函数时进行相同的整形.

plt.plot(x,body_reg.predict(x.reshape(-1,1)))

或者,您可以在调用任何函数之前重新整形x数组.

对于特征参考,只需调用DF [‘Brain’]值即可轻松获得内部numpy值数组.您无需将其强制转换为列表 – > numpy数组.所以你可以使用它而不是所有的转换:

x = DF['Brain'].values.reshape(1,-1)y = DF['Body'].values.reshape(1,-1)body_reg = linear_model.linearRegression()body_reg.fit(x,y)
总结

以上是内存溢出为你收集整理的使用sklearn和线性回归时出错:shape(1,16)和(1,1)未对齐:16(dim 1)!= 1(dim 0)全部内容,希望文章能够帮你解决使用sklearn和线性回归时出错:shape(1,16)和(1,1)未对齐:16(dim 1)!= 1(dim 0)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1206054.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存