机器学习之线性回归-多因子房价预测

机器学习是一种实现人工智能的方法
从数据中寻找规律、建立关系,根据建立的关系去解决问题

机器学习的应用场景
数据挖掘、计算机视觉、自然语言处理、证券分析、医学诊断、机器人…

实现机器学习的基本框架

将训练数据喂给计算机,计算机自动求解数据关系,在新的数据上做出预测或给出建议

机器学习的类别

  • 监督学习(Supervised Learning)
    • 训练数据包括正确的结果(标签-label)
  • 无监督学习(Unsupervised Learning)
    • 训练数据不包括了正确的结果
  • 半监督学习(Semi-supervised Learning)
    • 训练数据包括少量正确的结果

image.png
image.png
image.png
强化学习
image.png
image.png
机器人行走遇到障碍物
程序初始化
根据执行效果给与奖励/惩罚(分数)
程序逐步寻找获得高分的方法
image.png

回归分析

回归分析:根据数据,确定两种或两种以上变量间相互依赖的定量关系
函数表达式:
image.png
image.png

线性回归

线性回归:回归分析中,变量与因变量存在线性关系
函数表达式:
image.png
举例:
image.png
image.png

回归问题求解

image.png

  1. 确定P、A间的定量关系

image.png

  1. 根据关系预测合理价格、

image.png

  1. 做出判断

image.png
image.png
如何寻找到最合适的a、b?
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
逐渐接近极小值点(p=2)
image.png

Scikit-learn

Python语言中专门针对机器学习应用而发展起来的一款开源框架(算法库),可以实现数据预处理、分类、回归、降维、模型选择等常用的机器学习算法
特点:

  • 集成了机器学习中各类成熟的算法,容易安装和使用,样例丰富,教程和文档也非常详细
  • 不正常Python之外的语言,不正常深度学习和强化学习

调用Sklearn求解线性回归问题
寻找a、b(y=ax+b):

from sklearn.linear_model import LinearRegression
lr_model = LinearRegression()
lr_model.fit(x,y)

展示a、b:

a=lr_model.coef_
b=lr_model.intercept_

对新数据做预测:

predictions=lr_model.predict(x_new)

评估模型表现
image.png
image.png
image.png
image.png
计算y与y’的均方误差(MSE)、R方值(R2_score):

from sklearn.metrics import mean_squared_error,r2_socre
MSE = mean_squared_error(y,y_predict)
R2 = r2_score(y,y_predict)

画图对比y与y’,可视化模型表现:

from matplotlib import pyplot as plt
plt.scatter(y,y')

image.png

图像展示

画散点图

import matplotlib.pyplot as plt
plt.scatter(x,y)

多张图同时展示

fig1=plt.subplot(211) 
#211 2行1列第一个
plt.scatter(x1,y1)
fig=plt.subplot(212)
plt.scatter(x2,y2)

image.png

代码演示

image.png

# 读取数据
import pandas as pd
data = pd.read_csv('generated_data.csv')

查看内容
image.png
查看数据类型和维度
image.png

print(type(data),data.shape)

赋值并打印
image.png
图像显示
image.png

from matplotlib import pyplot as plt
plt.figure()
plt.scatter(x,y)
plt.show()

引入包,创建模型

from sklearn.linear_model import LinearRegression
lr_model = LinearRegression()

更改维度

import numpy as np
x=np.array(x)
x=x.reshape(-1,1)
y=np.array(y)
y=y.reshape(-1,1)

拟合

lr_model.fit(x,y)

预测

y_predict=lr_model.predict(x)
print(y_predict)
y_3=lr_model.predict([[3.5]])
print(y_3)

image.png
打印a\b

a=lr_model.coef_
b=lr_model.intercept_
print(a,b)

image.png
模型评估

from sklearn.metrics import mean_squared_error,r2_score
MSE = mean_squared_error(y,y_predict)
R2 = r2_score(y,y_predict)
print(MSE,R2)

image.png

plt.figure()
plt.plot(y,y_predict)
plt.show()

image.png

多因子房价预测

基于usa_housing_price.csv数据,建立线性回归模型,预测合理房价:

  1. 以面积为输入变量,建立单因子模型,评估模型表现,可视化线性回归预测结果
  2. 以income、house age、numbers of rooms、population、area为输入变量,建立多因子模型,评估模型表现
  3. 预测

Income=65000,House Age=5,Number of Rooms=5,Population=30000,size=200的合理房价
读取数据并预览

import pandas as pd
import numpy as np
data = pd.read_csv('usa_housing_price.csv')
data.head()

image.png
数据可视化

 %matplotlib inline
from matplotlib import pyplot as plt
fig=plt.figure(figsize=(10,10))
fig1=plt.subplot(231)
plt.scatter(data.loc[:,'Avg. Area Income'],data.loc[:,'Price'])
plt.title('Price VS Income')
fig2=plt.subplot(232)
plt.scatter(data.loc[:,'Avg. Area House Age'],data.loc[:,'Price'])
plt.title('Price VS Age')
fig3=plt.subplot(233)
plt.scatter(data.loc[:,'Avg. Area Number of Rooms'],data.loc[:,'Price'])
plt.title('Price VS Numbe of Roomsr')
fig4=plt.subplot(234)
plt.scatter(data.loc[:,'Area Population'],data.loc[:,'Price'])
plt.title('Price VS Area Population')
fig5=plt.subplot(235)
plt.scatter(data.loc[:,'size'],data.loc[:,'Price'])
plt.title('Price VS size')
plt.show()

image.png
建立单因子模型

x=data.loc[:,'size']
y=data.loc[:,'Price']
x=np.array(x).reshape(-1,1)
from sklearn.linear_model import LinearRegression
LR1=LinearRegression()
LR1.fit(x,y)

预测结果

y_predict_1=LR1.predict(x)
print(y_predict_1)

模型评估

from sklearn.metrics import mean_squared_error,r2_score
mean_squared_error_1 = mean_squared_error(y,y_predict_1)
r2_score_1 = r2_score(y,y_predict_1)
print(mean_squared_error_1,r2_score_1)

可视化评估

fig6=plt.figure(figsize=(8,5))
plt.scatter(x,y)
plt.plot(x,y_predict_1,'r')
plt.show()

image.png
多因子
读取数据

X_multi=data.drop(['Price'],axis=1)
X_multi

image.png

#创建实例
LR_multi = LinearRegression()
#训练
LR_multi.fit(X_multi,y)
#模型预测
y_predict_multi=LR_multi.predict(X_multi)
print(y_predict_multi)
#评估
mean_squared_error_multi = mean_squared_error(y,y_predict_multi)
r2_score_multi = r2_score(y,y_predict_multi)
print(mean_squared_error_multi,r2_score_multi)

image.png
可视化

fig7=plt.figure(figsize=(8,5))
plt.scatter(y,y_predict_multi)
plt.show()

image.png
对比单因子

fig8=plt.figure(figsize=(8,5))
plt.scatter(y,y_predict_1)
plt.show()

image.png
预测
Income=65000,House Age=5,Number of Rooms=5,Population=30000,size=200的合理房价

X_test=[65000,5,5,30000,200]
X_test=np.array(X_test).reshape(1,-1)
print(X_test)
# 预测
y_test_predict=LR_multi.predict(X_test)
print(y_test_predict)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

javaWebssh校园物业管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh校园物业管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用 B/S模式开发。开发环境为TOMCAT7.…

网工内推 | 上市公司网工,NP认证优先,最高15薪+项目奖金

01 广东轩辕网络科技股份有限公司 招聘岗位:网络工程师 职责描述: 1、主要负责教育行业园区网的有线及无线网络项目的实施、维护、巡检等工作; 2、协助windows/linux平台服务器OS的安装、部署、配置与维护; 3、协助服务器、存储、…

2023-12-30 买卖股票的最佳时机 II和跳跃游戏以及跳跃游戏 II

122. 买卖股票的最佳时机 II 思路:关键点是每一次利用峰值来计算【画图好理解一点,就是计算陡坡的值】!每一次累加和的最大! 或者可以这样理解,把利润划分为每天的,如假如第 0 天买入,第 3 天卖出&#xf…

【I2多语言】多语言快速上手

简介 官方API:http://www.inter-illusion.com/assets/I2LocalizationManual/I2LocalizationManual.html意义:更改游戏语言(多语言支持) 快速上手 插件安装: 直接拖拽进Unity即可 创建语言源(Creating a …

夏目友人帐OVA:和猫咪老师的初次跑腿、曾几何时下雪之日 2013.12.15

夏目友人帐OVA 1、和猫咪老师的初次跑腿 / ニャンコ先生とはじめてのおつかい2、曾几何时下雪之日 / いつかゆきのひに 1、和猫咪老师的初次跑腿 / ニャンコ先生とはじめてのおつかい 和夏目一起外出的途中,猫咪老师因追蜻蜓遇到了一对迷路的龙凤胎兄妹。猫咪老师不…

设计模式⑤ :一致性

一、前言 有时候不想动脑子,就懒得看源码又不像浪费时间所以会看看书,但是又记不住,所以决定开始写"抄书"系列。本系列大部分内容都是来源于《 图解设计模式》(【日】结城浩 著)。该系列文章可随意转载。 …

旧衣回收小程序,降低企业商家成本,推动行业发展!

随着大众环保意识的增加,人们对于闲置衣服的处理方式也从丢弃转向回收,旧衣服回收行业受到了大家的关注,成为了新的商业发展模式。 在当下科技发展的背景下,旧衣回收从回收箱演变到了线上预约上门回收,旧衣回收小程序…

地铁判官(外包)

到处都是说外包不好不好的,从没有想过自身问题。 例如: 技术人员动不动就是说,进了外包三天,一年,三年之后技术退步很多。就算你这样的人进了甲方,也是个渣渣。(声明一下,我也是外包&#xff0…

jmeter监控服务器资源使用情况

GitHub - undera/perfmon-agent: Server metrics fetching agent, based on SIGAR 下载安装包:ServerAgent-2.2.3.zip 解压先 启动,如果是windows运行startAgent.bat,如果是linux运行startAgent.sh 注意:linux上注意权限的问题…

离散数学-二元关系

4.1关系的概念 1)序偶及n元有序组 由两个个体x和y&#xff0c;按照一定顺序排序成的、有序数组称为有序偶或有序对、二元有序组&#xff0c; 记作<x&#xff0c;y>&#xff0c;其中x是第一分量&#xff0c;y是第二分量。 相等有序偶&#xff1a;第一分量和第二分量分…

三维地下管线建模工具MagicPipe3D V3.3发布

经纬管网建模系统MagicPipe3D V3.3 持续更新&#xff0c;欢迎下载试用&#xff1a;http://www.magic3d.net 1、发布MagicPipe3D宣传操作视频, 2、发布MagicPipe3D数据规格说明, 3、更新使用手册到3.3.0版本, 4、增加支持属性字段中文, 5、增加支持附属物方…

由于找不到x3daudio1_7.dll无法继续执行此代码的多种解决方法大全

在我们运行软件游戏的时候&#xff0c;偶尔会出现无法运行的报错&#xff0c;其中之一就是“找不到x3daudio1_7.dll”的错误。x3daudio1_7.dll是Windows操作系统中的一个重要动态链接库文件&#xff0c;主要负责音频设备的3D音效功能。电脑“找不到x3daudio1_7.dll”可能会导致…

C++类与对象基础(8)

目录 1. 隐式类型转换与关键字explicit: 1.1 隐式类型转换举例&#xff1a; 1.2 explicit关键字&#xff1a; 2. 友元&#xff1a; 2.1 友元函数&#xff1a; 2.2 友元类&#xff1a; 3. 内部类&#xff1a; 4. 勘误&#xff1a; 1. 隐式类型转换与关键字explicit: 1.1…

电子化以后如何申请软件著作权

​ 申请地址&#xff1a;中国版权登记业务平台 附件&#xff1a; 软件著作权设计说明书模板&#xff08;含填写说明&#xff09;.docx 软件著作权源程序模板.docx 软件著作权前期开发说明、合作开发协议、版本说明、法人证明、授权书模板.docx 注册、登录和实名认证 首先访问…

【echarts】雷达图参数详细介绍

1. 详细示例 var option {tooltip: {trigger: item},radar: {startAngle: 90,//第一个指示器轴的角度&#xff0c;默认90indicator: [// 指示器{ name: Category A, max: 220 },// name:指示器名称{ name: Category B, max: 200 },// max:指示器的最大值&#xff0c;可选&…

Nginx介绍与安装

目录 nginx服务 1、Nginx 介绍 2、为什么选择 nginx 3、IO多路复用 1、I/O multiplexing【多并发】 2、一个请求到来了&#xff0c;nginx使用epoll接收请求的过程是怎样的? 3、异步&#xff0c;非阻塞 4、nginx 的内部技术架构 5、yum安装部署nginx和配置管理 1.获取…

压测必经之路,Jmeter分布式压测教程

01、分布式压测原理 Jemter分布式压测是选择其中一台作为调度机&#xff08;master&#xff09;&#xff0c;其他机器作为执行机&#xff08;slave&#xff09;&#xff1b;当然一台机器也可以既做调度机&#xff0c;也做执行机。 调度机执行脚本的时候&#xff0c;master将会…

C++ 多态以及多态的原理

文章目录 多态的概念多态的构成条件虚函数的重写虚函数重写的两个例外 重载、重写(覆盖)、重定义(隐藏)对比C11 final 和 override关键字抽象类接口继承和普通继承多态的原理虚函数表多态的原理 单继承和多继承关系的虚函数表单继承中的虚函数表多继承中的虚函数表 多态的概念 …

C#实现个人账本管理系统

git地址&#xff1a;https://gitee.com/myshort-term/personal-ledger-management-system 1.系统简介 LedgerManagementSystem是一个小型的个人账本管理系统&#xff0c;可对收支项目进行增加、删除、修改、查询以及导入和导出。可对每日的各类收支项目进行汇总并查看和修改收…

vue3 ts defineProps、defineEmits、defineExpose、defineOptions、defineSlots

文章目录 前言一、defineProps二、defineEmits三、defineExpose四、defineOptions&#xff08; Vue3.3 新特性&#xff09;五、defineSlots(Vue3.3 新特性) 前言 本章我们来讲解vue3 ts 中 defineProps、defineEmits、defineExpose、defineOptions、defineSlots的使用及作用。 …