数据集和源码请点赞关注收藏后评论区留下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=0
return w,b
def forward(X, y, w, b):
num_train=X.shape[0]
y_hat=np.dot(X,w)+b
loss=np.sum((y_hat-y)**2)/num_train
dw=np.dot(X.T,(y_hat-y))/num_train
db=np.sum((y_hat-y))/num_train
return 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*dw
b+=-learning_rate*db
loss_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-q1
low,up=q1-1.5*iqr,q3+1.5*iqr
df=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邮箱或者私信
我即将开始一个将录制和编辑音频文件的项目,我正在寻找一个好的库(最好是Ruby,但会考虑Java或.NET以外的任何库)以进行实时可视化波形。有人知道我应该从哪里开始搜索吗? 最佳答案 要流入浏览器的数据量很大。Flash或Flex图表可能是唯一能提高内存效率的解决方案。Javascript图表往往会因大型数据集而崩溃。 关于ruby-Ruby中的波形可视化,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva
1.回顾.TransportServicepublicclassTransportServiceextendsAbstractLifecycleComponentTransportService:方法:1publicfinalTextendsTransportResponse>voidsendRequest(finalTransport.Connectionconnection,finalStringaction,finalTransportRequestrequest,finalTransportRequestOptionsoptions,TransportResponseHandlerT>
参考文章搭建文章gitte源码在线体验可以注册两个号来测试演示图:一.整体介绍 介绍SignalR一种通讯模型Hub(中心模型,或者叫集线器模型),调用这个模型写好的方法,去发送消息。 内容有: ①:Hub模型的方法介绍 ②:服务器端代码介绍 ③:前端vue3安装并调用后端方法 ④:聊天室样例整体流程:1、进入网站->调用连接SignalR的方法2、与好友发送消息->调用SignalR的自定义方法 前端通过,signalR内置方法.invoke() 去请求接口3、监听接受方法(渲染消息)通过new signalR.HubConnectionBuilder().on
目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式
目录一、安装包链接二、安装详细步骤1.安装Wireshark和WinPcap2.安装OracleVMVirtualBox3.安装ensp三、安装后注册四、启动路由器出现40错误怎么解决一、安装包链接二、安装详细步骤链接:https://pan.baidu.com/s/1QbUUYMOMIV2oeIKHWP1SpA?pwd=xftx提取码:xftx1.安装Wireshark和WinPcap找到Wireshark安装包所在文件夹,双击它,按照以下步骤安装。2.安装OracleVMVirtualBox找到OracleVMVirtualBox安装包所在文件夹,双击它,按照以下步骤安装。注:可自定义安装
Unity数据可视化图表插件XCharts3.0发布历时8个多月,业余时间,断断续续,XCharts3.0总算发布了。如果要打个满意度,我给3.0版本来个80分。对于代码框架结构设计的调整改动,基本符合预期,甚是满意。相比之前的1.0和2.0版本,我认为3.0才是一个拿得出手给广大开发者使用的版本。1.0发布的时候,很兴奋,从0.1到1.0,也磨了一年,真的等不及想给大家试用了,还特地写过一篇文章以示庆祝。那个时候,1.0虽然还还不够完善,功能也不够丰富,但它是XCharts的开始,没有1.0,也就没有后面的2.0和3.0。后面的2.0发布,做了很多改进和优化,随着版本迭代,慢慢的发现有不少硬
快速导航(持续更新中…)Cesium源码解析一(terrain文件的加载、解析与渲染全过程梳理)Cesium源码解析二(metadataAvailability的含义)Cesium源码解析三(metadata元数据拓展中行列号的分块规则解析)Cesium源码解析四(Quantized-Mesh(.terrain)格式文件在CesiumJS和UE中加载情况的对比)目录1.前言2.本篇的由来3.terrain文件的加载3.1更新环境3.2更新和执行渲染命令3.3数据优化3.4结束当前帧4.总结1.前言 目前市场上三维比较火的实现方案主要有两种,b/s的方案主要是Cesium,c/s的方案主要是u