没有合适的资源?快使用搜索试试~ 我知道了~
首页Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
公共的抽象基类 import numpy as np from abc import ABCMeta, abstractmethod class LinearModel(metaclass=ABCMeta): """ Abstract base class of Linear Model. """ def __init__(self): # Before fit or predict, please transform samples' mean to 0, var to 1. self.scaler = StandardScaler() @abstractmethod
资源详情
资源评论
资源推荐

Python 实现实现3种回归模型(种回归模型(Linear
Regression,,Lasso,,Ridge)的示例)的示例
公共的抽象基类公共的抽象基类
import numpy as np
from abc import ABCMeta, abstractmethod
class LinearModel(metaclass=ABCMeta):
"""
Abstract base class of Linear Model.
"""
def __init__(self):
# Before fit or predict, please transform samples' mean to 0, var to 1.
self.scaler = StandardScaler()
@abstractmethod
def fit(self, X, y):
"""fit func"""
def predict(self, X):
# before predict, you must run fit func.
if not hasattr(self, 'coef_'):
raise Exception('Please run `fit` before predict')
X = self.scaler.transform(X)
X = np.c_[np.ones(X.shape[0]), X]
# `x @ y` == `np.dot(x, y)`
return X @ self.coef_
Linear Regression
class LinearRegression(LinearModel):
"""
Linear Regression.
"""
def __init__(self):
super().__init__()
def fit(self, X, y):
"""
:param X_: shape = (n_samples + 1, n_features)
:param y: shape = (n_samples])
:return: self
"""
self.scaler.fit(X)
X = self.scaler.transform(X)
X = np.c_[np.ones(X.shape[0]), X] self.coef_ = np.linalg.inv(X.T @ X) @ X.T @ y
return self
Lasso
class Lasso(LinearModel):
"""
Lasso Regression, training by Coordinate Descent.
cost = ||X @ coef_||^2 + alpha * ||coef_||_1
"""
def __init__(self, alpha=1.0, n_iter=1000, e=0.1):
self.alpha = alpha
self.n_iter = n_iter
self.e = e
super().__init__()
def fit(self, X, y):
self.scaler.fit(X)
X = self.scaler.transform(X)

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0