当前位置: 首页 > news >正文

复试 || 就业day04(2024.01.05)项目一

文章目录

  • 前言
  • 线性回归房价预测
    • 加载数据
    • 数据查看
    • 数据拆分
    • 数据建模
    • 模型的验证、应用
    • 模型的评估
  • 总结

前言

💫你好,我是辰chen,本文旨在准备考研复试或就业
💫本文内容来自某机构网课,是我为复试准备的第一个项目
💫欢迎大家的关注,我的博客主要关注于考研408以及AIoT的内容
🌟 预置知识详见我的AIoT板块,需掌握 基本Python语法, Numpy, Pandas, Matplotlib

以下的几个专栏是本人比较满意的专栏(大部分专栏仍在持续更新),欢迎大家的关注:

💥ACM-ICPC算法汇总【基础篇】
💥ACM-ICPC算法汇总【提高篇】
💥AIoT(人工智能+物联网)
💥考研
💥CSP认证考试历年题解

线性回归房价预测

import numpy as np
from sklearn import datasets
from sklearn.linear_model import LinearRegression 

加载数据

boston = datasets.load_boston()X = boston['data']    # 数据,这些数据影响了房价
y = boston['target']  # 房价,24代表2 4W dollar # CRIM 犯罪, NOX 空气污染, TAX 税收
feature_names = boston['feature_names'] # 具体指标
feature_names

在这里插入图片描述

数据查看

# 506表示506统计样本,13表示影响房价的13个属性 
X.shape    # 506行,每一行的13个数值乘以一个权重和一个截距就是相当于506个13元一次方程
# 我们的目的就是去解这13个权重和1个截距
# 506个价格
# X -> y 是一,一对应的
# 数据 -> 目标值 对应
y.shape

在这里插入图片描述

数据拆分

# 506个数据,样本
# 拆分成为两份,一份80%训练数据;剩下的20%验证数据
# 其中的80%交给算法,线性回归,学习、总结、你和函数
# 20%的作用为验证,测一测,看看算法学习完80%的数据后是否准确# 创建一个包含0到505的整数的一维NumPy数组,并将其分配给变量index
index = np.arange(506)
# 打乱顺序
np.random.shuffle(index)
# 506 * 0.8 = 404.8 ≈ 405,据此用切片划分训练样本和测试样本
train_index = index[:405]
test_index = index[405:]X_train = X[train_index]
y_train = y[train_index]
display(X_train.shape, y_train.shape)
# 20%的测试数据
X_test = X[test_index]
y_test = y[test_index]display(X_test.shape, y_test.shape)

在这里插入图片描述

数据建模

model = LinearRegression(fit_intercept = True) # 允许计算截距(默认也是True)model.fit(X_train, y_train)display(model.coef_, model.intercept_)
# 不想看科学计数法:
np.set_printoptions(suppress = True)
# 数值为正:正相关,如面积越大房价越高
# 数值为负:负相关,如犯罪率越高房价越低
display(model.coef_, model.intercept_)

在这里插入图片描述

模型的验证、应用

# 模型的预测结果
y_ = model.predict(X_test).round(2) # 保留2位小数
y_[:30] # 查看前30个值
# 查看真实值的前30个
y_test[:30]

在这里插入图片描述

模型的评估

# 最大值是1,可以小于0(评分太差了,是负数)
# 数值越接近1,说明算法越优秀
model.score(X_test, y_test)
# 不妨再来看一下80%数据的得分,结果一般来说是要高一些的
model.score(X_train, y_train)
# 当然,评价标准不止有一个,如之前学过的最小二乘法
# 最小二乘法
from sklearn.metrics import mean_squared_error
# 这个是误差,误差是越小越好
# 测试那20%的数据
y_pred = model.predict(X_test) # 其实y_也可,只不过上面处理的y_已经保留了2位小数了,效果差一点点
mean_squared_error(y_test, y_pred)   # 也可以写成 mean_squared_error(y_test, y_) 问题不大
# 再来计算一下那80%的数据,得到的值一般来说是要低些
mean_squared_error(y_train,  model.predict(X_train)) 

在这里插入图片描述

总结

完整代码:

import numpy as np
from sklearn import datasets
from sklearn.linear_model import LinearRegression boston = datasets.load_boston()X = boston['data']    # 数据,这些数据影响了房价
y = boston['target']  # 房价,24代表2 4W dollar 
# X.shape : (506, 13), y.shape : (506, )# CRIM 犯罪, NOX 空气污染, TAX 税收
feature_names = boston['feature_names'] # 具体指标# 创建一个包含0到505的整数的一维NumPy数组,并将其分配给变量index
index = np.arange(506)
# 打乱顺序
np.random.shuffle(index)# 506个数据,样本
# 拆分成为两份,一份80%训练数据;剩下的20%验证数据
# 其中的80%交给算法,线性回归,学习、总结、你和函数
# 20%的作用为验证,测一测,看看算法学习完80%的数据后是否准确
# 506 * 0.8 = 404.8 ≈ 405,据此用切片划分训练样本和测试样本
train_index = index[:405]
X_train = X[train_index]
y_train = y[train_index]# 20%的测试数据
test_index = index[405:]
X_test = X[test_index]
y_test = y[test_index]# 不想看科学计数法:
np.set_printoptions(suppress = True)
model = LinearRegression(fit_intercept = True) # 允许计算截距(默认也是True)
# 数值为正:正相关,如面积越大房价越高
# 数值为负:负相关,如犯罪率越高房价越低
model.fit(X_train, y_train)# 模型的预测结果
y_ = model.predict(X_test).round(2) # 保留2位小数
# 最大值是1,可以小于0(评分太差了,是负数)
# 数值越接近1,说明算法越优秀
model.score(X_test, y_test)# 不妨再来看一下80%数据的得分,结果一般来说是要高一些的
model.score(X_train, y_train)# 当然,评价标准不止有一个,如之前学过的最小二乘法
# 最小二乘法
from sklearn.metrics import mean_squared_error
# 这个是误差,误差是越小越好
# 测试那20%的数据
y_pred = model.predict(X_test) # 其实y_也可,只不过上面处理的y_已经保留了2位小数了,效果差一点点
mean_squared_error(y_test, y_pred)   # 也可以写成 mean_squared_error(y_test, y_) 问题不大
# 再来计算一下那80%的数据,得到的值一般来说是要低些
mean_squared_error(y_train,  model.predict(X_train)) 

在这里插入图片描述

http://www.lryc.cn/news/274207.html

相关文章:

  • 华为机试真题实战应用【赛题代码篇】-最小传输时延(附python、C++和JAVA代码实现)
  • C++ 运算符重载
  • vue3学习 【2】vite起步和开发工具基本配置
  • 计算机创新协会冬令营——暴力枚举题目06
  • 单片机快速入门
  • Eureka相关问题及答案(2024)
  • Django 7 实现Web便签
  • Jenkins集成部署java项目
  • FFmpeg之——获取上传视频的尺寸(长、宽)
  • Ajax学习
  • 排序算法——关于快速排序的详解
  • 序言:《未来已来》
  • 【Spring实战】22 Spring Actuator 入门
  • JSON安全性
  • spring-boot-maven插件repackage(goal)的那些事
  • ubuntu的boot分区被删除恢复
  • 【userfaultfd 条件竞争】starCTF2019 - hackme
  • 深度学习中的自动化标签转换:对数据集所有标签做映射转换
  • c语言-函数指针
  • conda
  • 【Vue】灵魂拷问
  • Scrapy 1.3.0 使用简介
  • 单机+内部备份_全备案例
  • 【kettle】pdi/data-integration 打开ktr文件报错“Unable to load step info from XML“
  • cocos creator人开发小游戏免费素材资源
  • 除了sd webui,compfy还有一个sd UI
  • c++属于同一个类的不同对象之间可相互访问private和protected成员
  • QT/C++ 远程数据采集上位机+服务器
  • 算法每日一题:保龄球游戏的获胜者
  • Do you know about domestic CPUs