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

news/2024/7/9 9:11:00 标签: sklearn, 人工智能, python

# 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
 


http://www.niftyadmin.cn/n/1374450.html

相关文章

为出人头地付出如此代价,是否太残酷?

为出人头地付出如此代价,是否太残酷? 人生难道就只有这种浅薄的成功标准吗?难 道不愿背井离乡、不向往洋楼、白领阶层,仅满足安贫乐道的淡泊人生就是失败者? 与大学生聊天特枯燥 在中国留学的外国人,几…

数字化和网络化:解救传统印刷的一剂良药?

在各行各业数字化和网络化的大环境,以及来自智能手机和电子书快速兴起的冲击下,传统印刷该如何转型,才能满足新时代的人们?唯有将互联网信息技术广泛应用到印刷行业的发展当中。 其实,早在“十二五”期间,国…

机器学习——模型保存、模型加载

# coding:utf-8 # 1.获取数据集 #2.数据基本处理 #2.1.数据划分 #3.特征工程——标准化 #4.机器学习(线性回归) #5.模型评估 from sklearn.datasets import load_boston # 1.获取数据集,所使用的引用 from sklearn.model_selection import train_test_sp…

人生有十个点:

上班认真点;下班轻松点;到家快乐点;父母多爱点;做人看开点;凡事自然点;朋友多一点;玩的开心点;吃的好一点;每天多笑点。 嘿嘿嘿嘿嘿嘿嘿嘿!!&…

ECDSA椭圆曲线数字签名算法概要和使用说明

声明: 转载注明本人或出处, 请在方便的情况下尽量告知. 尊重原创, 共同进步. 概要 ECDSA(Elliptic Curve Digital Signature Algorithm), 使用椭圆曲线加密算法学进行 数字签名 的一种算法. 参考文档3 安全等级(用bit表示其破解最大可能运算次数). 如: 80bit的公钥, 意味着最大…

20世纪十大算法

BBS 水木清华站 -- 精华区文章阅读 --------------------------------------------------------------------------------发信人: rao (绕绕,the Interview with GOD), 信区: NumComp标 题: [合集] 20世纪十大算法(English,哪位大侠翻译一下吧)发信站…

机器学习——逻辑回归、肿瘤预测案例(恶性乳腺)

# coding:utf-8 # 1.获取数据集 #2.数据基本处理 #2.1.数据划分 #3.特征工程——标准化 #4.机器学习(逻辑回归) #5.模型评估 import pandas as pd import numpy as np # 1.获取数据集,引用网上数据https://archive.ics.uci.edu/ml/machine-learning-data…

Redis主从复制看这篇就够了

什么是主从复制 持久化保证了即使 redis 服务重启也会丢失数据,因为 redis 服务重启后会将硬盘上持久化的数据恢复到内存中,但是当 redis 服务器的硬盘损坏了可能会导致数据丢失,如果通过 redis 的主从复制机制就可以避免这种单点故障&#x…