尝试做线性线性回归分类器,结果是“ ValueError:预期的2D数组,取而代之的是1D数组

时间:2019-04-30 13:49:04

标签: python

我使用线性回归通过scikit-learn toturiol进行研究。当我尝试编写自己的代码来执行此操作时,出现错误提示 “”如果它包含单个样本。“。format(array)) ValueError:预期的2D数组,而是1D数组: “#仅使用一项功能:” saemple代码正在发送一维数组 糖尿病_X =糖尿病。数据[:,np.newaxis,2]

这是我尝试的: 1.用列表代替numpy数组 2.在示例代码中打印出diabe_X [[0.06169621]  [-0.05147406] .....]] 然后,我尝试如下更改代码 xp = [[3449] [1058] [2201]] 收到错误消息,表示预计将要结束。 然后我尝试了 xp = [[3449],[1058],[2201]] 相同的错误消息

我的代码

xs=np.array([ 3449 ,  1058,  2201,  2500,  1953,  1637,  1400,  1836,  1400,  4677,  1639,  2094,  1491], dtype=np.float64)
ys=np.array([529000,279090,479000,319000,369000,346000,425000,380000,425000,646900,349900,384900,284900], dtype=np.float64)

xp=[ 3449 ,  1058,  2201,  2500,  1953,  1637,  1400,  1836,  1400,  4677,  1639,  2094,  1491]
yp=[529000,279090,479000,319000,369000,346000,425000,380000,425000,646900,349900,384900,284900]

clf= linear_model.LinearRegression()

clf.fit(xp, yp)
g=clf.predict( 279090)
print("+++++++ guess +++++++")
print(g)
print("jjjjjjj")

2 个答案:

答案 0 :(得分:0)

由于错误状态,拟合函数需要2D数组,如果您有一个功能,这意味着您拥有1D数组,则可以使用reshape(1, -1)将其设置为2D 。
这是一个有效的示例:

xs=np.array([ 3449 ,  1058,  2201,  2500,  1953,  1637,  1400,  1836,  1400,  4677,  1639,  2094,  1491], dtype=np.float64)
ys=np.array([529000,279090,479000,319000,369000,346000,425000,380000,425000,646900,349900,384900,284900], dtype=np.float64)

xp=[ 3449 ,  1058,  2201,  2500,  1953,  1637,  1400,  1836,  1400,  4677,  1639,  2094,  1491]
yp=[529000,279090,479000,319000,369000,346000,425000,380000,425000,646900,349900,384900,284900]

xp = np.array(xp).reshape(1, -1)
yp = np.array(yp).reshape(1, -1)
clf= linear_model.LinearRegression()

clf.fit(xp, yp)
g=clf.predict(xs.reshape(1, -1))
print("+++++++ guess +++++++")
print(g)
print("jjjjjjj")

答案 1 :(得分:0)

使用xp = np.array([....])yp = np.array([....])将它们转换为NumPy数组后,您可以将其整形为带有一列的2d数组

xp = xp.reshape(xp.shape[0],-1)
yp = yp.reshape(yp.shape[0],-1)

clf= linear_model.LinearRegression()

clf.fit(xp, yp)
g=clf.predict( 279090)
print("+++++++ guess +++++++")
print(g)
print("jjjjjjj")

# +++++++ guess +++++++
# [[24426732.22]]
# jjjjjjj