机器学习之利用线性回归预测波士顿房价和可视化分析影响房价因素实战(python实现 附源码 超详细)
数据集和源码请点赞关注收藏后评论区留下QQ邮箱或者私信
线性回归是利用最小二乘函数对一个或多个因变量之间关系进行建模的一种回归分析,这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个变量的称为一元回归,大于一个变量的情况叫做多元回归。利用线性回归,我们可以预测一组特定数据是否在一定时期内增长或下降。
接下来以线性回归预测波士顿房价进行实战解析
线性回归代码如下
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split# 读数据
data = np.loadtxt(boston_house_price.csv', float, delimiter=",", skiprows=1)
X, y = data[:, :13], data[:, 13]
# Z-score归一化
for i in range(X.shape[1]):X[:, i] = (X[:, i] - np.mean(X[:, i])) / np.std(X[:, i])
# 划分训练集、测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 将训练集、测试集改为列向量的形式
y_train = y_train.reshape((-1, 1))
y_test = y_test.reshape((-1, 1))# 初始化模型参数
def initialize_params(feature_num):w=np.random.rand(feature_num,1)b=0return w,bdef forward(X, y, w, b):num_train=X.shape[0]y_hat=np.dot(X,w)+bloss=np.sum((y_hat-y)**2)/num_traindw=np.dot(X.T,(y_hat-y))/num_traindb=np.sum((y_hat-y))/num_trainreturn y_hat,loss,dw,db# 定义线性回归模型的训练过程
def my_linear_regression(X, y, learning_rate, epochs):loss_his=[]w,b=initialize_params(X.shape[1])for i in range(epochs):y_hat,loss,dw,db=forward(X,y,w,b)w+=-learning_rate*dwb+=-learning_rate*dbloss_his.append(loss)if i%100==0:print("epochs %d loss %f"%(i,loss))return loss_his,w,b# 线性回归模型训练
loss_his, w, b = my_linear_regression(X_train, y_train, 0.01, 5000)
# 打印loss曲线
plt.plot(range(len(loss_his)), loss_his, linewidth=1, linestyle="solid", label="train loss")
plt.show()
# 打印训练后得到的模型参数
print("w:", w, "\nb", b)# 定义MSE函数
def MSE(y_test, y_pred):return np.sum(np.square(y_pred - y_test)) / y_pred.shape[0]# 定义R系数函数
def r2_score(y_test, y_pred):# 测试集标签均值y_avg = np.mean(y_test)# 总离差平方和ss_tot = np.sum((y_test - y_avg) ** 2)# 残差平方和ss_res = np.sum((y_test - y_pred) ** 2)# R计算r2 = 1 - (ss_res / ss_tot)return r2# 在测试集上预测
y_pred = np.dot(X_test, w) + b
# 计算测试集的MSE
print("测试集的MSE: {:.2f}".format(MSE(y_test, y_pred)))
# 计算测试集的R方系数
print("测试集的R2: {:.2f}".format(r2_score(y_test, y_pred)))
损失值随训练次数的变化图如下 可以看出符合肘部方法
接下来可视化分析影响房价的因素
""" 各个字段的含义:CRIM 犯罪率ZN 住宅用地所占比例INDUS 城镇中非商业用地所占比例CHAS 是否处于查尔斯河边NOX 一氧化碳浓度RM 住宅房间数AGE 1940年以前建成的业主自住单位的占比DIS 距离波士顿5个商业中心的加权平均距离RAD 距离高速公路的便利指数TAX 不动产权税PTRATIO 学生/教师比例B 黑人比例LSTAT 低收入阶层占比MEDV 房价中位数 """
可视化结果如下
可视化部分代码如下
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df=pd.read_csv(boston_house_price.csv',encoding='utf-8')
print(df.head())
df.describe()
df['medv'].hist()
sns.boxplot(x=df['medv'])#有点问题 要加个x传参
plt.scatter(df['rm'],df['medv'])
def box_plot_outliers(df,s):q1,q3=df[s].quantile(0.25),df[s].quantile(0.75)iqr=q3-q1low,up=q1-1.5*iqr,q3+1.5*iqrdf=df[(df[s]>up)|(df[s]<low)]return df
df_filter=box_plot_outliers(df,'rm')
df_filter.mean()plt.scatter(df['dis'],df['medv'])
plt.scatter(df['rad'],df['medv'])
plt.scatter(df['b'],df['medv'])
df.corr()
plt.style.use({'figure.figsize':(15,10)})
df.hist(bins=15)
sns.boxplot(data=df)
plt.figure(figsize=(12,22))
for i in range(13):plt.subplot(4,4,(i+1))plt.scatter(df.iloc[:,i],df['medv'])plt.title('{}-price scatter'.format(df.columns[i]))plt.xlabel(df.columns[i])plt.ylabel('boston house price')
plt.show()
plt.tight_layout()
数据集和源码请点赞关注收藏后评论区留下QQ邮箱或者私信
机器学习之利用线性回归预测波士顿房价和可视化分析影响房价因素实战(python实现 附源码 超详细)相关推荐
- 【Python机器学习】PCA降维算法讲解及二维、高维数据可视化降维实战(附源码 超详细)
需要全部代码请点赞关注收藏后评论区留言私信~~~ 维数灾难 维数灾难是指在涉及到向量计算的问题中,当维数增加时,空间的体积增长得很快,使得可用的数据在空间中的分布变得稀疏,向量的计算量呈指数倍增长的一 ...
- 利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
在Spring Boot的Web应用中 内置了JSON数据的解析功能,默认使用Jackson自动完成解析(不需要解析加载Jackson依赖包)当控制器返回一个Java对象或集合数据时 Spring B ...
- AI实战!开源一个机器学习/情感分析实战项目(附源码/教程)|湾区人工智能...
分享一个在公司做的机器学习文本分类项目的demo,该分类项目是一个通用的文本分类项目,这里的数据集我酒店用户评价数据,分类模型为二分类,正面评价和负面评价,这里所说的通用,就是你可以根据你自己的数据, ...
- 【Python机器学习】聚类算法任务,评价指标SC、DBI、ZQ等系数详解和实战演示(附源码 图文解释)
需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一.聚类任务 设样本集S={x_1,x_2,-,x_m}包含m个未标记样本,样本x_i=(x_i^(1),x_i^(2),-,x_i^(n))是一 ...
- 如何用Python对股票数据进行LSTM神经网络和XGboost机器学习预测分析(附源码和详细步骤),学会的小伙伴们说不定就成为炒股专家一夜暴富了
前言 最近调研了一下我做的项目受欢迎程度,大数据分析方向竟然排第一,尤其是这两年受疫情影响,大家都非常担心自家公司裁员或倒闭,都想着有没有其他副业搞搞或者炒炒股.投资点理财产品,未雨绸缪,所以不少小伙 ...
- 【机器学习】23个初中高级机器学习实战项目(附源码)
目录 1. 面向初学者的机器学习项目 (1)鸢尾花分类项目 (2)Emojify –使
- 机器学习:numpy版本线性回归预测波士顿房价
机器学习:numpy版本线性回归预测波士顿房价 导入数据 划分数据 模型 数据链接 链接: https://pan.baidu.com/s/1uDG_2IZVZCn9kndZ_ZIGaA?pwd=ne ...
- 线性回归预测波士顿房价
波士顿房价数据集(Boston housing prices dataset) #加载数据集 from sklearn import datasets import sklearn from skle ...
- cesium 经纬度绘制点_cesium结合geoserver利用WFS服务实现图层新增(附源码下载)
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...
- Qt利用avilib实现录屏功能_openlayers6结合geoserver利用WFS服务实现图层编辑功能(附源码下载)...
内容概览 1.openlayers6结合geoserver利用WFS服务实现图层编辑功能 2.源代码demo下载 效果图如下: 本篇主要是参照openlayers6结合geoserver利用WFS服务 ...
最新文章
- FAX modem和传真协议简介
- 在 Exchange 服务器上的操作系统中的防病毒软件
- 电阻带行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- [转载] Python字符串的截取
- Winform 五种常用对话框控件的简单使用
- AutoDesk CAD 2014安装VBA Enabler图文教程(附AutoCAD_2014_VBA_Win_64bit下载)
- windows环境下定时进行阿里云DDNS解析
- COSNET: Connecting Heterogeneous Social Networks with Local and Global Consistency 论文阅读笔记
- 四月一个晴朗的早晨,遇见一个百分之百的女孩
- ESP8266串口透传+WiFi储存+OTA+smartconfig/airkiss
- C语言HeapBottomUP算法,C语言堆的建立Percolate Up and Down
- edg击败we视频_LPL夏季赛:EDG零封V5获三连胜 OMG2-1击败WE
- 【老生谈算法】matlab实现自动画玫瑰程序源码——画玫瑰
- 外汇交易方式与赚钱技巧 , 货币对的了解 , 如何建立稳定盈利
- AIX(Advanced Interactive eXecutive)操作系统
- Hello, Weka
- C++ 传参时传内置类型时用传值(pass by value)方式效率较高
- jenkins配置使用
- ChatGPT:那些让美国伟大的俄罗斯人
- Easy Connect提示:无法连接服务器,请检查网络