这篇文章主要介绍了计算机编程语言实现3种回归模型(线性回归、套索、脊线)的示例,帮助大家更好的进行机器学习,感兴趣的朋友可以了解下
公共的抽象基类
将numpy作为铭牌导入
从字母表导入抽象方法
类线性模型(元类=ABCMeta):
'''
线性模型的抽象基类。
'''
def __init__(self):
#在拟合或预测之前,请将样本的平均值转换为0,将变量转换为1。
self.scaler=StandardScaler()
@抽象方法
定义拟合(自身,X,y):
'''适合功能' ' '
定义预测(自我,X):
#在预测之前,必须运行拟合函数。
如果不是hasattr(self,' coef_ '):
引发异常("请在预测前运行适合’)
X=自缩放器转换(十)
X=np.c_[np.ones(X.shape[0]),X]
# `x @ y`==`np.dot(x,y)`
return X @ self.coef_
Linear Regression
类线性回归(线性模型):
'''
线性回归。
'''
def __init__(self):
超级()。__init__()
定义拟合(自身,X,y):
'''
:param X _:shape=(n _样本1,n _特征)
:param y: shape=(n_samples])
:返回:自我
'''
self.scaler.fit(X)
X=自缩放器转换(十)
X=np.c_[np.ones(X.shape[0]),X]
自我。coef _=NP。利纳格。inv(X . T @ X)@ X . T @ y
回归自我
Lasso
拉索类(线性模型):
'''
套索回归,坐标下降训练。
成本=||X @ coef_||^2阿尔法* | |系数_||_1
'''
def __init__(self,alpha=1.0,n_iter=1000,e=0.1):
自我阿尔法=阿尔法
self.n_iter=n_iter
self.e=e
超级()。__init__()
定义拟合(自身,X,y):
self.scaler.fit(X)
X=自缩放器转换(十)
X=np.c_[np.ones(X.shape[0]),X]
self.coef_=np.zeros(X.shape[1])
对于_在范围(self.n_iter):
z=np.sum(X * X,轴=0)
tmp=np.zeros(X.shape[1])
对于范围内的k(x . shape[1]):
wk=self.coef_[k]
self.coef_[k]=0
p_k=X[:k] @ (y - X @ self.coef_)
如果p _ k-self/2:
w _ k=(p _ k self/2)/z[k]
elif p _ k self/2:
w _ k=(p _ k-self/2)/z[k]
否则:
w_k=0
tmp[k]=w_k
self.coef_[k]=wk
如果NP。利纳格。规范(自我。coef _-tmp)自我。e:
破裂
self.coef_=tmp
回归自我
Ridge
类脊(线性模型):
'''
岭回归。
'''
def __init__(self,alpha=1.0):
自我=
超级()。__init__()
定义拟合(自身,X,y):
'''
:param X _:shape=(n _样本1,n _特征)
:param y: shape=(n_samples])
:返回:自我
'''
self.scaler.fit(X)
X=自缩放器转换(十)
X=np.c_[np.ones(X.shape[0]),X]
self.coef_=np.linalg.inv(
X.T @ X自我。阿尔法* NP。eye(X . shape[1])@ X . T @ y
回归自我
测试代码
将matplotlib.pyplot作为plt导入
将numpy作为铭牌导入
def gen_reg_data():
X=np.arange(0,45,0.1)
X=X NP。随机的。random(size=X . shape[0])* 20
y=2 * X NP。随机的。random(size=X . shape[0])* 20 10
返回x,y
极好的测试_线性_回归():
clf=线性回归()
x,y=gen_reg_data()
clf.fit(X,y)
plt.plot(X,y,'.')
X_axis=np.arange(-5,75,0.1)
plt.plot(X轴,clf.predict(X轴))
plt.title("线性回归")
plt.show()
def test_lasso():
clf=Lasso()
x,y=gen_reg_data()
clf.fit(X,y)
plt.plot(X,y,'.')
X_axis=np.arange(-5,75,0.1)
plt.plot(X轴,clf.predict(X轴))
plt.title("套索")
plt.show()
def test_ridge():
clf=山脊()
x,y=gen_reg_data()
clf.fit(X,y)
plt.plot(X,y,'.')
X_axis=np.arange(-5,75,0.1)
plt.plot(X轴,clf.predict(X轴))
plt.title("山脊")
plt.show()
测试效果
更多机器学习代码,请访问https://github.com/WiseDoge/plume
以上就是计算机编程语言实现3种回归模型(线性回归、套索、脊线)的示例的详细内容,更多关于计算机编程语言实现回归模型的资料请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。