class LinearRegression:
def __init__(self):
self.interception = None
self.coef = None
self._theta = None
def fit(self,xtrain,ytrain):
assert xtrain.shape[0] == ytrain.shape[0],'error'
x_b = np.hstack([np.ones((len(xtrain),1)),xtrain])
self._theta = np.linalg.inv(x_b.T.dot(x_b)).dot(x_b.T).dot(ytrain)
self.coef = self._theta[1:]
self.interception = self._theta[0]
return self
def predict(self,xtest):
assert self._theta is not None,'error'
assert xtest.shape[1] == self.coef.shape[0],'error'
x_b = np.hstack([np.ones((len(xtest),1)),xtest])
return x_b.dot(self._theta)
def score(self,xtest,ytest):
ypredict = self.predict(xtest)
return r2_score(ytest,ypredict)
def __repr__(self):
return 'LinearRegression()'
手写一个简单的多元线性回归
最新推荐文章于 2022-10-04 15:05:10 发布