我使用线性回归通过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")
答案 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