1、假设
误差是独立并且具有相同的分布,并且服从均值为0方差b的高斯分布。
2、评估方法
R2的值越接近1,则模型拟合越好计算如下:
3、梯度下降
批量梯度下降:每次考虑所有样本,速度慢
随机梯度下降:每次找一个样本,迭代速度快,但不一定每次都朝着收敛的方法
小批量梯度下降:一般采用。可以采用32/64/128/256等
4、Example
from sklearn import datasets
from sklearn import linear_model
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import r2_score,mean_squared_error
# 定义数据集
def dataset_model(x):
params = np.arange(1,x.shape[-1]+1)
y = np.sum(params*x)+np.random.randn(1)*0.1
return y
X = pd.DataFrame(np.random.rand(1000,6))
y = X.apply(lambda x_rows:pd.Series(dataset_model(x_rows)),axis=1)
# 拆分训练集 测试集
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state = 0)
# 标准化处理
ss_x_train = StandardScaler().fit_transform(X_train)
ss_y_train = StandardScaler().fit_transform(y_train)
ss_x_test = StandardScaler().fit_transform(X_test)
ss_y_test = StandardScaler().fit_transform(y_test)
# 线性回归模型
lr = linear_model.LinearRegression()
lr.fit(ss_x_train,ss_y_train)
p_ret = lr.predict(ss_x_test)
# 结果评价R2
r2 = r2_score(ss_y_test, p_ret)
print (r2)
mse = mean_squared_error(ss_y_test,p_ret)
rmse = mse ** (1/2)
rmse
网友评论