zl程序教程

您现在的位置是:首页 >  其他

当前栏目

机器学习——线性回归、房价预测案例【正规方案与梯度下降】

案例机器学习 方案 预测 回归 线性 梯度
2023-09-11 14:16:58 时间

# coding:utf-8
# 1.获取数据集
#2.数据基本处理
#2.1.数据划分
#3.特征工程——标准化
#4.机器学习(线性回归)
#5.模型评估


from sklearn.datasets import load_boston # 1.获取数据集,所使用的引用
from sklearn.model_selection import train_test_split #2.数据基本处理,所使用的引用
from sklearn.preprocessing import StandardScaler #3.特征工程——标准化,所使用的引用
from sklearn.linear_model import LinearRegression,SGDRegressor,Ridge #4.机器学习,所使用的引用
from sklearn.metrics import mean_squared_error #5.模型评估,所使用的引用


def linear_model1():
    # 正规方程优化方式
    
    # 1.获取数据集
    boston = load_boston()
    #2.数据基本处理
    #2.1.数据划分
    x_train,x_test,y_train,y_test = train_test_split(boston.data,boston.target,test_size=0.2)#2.1.数据划分,20%测试集,80%训练集
    #3.特征工程——标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.fit_transform(x_test)
    #print(x_train)
    #print(x_test)
    #4.机器学习(线性回归)
    estimator = LinearRegression()
    estimator.fit(x_train,y_train)
    print("这个模型的偏置是:\n",estimator.intercept_)
    
    #5.模型评估
    #5.1预测值和准确值
    y_pre = estimator.predict(x_test)
    print("预测值是:\n",y_pre)
    
    score = estimator.score(x_test,y_test)
    print("准确率是:\n",score)
    
    #5.2均方误差
    ret = mean_squared_error(y_test,y_pre)
    print("均方误差是:\n",ret)
    
def linear_model2():
    # 梯度下降方式优化
    
    # 1.获取数据集
    boston = load_boston()
    #2.数据基本处理
    #2.1.数据划分
    x_train,x_test,y_train,y_test = train_test_split(boston.data,boston.target,test_size=0.2)#2.1.数据划分,20%测试集,80%训练集
    #3.特征工程——标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.fit_transform(x_test)
    #4.机器学习(线性回归)
    #estimator = LinearRegression()
    estimator = SGDRegressor(max_iter = 1000)
    
    estimator.fit(x_train,y_train)
    print("这个模型的偏置是:\n",estimator.intercept_)
    
    #5.模型评估
    #5.1预测值和准确值
    y_pre = estimator.predict(x_test)
    print("预测值是:\n",y_pre)
    
    score = estimator.score(x_test,y_test)
    print("准确率是:\n",score)
    
    #5.2均方误差
    ret = mean_squared_error(y_test,y_pre)
    print("均方误差是:\n",ret)
    
def linear_model3():
    # 岭回归
    
    # 1.获取数据集
    boston = load_boston()
    #2.数据基本处理
    #2.1.数据划分
    x_train,x_test,y_train,y_test = train_test_split(boston.data,boston.target,test_size=0.2)#2.1.数据划分,20%测试集,80%训练集
    
    #3.特征工程——标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.fit_transform(x_test)
    
    #4.机器学习(线性回归)
    #estimator = LinearRegression()
    estimator = Ridge()
    
    estimator.fit(x_train,y_train)
    print("这个模型的偏置是:\n",estimator.intercept_)
    
    #5.模型评估
    #5.1预测值和准确值
    y_pre = estimator.predict(x_test)
    print("预测值是:\n",y_pre)
    
    score = estimator.score(x_test,y_test)
    print("准确率是:\n",score)
    
    #5.2均方误差
    ret = mean_squared_error(y_test,y_pre)
    print("均方误差是:\n",ret)
    
#if __name__ == "__name__":

linear_model1()
linear_model2()
linear_model3()

运行结果

正规方程

这个模型的偏置是:
 22.44702970297033
预测值是:
 [32.85686237 16.43841321  3.12699909 28.97857196 20.09936478 17.04228827
 12.19496094 28.97908343 29.09628079 22.81477803 23.31991726 28.08352655...]
准确率是:
 0.7377378215203308
均方误差是:
 20.382664610246923

梯度下降方式

这个模型的偏置是:
 [22.6973293]
预测值是:
 [13.25126638 25.63955917 19.86663766 15.34110519 36.46187284 14.46931269
 23.47126792 28.59724607 16.97883642 29.77951036 19.78221503 19.99092917...]
准确率是:
 0.6792036485662996
均方误差是:
 22.98931243111312

梯度下降加上岭回归方式

这个模型的偏置是:
 22.366584158415883
预测值是:
 [11.74480279 19.23342262 36.14565099 15.89713418 29.95603433  9.1221646
 25.65720087 20.07898595 28.00865371 28.67476985 30.15528265 22.00776699...]
准确率是:
 0.8099165448127184
均方误差是:
 16.103426905025767