linearRegression() returns list within list (sklearn)

list, python, regression

Solution

This is fixed by updating two files in the SciKit-Learn folder.

The code is here: https://github.com/scikit-learn/scikit-learn/commit/d0b20f0a21ba42b85375b1fbc7202dc3962ae54f

Problem

I'm doing multivariate linear regression in Python (sklearn), but for some reason, the coefficients are not correctly returned as a list. Instead, a list IN A LIST is returned: ``` from sklearn import linear_model clf = linear_model.LinearRegression() # clf.fit ([[0, 0, 0], [1, 1, 1], [2, 2, 2]], [0, 1, 2]) clf.fit([[394, 3878, 13, 4, 0, 0],[384, 10175, 14, 4, 0, 0]],[3,9]) print 'coef array',clf.coef_ print 'length', len(clf.coef_) print 'getting value 0:', clf.coef_[0] print 'getting value 1:', clf.coef_[1] ``` This returns the values in a list of a list [[]] instead of a list []. Any idea why this is happening? Output: ``` coef array [[ 1.03428648e-03 9.54477167e-04 1.45135995e-07 0.00000000e+00 0.00000000e+00 0.00000000e+00]] length 1 getting value 0: [ 1.03428648e-03 9.54477167e-04 1.45135995e-07 0.0000000 0e+00 0.00000000e+00 0.00000000e+00] getting value 1: Traceback (most recent call last): File "regress.py", line 8, in <module> print 'getting value 1:', clf.coef_[1] IndexError: index out of bounds ``` But this works: ``` from sklearn import linear_model clf = linear_model.LinearRegression() clf.fit ([[0, 0, 0], [1, 1, 1], [2, 2, 2]], [0, 1, 2]) # clf.fit([[394, 3878, 13, 4, 0, 0],[384, 10175, 14, 4, 0, 0]],[3,9]) print 'coef array',clf.coef_ print 'length', len(clf.coef_) print 'getting value 0:', clf.coef_[0] print 'getting value 1:', clf.coef_[1] ``` Output: ``` coef array [ 0.33333333 0.33333333 0.33333333] length 3 getting value 0: 0.333333333333 getting value 1: 0.333333333333 ```

Original source