import pandas as pd
import numpy as np
from sklearn import linear_model
import matplotlib.pyplot as plt
df = pd.read_csv('homeprices.csv')
plt.xlabel('area')
plt.ylabel('price')
plt.scatter(df.area,df.price,color='red',marker='.')
reg = linear_model.LinearRegression()
reg.fit(df.area,df.price)
错误信息:
ValueError:预期的2D数组,而是1D数组:array = [2600 3000 3200 3600 4000]。如果数据具有单个功能,则使用array.reshape(-1,1)重整数据;如果包含单个样本,则使用array.reshape(1,-1)重整数据。
如果我将其编写为:
reg.fit(df[['area']],df.price)
我想知道其背后的原因,因为第二个参数作为df.price传递。
我的csv文件:
从文档中,变量x应该声明为
形状为{{n_samples,n_features)的X {类似数组,稀疏矩阵}
当您声明:
x = df.area
或x = df['area']
将x
成为Series
类型与尺寸(n,)
。大小应为(n, z)
,其中z
可以是任何正整数。
x = df[['area']]
的x
将变得DataFrame
类型与尺寸(5, 1)
,这使得一个x
可接受的输入。
y = df.price
的y
将变得Series
类型与尺寸(5,)
其中s可接受的输入。
y:形状类似数组(n_samples,)
但如果我是你,我声明x
,并y
为:
x = [[i] for i in df['area']]
y = [i for i in df['price']]
这使得x
和y
作为list
结构并将大小设置为(5, 1)
,因此将来如果您想在任何ML库(tensorflow,pytorch,keras等)中运行,都不会遇到任何困难。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句