Python 3.x 为什么.fit()需要2D数组作为第一个参数?
错误消息: ValueError:预期为2D数组,但实际为1D数组: 阵列=[2600 3000 3200 3600 4000]。 使用数组重塑数据。如果数据具有单个特征或数组,则重塑(-1,1)。如果数据包含单个样本,则重塑(1,-1) 如果我将其写为:Python 3.x 为什么.fit()需要2D数组作为第一个参数?,python-3.x,machine-learning,scikit-learn,Python 3.x,Machine Learning,Scikit Learn,错误消息: ValueError:预期为2D数组,但实际为1D数组: 阵列=[2600 3000 3200 3600 4000]。 使用数组重塑数据。如果数据具有单个特征或数组,则重塑(-1,1)。如果数据包含单个样本,则重塑(1,-1) 如果我将其写为: import pandas as pd import numpy as np from sklearn import linear_model import matplotlib.pyplot as plt df = pd.read_csv
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)
我想知道它背后的原因,因为第二个参数作为df.price传递
我的csv文件:
- 面积、价格
- 2600550000
- 3000565000
- 320061000
- 3600680000
- 4000725000
或x=df.area
该x=df['area']
将成为x
类型,大小为系列
。大小应为(n,)
,其中(n,z)
可以是任何正整数z
该x=df[['area']]
将变为x
类型,其大小为DataFrame
,使(5,1)
成为可接受的输入x
该y=df.price
将成为y
类型,其大小系列
为可接受输入(5,)
x
和y
为:
x=[[i]表示df['area']]中的i
y=[i代表df中的i['price']]
这使得
x
和y
都成为列表
结构,并将大小设置为(5,1)
,因此将来如果要在任何ML库中运行(tensorflow、pytorch、keras等)您不会遇到任何困难。请注意,您在上一段中对外部资源的请求在此明确脱离主题(已编辑,因为这将使您的问题符合脱离主题的条件)。
reg.fit(df[['area']],df.price)