波士顿房价预测案例(python scikit-learn)---多元线性回归(多角度实验分析)

news2025/1/10 7:42:56

波士顿房价预测案例(python scikit-learn)—多元线性回归(多角度实验分析)

这次实验,我们主要从以下几个方面介绍:

一、相关框架介绍

二、数据集介绍

三、实验结果-优化算法对比实验,数据标准化对比实验,正则化对比试验,多项式回归degree对比实验,岭回归alpha敏感度实验

一、相关框架介绍

Scikit-learn(全称:Simple and Efficient Tools for Machine Learning,意为“简单高效的机器学习工具”)是一个开源的Python机器学习库,它提供了简单而高效的工具,用于数据挖掘和数据分析。

Scikit-learn主要特点包括:丰富的算法库、易于使用、高效的性能、数据预处理和特征选择、模型评估和选择、可扩展性、社区支持。

二、数据集介绍

2.1数据集来源

波士顿房价数据集是一个著名的数据集,它在机器学习和统计分析领域中被广泛用于回归问题的实践和研究。这个数据集包含了美国马萨诸塞州波士顿郊区的房价信息,这些信息是由美国人口普查局收集的。
在这里插入图片描述
该数据集共包括507行数据,十三列特征,外加一列标签。

2.2数据集特征

数据集的特征:
CRIM: 城镇人均犯罪率 ZN: 占地面积超过25,000平方英尺的住宅用地比例
INDUS: 每个城镇非零售业务的比例 CHAS: 查尔斯河虚拟变量(如果是河道,则为1;否则为0)
NOX: 一氧化氮浓度(每千万份) RM: 每间住宅的平均房间数
AGE: 1940年以前建造的自住单位比例 DIS: 波士顿的五个就业中心加权距离
RAD: 径向高速公路的可达性指数 TAX: 每10,000美元的全额物业税率
PTRATIO: 城镇的学生与教师比例 B: 1000(Bk - 0.63)^ 2,其中Bk是城镇黑人的比例
LSTAT: 人口状况下降% MEDV: 自有住房的中位数报价, 单位1000美元

三、实验结果-优化算法对比实验,数据标准化对比实验,正则化对比试验,多项式回归degree对比实验,岭回归alpha敏感度实验

3.1 优化算法对比实验


# 从 sklearn.datasets 导入波士顿房价数据读取器。
from sklearn.datasets import load_boston
# 从读取房价数据存储在变量 boston 中。
boston = load_boston()
# 输出数据描述。
from matplotlib import pyplot as plt
from matplotlib import font_manager
from matplotlib import pyplot as plt
import numpy as np
import matplotlib
# 参数设置

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题


# 从sklearn.cross_validation 导入数据分割器。
from sklearn.model_selection import train_test_split
# 导入 numpy 并重命名为 np。
import numpy as np
from sklearn.linear_model import Ridge,Lasso
X = boston.data
y = boston.target
# 随机采样 25% 的数据构建测试样本,其余作为训练样本。

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33, test_size=0.25)
# 分析回归目标值的差异。




print("The max target value is", np.max(boston.target))
print("The min target value is", np.min(boston.target)) 
print("The average target value is", np.mean(boston.target))


# 从 sklearn.preprocessing 导入数据标准化模块。
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import Normalizer
# 分别初始化对特征和目标值的标准化器。
ss_X = StandardScaler()
ss_y = StandardScaler()
ss="StandardScaler"
# 分别对训练和测试数据的特征以及目标值进行标准化处理。
X_train = ss_X.fit_transform(X_train)
X_test = ss_X.transform(X_test)

y_train = ss_y.fit_transform(y_train.reshape(-1, 1))

y_test = ss_y.transform(y_test.reshape(-1, 1))

# 从 sklearn.linear_model 导入 LinearRegression。
from sklearn.linear_model import LinearRegression
# 使用默认配置初始化线性回归器 LinearRegression。

def train_model():
    lr = LinearRegression()
    # 使用训练数据进行参数估计。
    lr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lr_y_predict = lr.predict(X_test)
    # 从 sklearn.linear_model 导入 SGDRegressor。
    from sklearn.linear_model import SGDRegressor
    # 使用默认配置初始化线性回归器 SGDRegressor。
    sgdr = SGDRegressor()
    # 使用训练数据进行参数估计。
    sgdr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    sgdr_y_predict = sgdr.predict(X_test)
    ridge = Ridge(alpha=10)
    # 使用训练数据进行参数估计。
    ridge.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    ridge_y_predict = ridge.predict(X_test)
   # Lasso
    lasso = Lasso(alpha=0.01)
    # 使用训练数据进行参数估计。
    lasso.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lasso_y_predict = lasso.predict(X_test)
    
    return lr,sgdr,ridge,lasso,lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict
  


def evaluate(X_test,y_test,lr_y_predict,model):
# 使用 LinearRegression 模型自带的评估模块,并输出评估结果。
    nmse=model.score(X_test, y_test)
    print('The value of default measurement of LinearRegression is',nmse )
    
    # 从 sklearn.metrics 依次导入 r2_score、mean_squared_error 以及 mean_absoluate_error 用于回归性能的评估。
    from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
    # 使用 r2_score 模块,并输出评估结果。
    r2=r2_score(y_test, lr_y_predict)
    print('The value of R-squared of LinearRegression is',r2 )
    # 使用 mean_squared_error 模块,并输出评估结果。



    #print(y_test)
    lr_y_predict=lr_y_predict.reshape(len(lr_y_predict),-1)
    #print(lr_y_predict)
    #print(mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict)))
    mse=mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict))
    print('The mean squared error of LinearRegression is',mse
    )

    # 使用 mean_absolute_error 模块,并输出评估结果。
    mae= mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict))
    print('The mean absoluate error of LinearRegression is', mae
    )
    return round(nmse,2),round(r2,2),round(mse,2),round(mae,2)
    



def plot(model1,model2):
# 数据
    classes = [ 'r2', 'mse', 'mae']
    # r2s = [87, 85, 89, 81, 78]
    # mess = [85, 98, 84, 79, 82]
    # nmse = [83, 85, 82, 87, 78]
 
    # 将横坐标班级先替换为数值
    x = np.arange(len(classes))
    width = 0.2
    r2s_x = x
    mess_x = x + width
    nmse_x = x + 2 * width
    mae_x = x + 3 * width

    # 绘图
    plt.bar(r2s_x, model1, width=width, color='gold', label='LinearRegression')
    plt.bar(mess_x,model2,width=width,color="silver",label="SGDRegressor")
    #plt.bar(nmse_x,model3,width=width, color="saddlebrown",label="ridge-alpha=10")
    #plt.bar(mae_x,model4,width=width, color="red",label="lasso-alpha=0.01")
    plt.title("lr,sdgr+"+ss+"性能对比图")
    #将横坐标数值转换为班级
    plt.xticks(x + width, classes)
 
    #显示柱状图的高度文本
    for i in range(len(classes)):
        plt.text(r2s_x[i],model1[i], model1[i],va="bottom",ha="center",fontsize=8)
        plt.text(mess_x[i],model2[i], model2[i],va="bottom",ha="center",fontsize=8)
        #plt.text(nmse_x[i],model3[i], model3[i],va="bottom",ha="center",fontsize=8)
        #plt.text(mae_x[i],model4[i], model4[i],va="bottom",ha="center",fontsize=8)

 
    #显示图例
    plt.legend(loc="upper right")
    plt.show()

    #coding=gbk;
   
def plot_line(X,y,model,name):
   
    #--------------------------------------------------------------
    #z是我们生成的等差数列,用来画出线性模型的图形。
    z=np.linspace(0,50,200).reshape(-1,1)
    plt.scatter(y,ss_y.inverse_transform(model.predict(ss_X.transform(X)).reshape(len(X),-1)),c="orange",edgecolors='k')
    plt.plot(z,z,c="k")
    plt.xlabel('y')
    plt.ylabel("y_hat")
    plt.title(name)
    plt.show()
   

lr,sgdr,ridge,lasso,lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict=train_model()

models=[lr,sgdr]
r2s=[]
mess=[]
maes=[]
nmse=[]
results=[]
plot_line(X,y,lr,'LinearRegression+'+ss)
plot_line(X,y,sgdr,'SGDRegressor+'+ss)
#plot_line(X,y,lasso,'lasso'+ss)
#plot_line(X,y,ridge,'ridge'+ss)
print("sgdr_y_predict")
print(sgdr_y_predict)

predicts=[lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict]
i=0
for model in models:
             
        result=evaluate(X_test,y_test,predicts[i],model)
        i=i+1
        results.append(result)
        # r2s.append(result[1])
        # mess.append(result[2])
        # maes.append(result[3])
        # nmse.append(result[0])
        

    #evaluate(X_test,y_test,sgdr_y_predict,sgdr)
print(results)
        

    #evaluate(X_test,y_test,sgdr_y_predict,sgdr)
plot(results[0][1:4],results[1][1:4])

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 数据标准化对比实验



# 从 sklearn.datasets 导入波士顿房价数据读取器。
from sklearn.datasets import load_boston
# 从读取房价数据存储在变量 boston 中。
boston = load_boston()
# 输出数据描述。
from matplotlib import pyplot as plt
from matplotlib import font_manager
from matplotlib import pyplot as plt
import numpy as np
import matplotlib
# 参数设置

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题


# 从sklearn.cross_validation 导入数据分割器。
from sklearn.model_selection import train_test_split
# 导入 numpy 并重命名为 np。
import numpy as np
from sklearn.linear_model import Ridge,Lasso
X = boston.data
y = boston.target
# 随机采样 25% 的数据构建测试样本,其余作为训练样本。

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33, test_size=0.25)
# 分析回归目标值的差异。




print("The max target value is", np.max(boston.target))
print("The min target value is", np.min(boston.target)) 
print("The average target value is", np.mean(boston.target))


# 从 sklearn.preprocessing 导入数据标准化模块。
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import Normalizer
# 分别初始化对特征和目标值的标准化器。
ss_X = StandardScaler()
ss_y = StandardScaler()
ss="StandardScaler"
# 分别对训练和测试数据的特征以及目标值进行标准化处理。
X_train = ss_X.fit_transform(X_train)
X_test = ss_X.transform(X_test)

y_train = ss_y.fit_transform(y_train.reshape(-1, 1))

y_test = ss_y.transform(y_test.reshape(-1, 1))

# 从 sklearn.linear_model 导入 LinearRegression。
from sklearn.linear_model import LinearRegression
# 使用默认配置初始化线性回归器 LinearRegression。

def train_model():
    lr = LinearRegression()
    # 使用训练数据进行参数估计。
    lr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lr_y_predict = lr.predict(X_test)
    # 从 sklearn.linear_model 导入 SGDRegressor。
    from sklearn.linear_model import SGDRegressor
    # 使用默认配置初始化线性回归器 SGDRegressor。
    sgdr = SGDRegressor()
    # 使用训练数据进行参数估计。
    sgdr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    sgdr_y_predict = sgdr.predict(X_test)
    ridge = Ridge(alpha=10)
    # 使用训练数据进行参数估计。
    ridge.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    ridge_y_predict = ridge.predict(X_test)
   # Lasso
    lasso = Lasso(alpha=0.01)
    # 使用训练数据进行参数估计。
    lasso.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lasso_y_predict = lasso.predict(X_test)
    
    return lr,sgdr,ridge,lasso,lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict
  


def evaluate(X_test,y_test,lr_y_predict,model):
# 使用 LinearRegression 模型自带的评估模块,并输出评估结果。
    nmse=model.score(X_test, y_test)
    print('The value of default measurement of LinearRegression is',nmse )
    
    # 从 sklearn.metrics 依次导入 r2_score、mean_squared_error 以及 mean_absoluate_error 用于回归性能的评估。
    from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
    # 使用 r2_score 模块,并输出评估结果。
    r2=r2_score(y_test, lr_y_predict)
    print('The value of R-squared of LinearRegression is',r2 )
    # 使用 mean_squared_error 模块,并输出评估结果。



    #print(y_test)
    lr_y_predict=lr_y_predict.reshape(len(lr_y_predict),-1)
    #print(lr_y_predict)
    #print(mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict)))
    mse=mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict))
    print('The mean squared error of LinearRegression is',mse
    )

    # 使用 mean_absolute_error 模块,并输出评估结果。
    mae= mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict))
    print('The mean absoluate error of LinearRegression is', mae
    )
    return round(nmse,2),round(r2,2),round(mse,2),round(mae,2)
    



def plot(model1,model2):
# 数据
    classes = [ 'r2', 'mse', 'mae']
    # r2s = [87, 85, 89, 81, 78]
    # mess = [85, 98, 84, 79, 82]
    # nmse = [83, 85, 82, 87, 78]
 
    # 将横坐标班级先替换为数值
    x = np.arange(len(classes))
    width = 0.2
    r2s_x = x
    mess_x = x + width
    nmse_x = x + 2 * width
    mae_x = x + 3 * width

    # 绘图
    plt.bar(r2s_x, model1, width=width, color='gold', label='LinearRegression')
    plt.bar(mess_x,model2,width=width,color="silver",label="SGDRegressor")
    #plt.bar(nmse_x,model3,width=width, color="saddlebrown",label="ridge-alpha=10")
    #plt.bar(mae_x,model4,width=width, color="red",label="lasso-alpha=0.01")
    plt.title("lr,sdgr+"+ss+"性能对比图")
    #将横坐标数值转换为班级
    plt.xticks(x + width, classes)
 
    #显示柱状图的高度文本
    for i in range(len(classes)):
        plt.text(r2s_x[i],model1[i], model1[i],va="bottom",ha="center",fontsize=8)
        plt.text(mess_x[i],model2[i], model2[i],va="bottom",ha="center",fontsize=8)
        #plt.text(nmse_x[i],model3[i], model3[i],va="bottom",ha="center",fontsize=8)
        #plt.text(mae_x[i],model4[i], model4[i],va="bottom",ha="center",fontsize=8)

 
    #显示图例
    plt.legend(loc="upper right")
    plt.show()

    #coding=gbk;
   
def plot_line(X,y,model,name):
   
    #--------------------------------------------------------------
    #z是我们生成的等差数列,用来画出线性模型的图形。
    z=np.linspace(0,50,200).reshape(-1,1)
    plt.scatter(y,ss_y.inverse_transform(model.predict(ss_X.transform(X)).reshape(len(X),-1)),c="orange",edgecolors='k')
    plt.plot(z,z,c="k")
    plt.xlabel('y')
    plt.ylabel("y_hat")
    plt.title(name)
    plt.show()
   

lr,sgdr,ridge,lasso,lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict=train_model()

models=[lr,sgdr]
r2s=[]
mess=[]
maes=[]
nmse=[]
results=[]
plot_line(X,y,lr,'LinearRegression+'+ss)
plot_line(X,y,sgdr,'SGDRegressor+'+ss)
#plot_line(X,y,lasso,'lasso'+ss)
#plot_line(X,y,ridge,'ridge'+ss)
print("sgdr_y_predict")
print(sgdr_y_predict)

predicts=[lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict]
i=0
for model in models:
             
        result=evaluate(X_test,y_test,predicts[i],model)
        i=i+1
        results.append(result)
        # r2s.append(result[1])
        # mess.append(result[2])
        # maes.append(result[3])
        # nmse.append(result[0])
        

    #evaluate(X_test,y_test,sgdr_y_predict,sgdr)
print(results)
        

    #evaluate(X_test,y_test,sgdr_y_predict,sgdr)
plot(results[0][1:4],results[1][1:4])

# 从 sklearn.datasets 导入波士顿房价数据读取器。
from sklearn.datasets import load_boston
# 从读取房价数据存储在变量 boston 中。
boston = load_boston()
# 输出数据描述。
from matplotlib import pyplot as plt
from matplotlib import font_manager
from matplotlib import pyplot as plt
import numpy as np
import matplotlib
# 参数设置

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题


# 从sklearn.cross_validation 导入数据分割器。
from sklearn.model_selection import train_test_split
# 导入 numpy 并重命名为 np。
import numpy as np
from sklearn.linear_model import Ridge, RidgeCV
X = boston.data
print(X.min(axis=0))
print(X.max(axis=0))

y = boston.target
# 随机采样 25% 的数据构建测试样本,其余作为训练样本。
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33, test_size=0.25)
# 分析回归目标值的差异。


print("The max target value is", np.max(boston.target))
print("The min target value is", np.min(boston.target)) 
print("The average target value is", np.mean(boston.target))


# 从 sklearn.preprocessing 导入数据标准化模块。
from sklearn.preprocessing import StandardScaler
# 分别初始化对特征和目标值的标准化器。
ss_X = StandardScaler()
ss_y = StandardScaler()
# 分别对训练和测试数据的特征以及目标值进行标准化处理。
# X_train = ss_X.fit_transform(X_train
# X_test = ss_X.transform(X_test)
y_train = y_train.reshape(-1, 1)
y_test = y_test.reshape(-1, 1)

# 从 sklearn.linear_model 导入 LinearRegression。
from sklearn.linear_model import LinearRegression
# 使用默认配置初始化线性回归器 LinearRegression。

def train_model():
    lr = LinearRegression()
    # 使用训练数据进行参数估计。
    lr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lr_y_predict = lr.predict(X_test)
    # 从 sklearn.linear_model 导入 SGDRegressor。
    from sklearn.linear_model import SGDRegressor
    # 使用默认配置初始化线性回归器 SGDRegressor。
    sgdr = SGDRegressor()
    # 使用训练数据进行参数估计。
    sgdr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    sgdr_y_predict = sgdr.predict(X_test)
    ridge = Ridge(alpha=10)
    # 使用训练数据进行参数估计。
    ridge.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    ridge_y_predict = ridge.predict(X_test)
    
    return lr,sgdr,ridge,lr_y_predict,sgdr_y_predict,ridge_y_predict



def evaluate(X_test,y_test,lr_y_predict,model):
# 使用 LinearRegression 模型自带的评估模块,并输出评估结果。
    nmse=model.score(X_test, y_test)
    print('The value of default measurement of LinearRegression is',nmse )
    
    # 从 sklearn.metrics 依次导入 r2_score、mean_squared_error 以及 mean_absoluate_error 用于回归性能的评估。
    from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
    # 使用 r2_score 模块,并输出评估结果。
    r2=r2_score(y_test, lr_y_predict)
    print('The value of R-squared of LinearRegression is',r2 )
    # 使用 mean_squared_error 模块,并输出评估结果。



    #print(y_test)
    lr_y_predict=lr_y_predict.reshape(len(lr_y_predict),-1)
    #print(lr_y_predict)
    #print(mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict)))
    mse=mean_squared_error(y_test, lr_y_predict)
    print('The mean squared error of LinearRegression is',mse
    )

    # 使用 mean_absolute_error 模块,并输出评估结果。
    mae= mean_absolute_error(y_test, lr_y_predict)
    print('The mean absoluate error of LinearRegression is', mae
    )
    return round(nmse,2),round(r2,2),round(mse,2),round(mae,2)
    



def plot(model1,model2):
# 数据
    classes = [ 'r2', 'mse', 'mae']
    # r2s = [87, 85, 89, 81, 78]
    # mess = [85, 98, 84, 79, 82]
    # nmse = [83, 85, 82, 87, 78]
 
    # 将横坐标班级先替换为数值
    x = np.arange(len(classes))
    width = 0.2
    r2s_x = x
    mess_x = x + width
    nmse_x = x + 2 * width
    mae_x = x + 3 * width

    # 绘图
    plt.bar(r2s_x, model1, width=width, color='gold', label='LinearRegression')
    plt.bar(mess_x,model2,width=width,color="silver",label="SGDRegressor")
    # plt.bar(nmse_x,nmse,width=width, color="saddlebrown",label="mse")
    # plt.bar(mae_x,maes,width=width, color="red",label="mae")

    #将横坐标数值转换为班级
    plt.xticks(x + width, classes)
 
    #显示柱状图的高度文本
    for i in range(len(classes)):
        plt.text(r2s_x[i],model1[i], model1[i],va="bottom",ha="center",fontsize=8)
        plt.text(mess_x[i],model2[i], model2[i],va="bottom",ha="center",fontsize=8)
        # plt.text(nmse_x[i],nmse[i], nmse[i],va="bottom",ha="center",fontsize=8)
        # plt.text(mae_x[i],maes[i], maes[i],va="bottom",ha="center",fontsize=8)

 
    #显示图例
    plt.legend(loc="upper right")
    plt.show()

def plot_line(X,y,model,name):
   
    #--------------------------------------------------------------
    #z是我们生成的等差数列,用来画出线性模型的图形。
    z=np.linspace(0,50,200).reshape(-1,1)
    plt.scatter(y,model.predict(X),c="orange",edgecolors='k')
    print(model.predict(X))
    plt.plot(z,z,c="k")
    plt.xlabel('y')
    plt.ylabel("y_hat")
    plt.title(name)
    plt.show()
lr,sgdr,ridge,lr_y_predict,sgdr_y_predict,ridge_y_predict=train_model()

models=[lr,sgdr,]
r2s=[]
mess=[]
maes=[]
nmse=[]
results=[]
  

    
plot_line(X,y,lr,'LinearRegression')
plot_line(X,y,sgdr,'SGDRegressor')
print("sgdr_y_predict")
print(sgdr_y_predict)

predicts=[lr_y_predict,sgdr_y_predict]
i=0
for model in models:
             
        result=evaluate(X_test,y_test,predicts[i],model)
        i=i+1
        results.append(result)
        # r2s.append(result[1])
        # mess.append(result[2])
        # maes.append(result[3])
        # nmse.append(result[0])
        

    #evaluate(X_test,y_test,sgdr_y_predict,sgdr)
print(results)
plot(results[0][1:4],results[1][1:4]
     )

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 正则化对比试验


# 从 sklearn.datasets 导入波士顿房价数据读取器。
from sklearn.datasets import load_boston
# 从读取房价数据存储在变量 boston 中。
boston = load_boston()
# 输出数据描述。
from matplotlib import pyplot as plt
from matplotlib import font_manager
from matplotlib import pyplot as plt
import numpy as np
import matplotlib
# 参数设置

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题


# 从sklearn.cross_validation 导入数据分割器。
from sklearn.model_selection import train_test_split
# 导入 numpy 并重命名为 np。
import numpy as np
from sklearn.linear_model import Ridge,Lasso
X = boston.data
y = boston.target
# 随机采样 25% 的数据构建测试样本,其余作为训练样本。

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33, test_size=0.25)
# 分析回归目标值的差异。




print("The max target value is", np.max(boston.target))
print("The min target value is", np.min(boston.target)) 
print("The average target value is", np.mean(boston.target))


# 从 sklearn.preprocessing 导入数据标准化模块。
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import Normalizer
# 分别初始化对特征和目标值的标准化器。
ss_X = StandardScaler()
ss_y = StandardScaler()
ss="StandardScaler"
# 分别对训练和测试数据的特征以及目标值进行标准化处理。
X_train = ss_X.fit_transform(X_train)
X_test = ss_X.transform(X_test)

y_train = ss_y.fit_transform(y_train.reshape(-1, 1))

y_test = ss_y.transform(y_test.reshape(-1, 1))

# 从 sklearn.linear_model 导入 LinearRegression。
from sklearn.linear_model import LinearRegression
# 使用默认配置初始化线性回归器 LinearRegression。

def train_model():
    lr = LinearRegression()
    # 使用训练数据进行参数估计。
    lr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lr_y_predict = lr.predict(X_test)
    # 从 sklearn.linear_model 导入 SGDRegressor。
    from sklearn.linear_model import SGDRegressor
    # 使用默认配置初始化线性回归器 SGDRegressor。
    sgdr = SGDRegressor()
    # 使用训练数据进行参数估计。
    sgdr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    sgdr_y_predict = sgdr.predict(X_test)
    ridge = Ridge(alpha=10)
    # 使用训练数据进行参数估计。
    ridge.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    ridge_y_predict = ridge.predict(X_test)
   # Lasso
    lasso = Lasso(alpha=0.01)
    # 使用训练数据进行参数估计。
    lasso.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lasso_y_predict = lasso.predict(X_test)
    
    return lr,sgdr,ridge,lasso,lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict
  


def evaluate(X_test,y_test,lr_y_predict,model):
# 使用 LinearRegression 模型自带的评估模块,并输出评估结果。
    nmse=model.score(X_test, y_test)
    print('The value of default measurement of LinearRegression is',nmse )
    
    # 从 sklearn.metrics 依次导入 r2_score、mean_squared_error 以及 mean_absoluate_error 用于回归性能的评估。
    from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
    # 使用 r2_score 模块,并输出评估结果。
    r2=r2_score(y_test, lr_y_predict)
    print('The value of R-squared of LinearRegression is',r2 )
    # 使用 mean_squared_error 模块,并输出评估结果。



    #print(y_test)
    lr_y_predict=lr_y_predict.reshape(len(lr_y_predict),-1)
    #print(lr_y_predict)
    #print(mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict)))
    mse=mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict))
    print('The mean squared error of LinearRegression is',mse
    )

    # 使用 mean_absolute_error 模块,并输出评估结果。
    mae= mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict))
    print('The mean absoluate error of LinearRegression is', mae
    )
    return round(nmse,2),round(r2,2),round(mse,2),round(mae,2)
    



def plot(model1,model2,model3,model4):
# 数据
    classes = [ 'r2', 'mse', 'mae']
    # r2s = [87, 85, 89, 81, 78]
    # mess = [85, 98, 84, 79, 82]
    # nmse = [83, 85, 82, 87, 78]
 
    # 将横坐标班级先替换为数值
    x = np.arange(len(classes))
    width = 0.2
    r2s_x = x
    mess_x = x + width
    nmse_x = x + 2 * width
    mae_x = x + 3 * width

    # 绘图
    plt.bar(r2s_x, model1, width=width, color='gold', label='LinearRegression')
    plt.bar(mess_x,model2,width=width,color="silver",label="SGDRegressor")
    plt.bar(nmse_x,model3,width=width, color="saddlebrown",label="ridge-alpha=10")
    plt.bar(mae_x,model4,width=width, color="red",label="lasso-alpha=0.01")
    plt.title("lr,sdgr,lasso,ridge+"+ss+"性能对比图")
    #将横坐标数值转换为班级
    plt.xticks(x + width, classes)
 
    #显示柱状图的高度文本
    for i in range(len(classes)):
        plt.text(r2s_x[i],model1[i], model1[i],va="bottom",ha="center",fontsize=8)
        plt.text(mess_x[i],model2[i], model2[i],va="bottom",ha="center",fontsize=8)
        plt.text(nmse_x[i],model3[i], model3[i],va="bottom",ha="center",fontsize=8)
        plt.text(mae_x[i],model4[i], model4[i],va="bottom",ha="center",fontsize=8)

 
    #显示图例
    plt.legend(loc="upper right")
    plt.show()

    #coding=gbk;
   
def plot_line(X,y,model,name):

    z=np.linspace(0,50,200).reshape(-1,1)
    plt.scatter(y,ss_y.inverse_transform(model.predict(ss_X.transform(X)).reshape(len(X),-1)),c="orange",edgecolors='k')
    plt.plot(z,z,c="k")
    plt.xlabel('y')
    plt.ylabel("y_hat")
    plt.title(name)
    plt.show()
   

lr,sgdr,ridge,lasso,lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict=train_model()

models=[lr,sgdr,ridge,lasso]
r2s=[]
mess=[]
maes=[]
nmse=[]
results=[]
plot_line(X,y,lr,'LinearRegression+'+ss)
plot_line(X,y,sgdr,'SGDRegressor'+ss)
plot_line(X,y,lasso,'lasso'+ss)
plot_line(X,y,ridge,'ridge'+ss)
print("sgdr_y_predict")
print(sgdr_y_predict)

predicts=[lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict]
i=0
for model in models:
             
        result=evaluate(X_test,y_test,predicts[i],model)
        i=i+1
        results.append(result)
        # r2s.append(result[1])
        # mess.append(result[2])
        # maes.append(result[3])
        # nmse.append(result[0])
        

    #evaluate(X_test,y_test,sgdr_y_predict,sgdr)
print(results)
        

    #evaluate(X_test,y_test,sgdr_y_predict,sgdr)
plot(results[0][1:4],results[1][1:4],results[2][1:4],results[3][1:4])

在这里插入图片描述

3.4多项式回归degree对比实验


# 从 sklearn.datasets 导入波士顿房价数据读取器。
from sklearn.datasets import load_boston
# 从读取房价数据存储在变量 boston 中。
boston = load_boston()
# 输出数据描述。
from matplotlib import pyplot as plt
from matplotlib import font_manager
from matplotlib import pyplot as plt
import numpy as np
import matplotlib
# 参数设置
from sklearn.preprocessing import PolynomialFeatures
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题


# 从sklearn.cross_validation 导入数据分割器。
from sklearn.model_selection import train_test_split
# 导入 numpy 并重命名为 np。
import numpy as np
from sklearn.linear_model import Ridge,Lasso
X = boston.data
y = boston.target
# 随机采样 25% 的数据构建测试样本,其余作为训练样本。

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33, test_size=0.25)
# 分析回归目标值的差异。




print("The max target value is", np.max(boston.target))
print("The min target value is", np.min(boston.target)) 
print("The average target value is", np.mean(boston.target))


# 从 sklearn.preprocessing 导入数据标准化模块。
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import Normalizer
# 分别初始化对特征和目标值的标准化器。
ss_X = StandardScaler()
ss_y = StandardScaler()
ss="StandardScaler"
# 分别对训练和测试数据的特征以及目标值进行标准化处理。
X_train = ss_X.fit_transform(X_train)
X_test = ss_X.transform(X_test)
y_train[0]=y_train[0]+300
y_train = ss_y.fit_transform(y_train.reshape(-1, 1))

y_test = ss_y.transform(y_test.reshape(-1, 1))

# 从 sklearn.linear_model 导入 LinearRegression。
from sklearn.linear_model import LinearRegression
# 使用默认配置初始化线性回归器 LinearRegression。

def train_model():
    poly_reg = PolynomialFeatures(degree=1)
    # 数据转换 x0-->1  x1-->x  x2-->x^2  x3-->x^3
    x_poly = poly_reg.fit_transform(X_train)

    # 建模
    #lin_reg = LinearRegression().fit(x_poly, y_data)


    lr = LinearRegression().fit(x_poly, y_train[:,0])
    # 使用训练数据进行参数估计。
    lr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lr_y_predict = lr.predict(X_test)
    # 从 sklearn.linear_model 导入 SGDRegressor。
    from sklearn.linear_model import SGDRegressor
    # 使用默认配置初始化线性回归器 SGDRegressor。
    poly_reg = PolynomialFeatures(degree=2)
    # 数据转换 x0-->1  x1-->x  x2-->x^2  x3-->x^3
    x_poly = poly_reg.fit_transform(X_train)
    sgdr =  LinearRegression().fit(x_poly, y_train[:,0])
    # 使用训练数据进行参数估计。
    sgdr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    sgdr_y_predict = sgdr.predict(X_test)
    poly_reg = PolynomialFeatures(degree=3)
    # 数据转换 x0-->1  x1-->x  x2-->x^2  x3-->x^3
    x_poly = poly_reg.fit_transform(X_train)
    ridge =  LinearRegression().fit(x_poly, y_train[:,0])
    # 使用训练数据进行参数估计。
    ridge.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    ridge_y_predict = ridge.predict(X_test)
   # Lasso
    poly_reg = PolynomialFeatures(degree=4)
    # 数据转换 x0-->1  x1-->x  x2-->x^2  x3-->x^3
    x_poly = poly_reg.fit_transform(X_train)
    lasso = LinearRegression().fit(x_poly, y_train[:,0])
    # 使用训练数据进行参数估计。
    lasso.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lasso_y_predict = lasso.predict(X_test)
    
    return lr,sgdr,ridge,lasso,lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict
  


def evaluate(X_test,y_test,lr_y_predict,model):
# 使用 LinearRegression 模型自带的评估模块,并输出评估结果。
    nmse=model.score(X_test, y_test)
    print('The value of default measurement of LinearRegression is',nmse )
    
    # 从 sklearn.metrics 依次导入 r2_score、mean_squared_error 以及 mean_absoluate_error 用于回归性能的评估。
    from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
    # 使用 r2_score 模块,并输出评估结果。
    r2=r2_score(y_test, lr_y_predict)
    print('The value of R-squared of LinearRegression is',r2 )
    # 使用 mean_squared_error 模块,并输出评估结果。



    #print(y_test)
    lr_y_predict=lr_y_predict.reshape(len(lr_y_predict),-1)
    #print(lr_y_predict)
    #print(mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict)))
    mse=mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict))
    print('The mean squared error of LinearRegression is',mse
    )

    # 使用 mean_absolute_error 模块,并输出评估结果。
    mae= mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict))
    print('The mean absoluate error of LinearRegression is', mae
    )
    return round(nmse,2),round(r2,2),round(mse,2),round(mae,2)
    



def plot(model1,model2,model3,model4):
# 数据
    classes = [ 'r2', 'mse', 'mae']
    # r2s = [87, 85, 89, 81, 78]
    # mess = [85, 98, 84, 79, 82]
    # nmse = [83, 85, 82, 87, 78]
 
    # 将横坐标班级先替换为数值
    x = np.arange(len(classes))
    width = 0.2
    r2s_x = x
    mess_x = x + width
    nmse_x = x + 2 * width
    mae_x = x + 3 * width

    # 绘图
    plt.bar(r2s_x, model1, width=width, color='gold', label='ploy-degree=1')
    plt.bar(mess_x,model2,width=width,color="silver",label="ploy-degree=2")
    plt.bar(nmse_x,model3,width=width, color="saddlebrown",label="ploy-degree=3")
    plt.bar(mae_x,model4,width=width, color="red",label="ploy-degree=4")
    plt.title("不同degree多项式回归+"+ss+"性能对比图")
    #将横坐标数值转换为班级
    plt.xticks(x + width, classes)
 
    #显示柱状图的高度文本
    for i in range(len(classes)):
        plt.text(r2s_x[i],model1[i], model1[i],va="bottom",ha="center",fontsize=8)
        plt.text(mess_x[i],model2[i], model2[i],va="bottom",ha="center",fontsize=8)
        plt.text(nmse_x[i],model3[i], model3[i],va="bottom",ha="center",fontsize=8)
        plt.text(mae_x[i],model4[i], model4[i],va="bottom",ha="center",fontsize=8)

 
    #显示图例
    plt.legend(loc="upper right")
    plt.show()

    #coding=gbk;
   
def plot_line(X,y,model,name):
   
    #--------------------------------------------------------------
    #z是我们生成的等差数列,用来画出线性模型的图形。
    z=np.linspace(0,50,200).reshape(-1,1)
    plt.scatter(y,ss_y.inverse_transform(model.predict(ss_X.transform(X)).reshape(len(X),-1)),c="orange",edgecolors='k')
    plt.plot(z,z,c="k")
    plt.xlabel('y')
    plt.ylabel("y_hat")
    plt.title(name)
    plt.show()
   

lr,sgdr,ridge,lasso,lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict=train_model()

models=[lr,sgdr,ridge,lasso]
r2s=[]
mess=[]
maes=[]
nmse=[]
results=[]
#plot_line(X,y,lr,'LinearRegression+'+ss)
#plot_line(X,y,sgdr,'SGDRegressor'+ss)
#plot_line(X,y,lasso,'lasso'+ss)
#plot_line(X,y,ridge,'ridge'+ss)
print("sgdr_y_predict")
print(sgdr_y_predict)

predicts=[lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict]
i=0
for model in models:
             
        result=evaluate(X_test,y_test,predicts[i],model)
        i=i+1
        results.append(result)
        # r2s.append(result[1])
        # mess.append(result[2])
        # maes.append(result[3])
        # nmse.append(result[0])
        

    #evaluate(X_test,y_test,sgdr_y_predict,sgdr)
print(results)
        

    #evaluate(X_test,y_test,sgdr_y_predict,sgdr)
plot(results[0][1:4],results[1][1:4],results[2][1:4],results[3][1:4])

截图:
在这里插入图片描述

3.5 岭回归alpha敏感度实验


# 从 sklearn.datasets 导入波士顿房价数据读取器。
from sklearn.datasets import load_boston
# 从读取房价数据存储在变量 boston 中。
boston = load_boston()
# 输出数据描述。
from matplotlib import pyplot as plt
from matplotlib import font_manager
from matplotlib import pyplot as plt
import numpy as np
import matplotlib
# 参数设置

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题


# 从sklearn.cross_validation 导入数据分割器。
from sklearn.model_selection import train_test_split
# 导入 numpy 并重命名为 np。
import numpy as np
from sklearn.linear_model import Ridge,Lasso
X = boston.data
y = boston.target
# 随机采样 25% 的数据构建测试样本,其余作为训练样本。

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33, test_size=0.25)
# 分析回归目标值的差异。




print("The max target value is", np.max(boston.target))
print("The min target value is", np.min(boston.target)) 
print("The average target value is", np.mean(boston.target))


# 从 sklearn.preprocessing 导入数据标准化模块。
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import Normalizer
# 分别初始化对特征和目标值的标准化器。
ss_X = StandardScaler()
ss_y = StandardScaler()
ss="StandardScaler"
# 分别对训练和测试数据的特征以及目标值进行标准化处理。
X_train = ss_X.fit_transform(X_train)
X_test = ss_X.transform(X_test)
y_train[0]=y_train[0]+300
y_train = ss_y.fit_transform(y_train.reshape(-1, 1))

y_test = ss_y.transform(y_test.reshape(-1, 1))

# 从 sklearn.linear_model 导入 LinearRegression。
from sklearn.linear_model import LinearRegression
# 使用默认配置初始化线性回归器 LinearRegression。

def train_model():
    lr = Ridge(alpha=2)
    # 使用训练数据进行参数估计。
    lr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lr_y_predict = lr.predict(X_test)
    # 从 sklearn.linear_model 导入 SGDRegressor。
    from sklearn.linear_model import SGDRegressor
    # 使用默认配置初始化线性回归器 SGDRegressor。
    sgdr = Ridge(alpha=5)
    # 使用训练数据进行参数估计。
    sgdr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    sgdr_y_predict = sgdr.predict(X_test)
    ridge = Ridge(alpha=10)
    # 使用训练数据进行参数估计。
    ridge.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    ridge_y_predict = ridge.predict(X_test)
   # Lasso
    lasso =Ridge(alpha=15)
    # 使用训练数据进行参数估计。
    lasso.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lasso_y_predict = lasso.predict(X_test)
    
    return lr,sgdr,ridge,lasso,lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict
  


def evaluate(X_test,y_test,lr_y_predict,model):
# 使用 LinearRegression 模型自带的评估模块,并输出评估结果。
    nmse=model.score(X_test, y_test)
    print('The value of default measurement of LinearRegression is',nmse )
    
    # 从 sklearn.metrics 依次导入 r2_score、mean_squared_error 以及 mean_absoluate_error 用于回归性能的评估。
    from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
    # 使用 r2_score 模块,并输出评估结果。
    r2=r2_score(y_test, lr_y_predict)
    print('The value of R-squared of LinearRegression is',r2 )
    # 使用 mean_squared_error 模块,并输出评估结果。



    #print(y_test)
    lr_y_predict=lr_y_predict.reshape(len(lr_y_predict),-1)
    #print(lr_y_predict)
    #print(mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict)))
    mse=mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict))
    print('The mean squared error of LinearRegression is',mse
    )

    # 使用 mean_absolute_error 模块,并输出评估结果。
    mae= mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict))
    print('The mean absoluate error of LinearRegression is', mae
    )
    return round(nmse,2),round(r2,2),round(mse,2),round(mae,2)
    



def plot(model1,model2,model3,model4):
# 数据
    classes = [ 'r2', 'mse', 'mae']
    # r2s = [87, 85, 89, 81, 78]
    # mess = [85, 98, 84, 79, 82]
    # nmse = [83, 85, 82, 87, 78]
 
    # 将横坐标班级先替换为数值
    x = np.arange(len(classes))
    width = 0.2
    r2s_x = x
    mess_x = x + width
    nmse_x = x + 2 * width
    mae_x = x + 3 * width

    # 绘图
    plt.bar(r2s_x, model1, width=width, color='gold', label='ridge-alpha=2')
    plt.bar(mess_x,model2,width=width,color="silver",label="ridge-alpha=5")
    plt.bar(nmse_x,model3,width=width, color="saddlebrown",label="ridge-alpha=10")
    plt.bar(mae_x,model4,width=width, color="red",label="ridge-alpha=15")
    plt.title("不同alpha-ridge+"+ss+"性能对比图")
    #将横坐标数值转换为班级
    plt.xticks(x + width, classes)
 
    #显示柱状图的高度文本
    for i in range(len(classes)):
        plt.text(r2s_x[i],model1[i], model1[i],va="bottom",ha="center",fontsize=8)
        plt.text(mess_x[i],model2[i], model2[i],va="bottom",ha="center",fontsize=8)
        plt.text(nmse_x[i],model3[i], model3[i],va="bottom",ha="center",fontsize=8)
        plt.text(mae_x[i],model4[i], model4[i],va="bottom",ha="center",fontsize=8)

 
    #显示图例
    plt.legend(loc="upper right")
    plt.show()

    #coding=gbk;
   
def plot_line(X,y,model,name):
   
    #--------------------------------------------------------------
    #z是我们生成的等差数列,用来画出线性模型的图形。
    z=np.linspace(0,50,200).reshape(-1,1)
    plt.scatter(y,ss_y.inverse_transform(model.predict(ss_X.transform(X)).reshape(len(X),-1)),c="orange",edgecolors='k')
    plt.plot(z,z,c="k")
    plt.xlabel('y')
    plt.ylabel("y_hat")
    plt.title(name)
    plt.show()
   

lr,sgdr,ridge,lasso,lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict=train_model()

models=[lr,sgdr,ridge,lasso]
r2s=[]
mess=[]
maes=[]
nmse=[]
results=[]
plot_line(X,y,lr,'LinearRegression+'+ss)
plot_line(X,y,sgdr,'SGDRegressor'+ss)
plot_line(X,y,lasso,'lasso'+ss)
plot_line(X,y,ridge,'ridge'+ss)
print("sgdr_y_predict")
print(sgdr_y_predict)

predicts=[lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict]
i=0
for model in models:
             
        result=evaluate(X_test,y_test,predicts[i],model)
        i=i+1
        results.append(result)
        # r2s.append(result[1])
        # mess.append(result[2])
        # maes.append(result[3])
        # nmse.append(result[0])
        

    #evaluate(X_test,y_test,sgdr_y_predict,sgdr)
print(results)
        

    #evaluate(X_test,y_test,sgdr_y_predict,sgdr)
plot(results[0][1:4],results[1][1:4],results[2][1:4],results[3][1:4])

运行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1566545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

输入url到页面显示过程的优化

浏览器架构 线程:操作系统能够进行运算调度的最小单位。 进程:操作系统最核心的就是进程,他是操作系统进行资源分配和调度的基本单位。 一个进程就是一个程序的运行实例。启动一个程序的时候,操作系统会为该程序创建一块内存&a…

​AI大模型:产品经理的新助手,还是捣蛋鬼?

在科技飞速发展的今天,AI大模型成为了许多行业的“新宠儿”。它们不仅在语音识别、图像处理等方面表现出色,甚至还能写代码、写新闻,甚至写需求文档。这让许多产品经理心动不已,心想:有了AI大模型的帮助,岂…

完全没想到docker启动败在了这里!

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 故事背景 前几天帮同事部署一个环境,用他写的安装脚本部署,其中一台服务器就需要安装docker&#xff0c…

Day43 动态规划 part05

Day43 动态规划 part05 1049.最后一块石头的重量II 我的思路: 提示说和划分两个和相等的子集差不多,猛然想到,这道题不就是划分子集,用sum - 和最大*2 代码就是划分和相同的子集的变形 解答: class Solution {public int last…

jsp实现增删改查——(三)用Echarts图表统计学生信息

学生信息CRUD——Echarts显示生活费 目录结构 创建一个js文件夹,将echarts.min.js放到里面。 功能实现 与之前我们写的jsp文件(含有html代码、Java代码)不同的是,实现Echarts对生活费的显示,需要调用echarts.min.js…

MySQL事务以及并发访问隔离级别

MySQL事务以及并发问题 事务1.什么是事务2.MySQL如何开启事务3.事务提交方式4.事务原理5.事务的四大特性(ACID) 事务并发问题1.并发引起的三个问题2.事务隔离级别 事务 在 MySQL 中,事务支持是在引擎层实现的。MySQL 是一个支持多引擎的系统&…

关于搭建电商独立站跨境电商接入主流电商平台API商品接口对于商品功能模块的巨大应用

功能设计 首先我们来看下mall项目中商品功能的设计,主要包括商品管理、添加\编辑商品、商品分类、商品类型、品牌管理等功能,这里的功能同时涉及前台商城和后台管理系统。 商品管理【接入主流电商平台商品API接口丰富自建商城商品】 在mall项目的后台管…

微信批量群发软件有哪款比较好用的?

微信有自带的群发助手,只能群发200个好友,比较有局限性。 我是做销售的,对于群发的需求特别大,我自己平时经常用WeB微信批量群发软件有哪款比较好用的?WeB,它满足了我的群发需求,用起来特别方便…

cocos 3.x版本如何基于ts在检视面板显示Enum枚举类型下拉列表

前言 网上搜索到的大多是基于js或者旧版本cocos。这里记录一下ts显示Enum的方案,cocos版本使用的3.8.2。 解决方案 方案一: import { _decorator, Component, TweenEasing } from cc; const { ccclass, property } _decorator;const MyTweenEasing …

C#.net6.0手术麻醉信息管理系统源码,智慧手术室管理平台源码

手术麻醉信息管理系统源码,自主版权的手麻系统源码 手术麻醉信息管理系统包含了患者从预约申请手术到术前、术中、术后的流程控制。手术麻醉信息管理系统主要是由监护设备数据采集子系统和麻醉临床系统两个子部分组成。包括从手术申请到手术分配,再到术前…

春秋云境CVE-2023-0562

简介 银行储物柜管理系统是一个基于网络的应用程序,用于处理存储银行客户贵重物品的银行储物柜。储物柜的所有详细信息都保存在数据库中。银行储物柜管理系统项目是使用 PHP 和 MySQLi 扩展开发的。 正文 进入靶场,首先就看到有个bankers,…

真快乐APP抢购源码实现

支持多个平台的自动 滑动验证码、选字验证码。缺点就是需要自己找一个验证码识别服务器,可以自己用python写一个,或者使用超级鹰(本篇教程就是使用它) 下面是实现源码 "ui"; Date.prototype.Format = function (fmt) {var o = {"M+": this.getMonth() …

常用的限流方案思路和实现

限流方案 1、计数器(固定窗口) 1.1、简介 计数器固定窗口算法是最基础也是最简单的一种限流算法。原理就是对一段固定时间窗口内的请求进行计数,如果请求数超过了阈值,则舍弃该请求;如果没有达到设定的阈值&#xf…

STM32学习笔记(10_1)- I2C通信协议

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。 最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com 本期开…

JMeter+Grafana+influxdb 配置出现transaction无数据情况解决办法

JMeterGrafanainfluxdb 配置出现transaction无数据情况解决办法 一、问题描述二、解决方法 一、问题描述 如下图所示出现application有数据但是transaction无数据情况 二、解决方法 需要做如下设置 打开变量设置如下图打开两个选项 然后再进行后端监听器的设置 如下图所…

【VUE】ruoyi框架自带页面可正常缓存,新页面缓存无效

ruoyi框架自带页面可正常缓存,新页面缓存无效 背景: 用若依框架进行开发时,发现ruoyi自带的页面缓存正常,而新开发的页面即使设置了缓存,当重新进入页面时依旧刷新了接口。 原因:页面name与 getRouters …

3个 JavaScript 字符串截取方法

在 JavaScript 中,可以使用 substr()、slice() 和 substring() 方法截取字符串. substring() substring() 方法返回一个字符串在开始索引到结束索引之间的一个子集,或从开始索引直到字符串的末尾的一个子集。语法如下: str.substring(inde…

GT收发器64B66B设计(1)IP核配置和example design

文章目录 前言一、IP核配置1.1、编码方式1.2、字节对齐和逗号码 二、example design 前言 在前面我们基于GT收发器进行了PHY层设计,其中采用的编码方式为8B10B,为进一步提高传输效率,从本文开始,将采用基于GT高速收发器采用64B66…

DC/DC选型:了解电感参数的基本含义

电感是一种相对简单的元件,它由缠绕在线圈中的绝缘线组成。但当单个元件组合在一起,用来创建具有适当尺寸、重量、温度、频率和电压的电感,同时又能满足目标应用时,复杂性就会增加。 选择电感时,了解电感数据手册中标…

京西商城——基于viewset视图集开发评论接口

在使用GenericAPIView和Mixins开发时,确实可以大大提高编码的速度以及减少代码量,但是在一个视图里并不能实现5个基础的请求方法,要用两个视图类来完成。所以我们可以使用viewset(视图集)来将两个视图类合并 如果要使…