Python – SKlearn linear regression coefficient equal to 0

SKlearn linear regression coefficient equal to 0… here is a solution to the problem.

SKlearn linear regression coefficient equal to 0

There is a problem in the simplest linear regression example. At the output, the coefficient is zero, what am I doing wrong? Thanks for your help.

import sklearn.linear_model as lm
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

x = [25,50,75,100]
y = [10.5,17,23.25,29]
pred = [27,41,22,33]
df = pd. DataFrame({'x':x, 'y':y, 'pred':pred})
x = df['x'].values.reshape(1,-1)
y = df['y'].values.reshape(1,-1)
pred = df['pred'].values.reshape(1,-1)
plt.scatter(x,y,color='black')
clf = lm.LinearRegression(fit_intercept =True)
clf.fit(x,y)

m=clf.coef_[0]
b=clf.intercept_
print("slope=",m, "intercept=",b)

Output:

slope= [ 0.  0.  0.  0.] intercept= [ 10.5   17.    23.25  29.  ]

Solution

Think about it. Given that you returned multiple coefficients, this indicates that you have multiple factors. Since it is a single regression, the problem is the shape of the input data. Your initial reshape made the class think that you had 4 variables, each with only one observation.

Try something like this:

import sklearn.linear_model as lm
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

x = np.array([25,99,75,100, 3, 4, 6, 80])[..., np.newaxis]
y = np.array([10.5,17,23.25,29, 1, 2, 33, 4])[..., np.newaxis]

clf = lm.LinearRegression()
clf.fit(x,y)
clf.coef_

Output:

array([[ 0.09399429]])

Related Problems and Solutions