Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x ValueError:应为2D数组,而应为1D数组。线性回归的Python函数_Python 3.x_Pandas_Numpy - Fatal编程技术网

Python 3.x ValueError:应为2D数组,而应为1D数组。线性回归的Python函数

Python 3.x ValueError:应为2D数组,而应为1D数组。线性回归的Python函数,python-3.x,pandas,numpy,Python 3.x,Pandas,Numpy,我不确定如何解决此错误消息。我希望有人能帮忙。谢谢 import numpy as np from sklearn import linear_model from sklearn.model_selection import train_test_split def desired_marketing_expenditure(x_train_marketing_expenditure, y_train_units_sold, x_test_units_sold): X_train

我不确定如何解决此错误消息。我希望有人能帮忙。谢谢

import numpy as np
from sklearn import linear_model
from sklearn.model_selection import train_test_split


def desired_marketing_expenditure(x_train_marketing_expenditure, y_train_units_sold, x_test_units_sold):

    X_train, X_test, y_train, y_test = train_test_split(x_train_marketing_expenditure, y_train_units_sold, test_size=0.4, random_state=101)
    lm = linear_model.LinearRegression()
    lm.fit(X_train,y_train)
    print(lm.intercept_)
    print(lm.coef_)

    #predictions = lm.predict(x_test_units_sold)

print(desired_marketing_expenditure([300000, 200000, 400000, 300000, 100000],[60000, 50000, 90000, 80000, 30000],60000))
OUT:ValueError:应为2D数组,但改为1D数组: 数组=[400000 200000 300000]。
使用数组重塑数据。如果数据具有单个特征或数组,则重塑(-1,1)。如果数据包含单个样本,则重塑(1,-1)。

尝试将
X\u序列
重塑为
(-1,1)
,如错误中所述

import numpy as np
from numpy import array
from sklearn import linear_model
from sklearn.model_selection import train_test_split


def desired_marketing_expenditure(x_train_marketing_expenditure, y_train_units_sold, x_test_units_sold):

    X_train, X_test, y_train, y_test = train_test_split(x_train_marketing_expenditure, y_train_units_sold, test_size=0.4, random_state=101)
    lm = LinearRegression()
    X_train=array(X_train).reshape(-1,1)
    lm.fit(X_train,y_train)
    print(lm.intercept_)
    print(lm.coef_)

    #predictions = lm.predict(x_test_units_sold)

print(desired_marketing_expenditure([300000, 200000, 400000, 300000, 100000],[60000, 50000, 90000, 80000, 30000],60000))
输出:

13333.333333333343
[0.2]
None

期望向量。在numpy中,向量是垂直数组

[[1],[2]]
而不是
[1,2]

import numpy as np
from sklearn import linear_model
from sklearn.model_selection import train_test_split


def desired_marketing_expenditure(x_train_marketing_expenditure, y_train_units_sold, x_test_units_sold):

    X_train, X_test, y_train, y_test = train_test_split(x_train_marketing_expenditure, y_train_units_sold, test_size=0.4, random_state=101)
    lm = linear_model.LinearRegression()
    lm.fit(X_train,y_train)
    print(lm.intercept_)
    print(lm.coef_)

    #predictions = lm.predict(x_test_units_sold)

print(desired_marketing_expenditure([[300000], [200000], [400000], [300000], [100000]],[[60000], [50000], [90000], [80000], [30000]], [[60000]]))

注意:不能转置1D数组
np.array([1,2,3])。T
np.array([1,2,3])
相同,因为转置需要第二个轴。您可以添加一个额外的轴并如下转置:
np.array([1,2,3])[np.newaxis].T
np.array([1]、[2]、[3]])
相同

[13333.33333333]
[[0.2]]
None