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

机器学习是一种实现人工智能的方法

从数据中寻找规律、建立关系,根据建立的关系去解决问题

机器学习的应用场景

数据挖掘、计算机视觉、自然语言处理、证券分析、医学诊断、机器人...

实现机器学习的基本框架

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

机器学习的类别

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




强化学习

机器人行走遇到障碍物

程序初始化

根据执行效果给与奖励/惩罚(分数)

程序逐步寻找获得高分的方法

回归分析

回归分析:根据数据,确定两种或两种以上变量间相互依赖的定量关系

函数表达式:

线性回归

线性回归:回归分析中,变量与因变量存在线性关系

函数表达式:

举例:

回归问题求解

  1. 确定P、A间的定量关系
  1. 根据关系预测合理价格、
  1. 做出判断


如何寻找到最合适的a、b?







逐渐接近极小值点(p=2)

Scikit-learn

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

特点:

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

调用Sklearn求解线性回归问题

寻找a、b(y=ax+b):

python 复制代码
from sklearn.linear_model import LinearRegression
lr_model = LinearRegression()
lr_model.fit(x,y)

展示a、b:

python 复制代码
a=lr_model.coef_
b=lr_model.intercept_

对新数据做预测:

python 复制代码
predictions=lr_model.predict(x_new)

评估模型表现



计算y与y'的均方误差(MSE)、R方值(R2_score):

python 复制代码
from sklearn.metrics import mean_squared_error,r2_socre
MSE = mean_squared_error(y,y_predict)
R2 = r2_score(y,y_predict)

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

python 复制代码
from matplotlib import pyplot as plt
plt.scatter(y,y')

图像展示

画散点图

python 复制代码
import matplotlib.pyplot as plt
plt.scatter(x,y)

多张图同时展示

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

代码演示

python 复制代码
# 读取数据
import pandas as pd
data = pd.read_csv('generated_data.csv')

查看内容

查看数据类型和维度

python 复制代码
print(type(data),data.shape)

赋值并打印

图像显示

python 复制代码
from matplotlib import pyplot as plt
plt.figure()
plt.scatter(x,y)
plt.show()

引入包,创建模型

python 复制代码
from sklearn.linear_model import LinearRegression
lr_model = LinearRegression()

更改维度

python 复制代码
import numpy as np
x=np.array(x)
x=x.reshape(-1,1)
y=np.array(y)
y=y.reshape(-1,1)

拟合

python 复制代码
lr_model.fit(x,y)

预测

python 复制代码
y_predict=lr_model.predict(x)
print(y_predict)
y_3=lr_model.predict([[3.5]])
print(y_3)

打印a\b

python 复制代码
a=lr_model.coef_
b=lr_model.intercept_
print(a,b)

模型评估

python 复制代码
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)
python 复制代码
plt.figure()
plt.plot(y,y_predict)
plt.show()

多因子房价预测

基于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的合理房价

读取数据并预览

python 复制代码
import pandas as pd
import numpy as np
data = pd.read_csv('usa_housing_price.csv')
data.head()

数据可视化

python 复制代码
 %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()

建立单因子模型

python 复制代码
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)

预测结果

python 复制代码
y_predict_1=LR1.predict(x)
print(y_predict_1)

模型评估

python 复制代码
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)

可视化评估

python 复制代码
fig6=plt.figure(figsize=(8,5))
plt.scatter(x,y)
plt.plot(x,y_predict_1,'r')
plt.show()


多因子

读取数据

python 复制代码
X_multi=data.drop(['Price'],axis=1)
X_multi
python 复制代码
#创建实例
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)

可视化

python 复制代码
fig7=plt.figure(figsize=(8,5))
plt.scatter(y,y_predict_multi)
plt.show()

对比单因子

python 复制代码
fig8=plt.figure(figsize=(8,5))
plt.scatter(y,y_predict_1)
plt.show()


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

python 复制代码
X_test=[65000,5,5,30000,200]
X_test=np.array(X_test).reshape(1,-1)
print(X_test)
python 复制代码
# 预测
y_test_predict=LR_multi.predict(X_test)
print(y_test_predict)
相关推荐
lindsayshuo2 分钟前
香橙派--安装RKMPP、x264、libdrm、FFmpeg(支持rkmpp)以及opencv(支持带rkmpp的ffmpeg)(适用于RK3588平台)
人工智能·opencv·ffmpeg
soso19686 分钟前
构建与优化数据仓库-实践指南
大数据·数据仓库·人工智能
linmoo198610 分钟前
java脚手架系列16-AI大模型集成
java·人工智能·ai·大模型·通义千问·qwen·脚手架
无水先生16 分钟前
ML 系列:第 36 节 — 统计学中的抽样类型
人工智能·机器学习·概率论
Guofu_Liao17 分钟前
大语言模型---Llama不同系列的权重参数文件提取;Llama-7B权重文件提取;Llama-8B权重文件提取;主要代码功能解析
人工智能·语言模型·自然语言处理·chatgpt·aigc·llama·python3.11
剑盾云安全专家27 分钟前
AI时代的PPT革命:智能生成PPT工具为何备受青睐?
人工智能·aigc
-Max-静-30 分钟前
Paddle Inference部署推理(十八)
人工智能·windows·深度学习·算法·paddle·推理 部署
qq_2147826132 分钟前
ChatGPT如何辅助academic writing?
人工智能·学习·chatgpt
十有久诚1 小时前
SVL-Adapter: Self-Supervised Adapter for Vision-Language Pretrained Models
人工智能·深度学习·计算机视觉·视觉语言模型·适配器微调
学习前端的小z2 小时前
【AI绘画】Midjourney进阶:色调详解(上)
人工智能·ai作画·aigc·midjourney