Python Sklearn Linear Regression Value Error

主宰稳场 提交于 2019-12-01 11:04:38

问题


Ive been trying out Linear Regression using sklearn. Sometime I get a value error, sometimes it works fine. Im not sure which approach to use. Error Message is as follows:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/linear_model/base.py", line 512, in fit
    y_numeric=True, multi_output=True)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/utils/validation.py", line 531, in check_X_y
    check_consistent_length(X, y)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/utils/validation.py", line 181, in check_consistent_length
    " samples: %r" % [int(l) for l in lengths])
ValueError: Found input variables with inconsistent numbers of samples: [1, 200]

The code is something like this:

import pandas as pd
from sklearn.linear_model import LinearRegression
data = pd.read_csv('http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv', index_col=0);
x = data['TV']
y = data['Sales']
lm = LinearRegression()
lm.fit(x,y)

Please help me out. I am a student, trying to pick up on Machine Learning basics.


回答1:


lm.fit expects X to be a

numpy array or sparse matrix of shape [n_samples,n_features]

Your x has shape:

In [6]: x.shape
Out[6]: (200,)

Just use:

lm.fit(x.reshape(-1,1) ,y)



回答2:


Pass your X in as a dataframe and not a series, you can use [[]] "double brackets" or to_frame() for a single feature:

import pandas as pd
from sklearn.linear_model import LinearRegression
data = pd.read_csv('http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv', index_col=0);
x = data[['TV']]

Or

x = data['TV'].to_frame()
y = data['Sales']
lm = LinearRegression()
lm.fit(x,y)

Output:

LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)


来源:https://stackoverflow.com/questions/43971588/python-sklearn-linear-regression-value-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!