Python中Float错误的文字无效

时间:2016-02-18 17:41:02

标签: python scikit-learn linear-regression sklearn-pandas

我正在尝试使用sklearn并使用sklearn库在Python中执行线性回归。

这是我用来训练和拟合模型的代码,我在运行预测函数调用时遇到错误。

jointplot

在拟合模型后,当我尝试使用测试数据进行预测时,会抛出以下错误

train, test = train_test_split(h1, test_size = 0.5, random_state=0)

my_features = ['bedrooms', 'bathrooms', 'sqft_living', 'sqft_lot', 'floors', 'zipcode']
trainInp = train[my_features]

target = ['price']
trainOut = train[target]

regr = LinearRegression()

# Train the model using the training sets

regr.fit(trainInp, trainOut)

print('Coefficients: \n', regr.coef_)

testPred = regr.predict(test)

线性回归模型的系数是

Traceback (most recent call last):
  File "C:/Users/gouta/PycharmProjects/MLCourse1/Python.py", line 52, in <module>
    testPred = regr.predict(test)
  File "C:\Users\gouta\Anaconda2\lib\site-packages\sklearn\linear_model\base.py", line 200, in predict
    return self._decision_function(X)
  File "C:\Users\gouta\Anaconda2\lib\site-packages\sklearn\linear_model\base.py", line 183, in _decision_function
    X = check_array(X, accept_sparse=['csr', 'csc', 'coo'])
  File "C:\Users\gouta\Anaconda2\lib\site-packages\sklearn\utils\validation.py", line 393, in check_array
    array = array.astype(np.float64)
ValueError: invalid literal for float(): 20140604T000000

以下是测试数据集的前五行

Test dataset

由于系数值大而导致错误?如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您的问题是,您是将模型拟合到整个数据框中的一组选定要素上(您执行trainInp = train[my_features]),但是您试图预测整套要素({{1 }}),包括regr.predict(test)等非数字功能。

因此,您应该执行date而不是regr.predict(test)。更一般地说,请记住,无论您对训练集应用哪些预处理(规范化,特征选择,PCA,......),您都应该应用于测试集。

或者,您可以在进行列车测试分割之前减少所关注的特征集:

regr.predict(test[my_features])