【机器学习与实现】线性回归示例——波士顿房价分析

目录

    • 一、创建Pandas对象并查看数据的基本情况
    • 二、使用皮尔逊相关系数分析特征之间的相关性
    • 三、可视化不同特征与因变量'MEDV'(房价中值)间的相关性
    • 四、划分训练集和测试集并进行回归分析


一、创建Pandas对象并查看数据的基本情况

boston.csv数据集下载:

在这里插入图片描述

链接:https://pan.quark.cn/s/fc4b2415e371
提取码:ZXjU

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inlinehouse = pd.read_csv("boston.csv")
print("shape=", house.shape)
shape= (506, 14)
house[:5]

在这里插入图片描述

house.describe()
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATMEDV
count506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000506.000000
mean3.59376111.36363611.1367790.0691700.5546956.28463468.5749013.7950439.549407408.23715418.455534356.67403212.65306322.532806
std8.59678323.3224536.8603530.2539940.1158780.70261728.1488612.1057108.707259168.5371162.16494691.2948647.1410629.197104
min0.0063200.0000000.4600000.0000000.3850003.5610002.9000001.1296001.000000187.00000012.6000000.3200001.7300005.000000
25%0.0820450.0000005.1900000.0000000.4490005.88550045.0250002.1001754.000000279.00000017.400000375.3775006.95000017.025000
50%0.2565100.0000009.6900000.0000000.5380006.20850077.5000003.2074505.000000330.00000019.050000391.44000011.36000021.200000
75%3.64742212.50000018.1000000.0000000.6240006.62350094.0750005.18842524.000000666.00000020.200000396.22500016.95500025.000000
max88.976200100.00000027.7400001.0000000.8710008.780000100.00000012.12650024.000000711.00000022.000000396.90000037.97000050.000000
house.info()

在这里插入图片描述

二、使用皮尔逊相关系数分析特征之间的相关性

house.corr(method='pearson')

在这里插入图片描述

三、可视化不同特征与因变量’MEDV’(房价中值)间的相关性

#可视化不同特征与因变量'MEDV'(房价中值)间的相关性
fig = plt.figure( figsize=(8, 8), dpi=100 )
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseplt.subplots_adjust(hspace=0.35)
plt.subplot(2, 2, 1)
#s指定点的大小,可用help(plt.scatter)查看帮助
plt.scatter(house['RM'], house['MEDV'], s=1, marker='o', label='RM-MEDV')  
plt.xlabel( r"房间数 - $RM$" )
plt.ylabel( r"房价 - $MEDV$" )
plt.title(r"$\rho=0.695360$")plt.subplot(2, 2, 2)
plt.scatter(house['LSTAT'], house['MEDV'], s=1, marker='o', label='LSTAT-MEDV')
plt.xlabel( r"低层人口比例 - $LSTAT$" )
plt.title(r"$\rho=-0.737663$")plt.subplot(2, 2, 3)
plt.scatter(house['DIS'], house['MEDV'], s=1, marker='o', label='DIS-MEDV')
plt.xlabel( r"距就业中心距离 - $DIS$" )
plt.ylabel( r"房价 - $MEDV$" )
plt.title(r"$\rho=0.249929$")plt.subplot(2, 2, 4)
plt.scatter(house['CHAS'], house['MEDV'], s=1, marker='o', label='CHAS-MEDV')
plt.xlabel( r"河景房 - $CHAS$" )
plt.title(r"$\rho=0.175260$")
plt.show()

在这里插入图片描述

  选取特征’RM’(房间数),‘LSTAT’(低层人口比例),‘CHAS’(河景房)和目标’MEDV’(房价中值)形成样本数据。

house1 = house[['RM','LSTAT','CHAS','MEDV']]
house1[:5]

在这里插入图片描述

  如有必要,对数值型特征进行标准化。

  在标准化之前,要使用MinMaxScaler进行特征缩放,这是一个常用的预处理步骤,有助于将数据缩放到一个指定的范围内,通常是[0,1]。

from sklearn.preprocessing import MinMaxScaler
mmScaler = MinMaxScaler()		#创建MinMaxScaler对象mmScaler.fit(house1[['RM','LSTAT']])	#对MinMaxScaler对象进行拟合,以便获取特征的最小值和最大值
print("Min=", mmScaler.data_min_, "Max=", mmScaler.data_max_)m = mmScaler.transform(house1[['RM','LSTAT']])		#使用拟合好的MinMaxScaler对象对数据集进行特征缩放
# m = mmScaler.fit_transform(house1[['RM','LSTAT']])
# 创建一个DataFrame来存储特征缩放后的数据,同时保留原始特征'CHAS'和目标变量'MEDV'
house2m = pd.DataFrame(m, columns=['RM','LSTAT'])
house2m[['CHAS','MEDV']] = house1[['CHAS','MEDV']]
house2m[:5]

在这里插入图片描述

  使用 scikit-learn 中的StandardScaler对数据集中的特征进行标准化处理。首先,使用fit方法将标准化器适配到数据上,并打印出了每个特征的均值和方差。然后,使用transform方法对数据进行转换,将标准化后的数据保存到变量z中。接着,将标准化后的特征数据与原始数据集中的其他列(比如CHASMEDV)一起合并到新的DataFrame house2z中。

from sklearn.preprocessing import StandardScaler
zScaler = StandardScaler()			#创建一个StandardScaler对象
zScaler.fit(house1[['RM','LSTAT']])		#使用fit方法将StandardScaler对象适配到房屋数据的'RM'和'LSTAT'特征上,并计算它们的均值和方差
print("mean=", zScaler.mean_, "variance=", zScaler.var_)z = zScaler.transform(house1[['RM','LSTAT']])		#使用标准化器对'RM'和'LSTAT'特征进行标准化处理,并保存到变量z中
# z = zScaler.fit_transform(house1[['RM','LSTAT']])
# 创建一个新的DataFrame 'house2z'来保存标准化后的特征数据,并将'CHAS'和'MEDV'列添加到其中
house2z = pd.DataFrame(z, columns=['RM','LSTAT'])
house2z[['CHAS','MEDV']] = house1[['CHAS','MEDV']]
house2z[:5]

在这里插入图片描述

X = house2z[['RM','LSTAT','CHAS']]
X[:5]

在这里插入图片描述

Y = house2z['MEDV']
Y[:5]

在这里插入图片描述

四、划分训练集和测试集并进行回归分析

1、划分训练集和测试集

  使用train_test_split()函数用于按一定比例划分训练集和测试集。

from sklearn.model_selection import train_test_split
# X为特征数据,Y为目标数据
# test_size参数指定测试集的比例,这里设置为0.2表示测试集占总数据集的20%
# random_state参数用于设置随机种子,相同的值得到相同的训练集和测试集划分
X_train,X_test,Y_train,Y_test = train_test_split(X, Y, test_size=0.2, random_state=2020)
# 打印训练集和测试集的形状(样本数,特征数或目标数)
print("X_train:", X_train.shape, "Y_train:", Y_train.shape)
print("X_test:", X_test.shape, "Y_test:", Y_test.shape)

在这里插入图片描述

#help(train_test_split)

2、创建一个线性回归模型并拟合训练数据

  lr.coef_ 是模型的系数,lr.intercept_ 是模型的截距。接下来,将测试数据集的前五个样本用于预测,并将预测结果与实际值一起打印出来。这样可以比较模型的预测效果。

from sklearn.linear_model import LinearRegression
#创建LinearRegression估计器对象
lr = LinearRegression()
lr.fit(X_train, Y_train)
print(lr.coef_, lr.intercept_)XY_test = X_test[:5].copy()
XY_test['MEDV'] = Y_test[:5]
XY_test['MEDV_predict'] = lr.predict(X_test[:5])
XY_test

在这里插入图片描述

3、创建线性回归模型并用训练集数据进行拟合

  接下来,计算训练集和测试集上的R方值(决定系数)和均方误差(MSE)来评估模型的性能。R方值越接近1,表示模型拟合得越好;而均方误差越小,表示模型的预测结果与实际值之间的偏差越小。

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_errorlr = LinearRegression()
lr.fit(X_train, Y_train);  print(lr.coef_, lr.intercept_)print("训练集R方:%f," % lr.score(X_train, Y_train), end='')
print("训练集MSE:%f" % mean_squared_error( Y_train, lr.predict(X_train)))print("测试集R方:%f," % lr.score(X_test, Y_test), end='')
print("测试集MSE:%f" % mean_squared_error( Y_test, lr.predict(X_test)))

在这里插入图片描述

#help(lr.score)
#help(mean_squared_error)

4、使用K折交叉验证来评估线性回归模型的性能

  在每个折叠中,数据被分成训练集和测试集,模型在训练集上进行拟合,并在测试集上进行评估。这有助于更准确地评估模型的泛化能力。在每次迭代中,打印了训练集和测试集的索引,拟合模型的系数和截距,以及模型在测试集上的R方值和均方误差。

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
lr = LinearRegression()from sklearn.model_selection import KFold
kf = KFold(n_splits=3);  n = 0
for train_index, test_index in kf.split(X):n += 1print(n, ":TRAIN", train_index.shape, "  TEST", test_index.shape)X1_train, X1_test = X.iloc[train_index], X.iloc[test_index]Y1_train, Y1_test = Y.iloc[train_index], Y.iloc[test_index]lr.fit(X1_train, Y1_train);  print(lr.coef_, lr.intercept_)print("测试集R方:%f," % lr.score(X1_test, Y1_test), end='')print("测试集MSE:%f" % mean_squared_error( Y1_test, lr.predict(X1_test)))

在这里插入图片描述

  使用带有随机重排和指定随机种子的K折交叉验证来评估线性回归模型。在每个折叠中,将数据分为训练集和测试集,并在训练集上拟合模型。

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
lr = LinearRegression()
coef = [0, 0, 0];  intercept = 0from sklearn.model_selection import KFold
kf = KFold(n_splits=3, shuffle=True, random_state=2020);  n = 0
for train_index, test_index in kf.split(X):n += 1X1_train, X1_test = X.iloc[train_index], X.iloc[test_index]Y1_train, Y1_test = Y.iloc[train_index], Y.iloc[test_index]lr.fit(X1_train, Y1_train)coef += lr.coef_;  intercept += lr.intercept_lr.coef_ = coef/n;  lr.intercept_ = intercept/n
print(lr.coef_, lr.intercept_)print("训练集R方:%f," % lr.score(X_train, Y_train), end='')
print("训练集MSE:%f" % mean_squared_error( Y_train, lr.predict(X_train)))print("测试集R方:%f," % lr.score(X_test, Y_test), end='')
print("测试集MSE:%f" % mean_squared_error( Y_test, lr.predict(X_test)))

在这里插入图片描述

5、使用岭回归模型(Ridge)来拟合数据

  使用岭回归模型(Ridge)来拟合数据,并计算了模型在训练集和测试集上的R方和均方误差(MSE)。岭回归是一种常见的线性回归的正则化方法,通过引入L2范数惩罚项来控制模型的复杂度,有助于解决特征多重共线性问题。

  设置alpha参数为1.0,这是岭回归中控制正则化强度的参数。较大的alpha值意味着更强的正则化。打印岭回归模型的系数(coef)和截距(intercept),以及在训练集和测试集上的R方和MSE。

from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_errorrd = Ridge(alpha=1.0)
rd.fit(X_train, Y_train)
print(rd.coef_, rd.intercept_)print("训练集R方:%f," % rd.score(X_train, Y_train), end='')
print("训练集MSE:%f" % mean_squared_error( Y_train, rd.predict(X_train)))print("测试集R方:%f," % rd.score(X_test, Y_test), end='')
print("测试集MSE:%f" % mean_squared_error( Y_test, rd.predict(X_test)))

在这里插入图片描述
  使用网格搜索(GridSearchCV)来对岭回归(Ridge)模型的正则化参数alpha进行优化,并绘制了正则化系数与交叉验证的均方误差(MSE)之间的关系。

  • 使用GridSearchCV来搜索不同的alpha值,并选出导致最低均方误差的最佳参数。
  • 指定lamda = np.linspace(0, 20, 100)作为网格搜索的候选参数范围。
  • scoring='neg_mean_squared_error'表示用负均方误差作为评分标准。
  • cv=3表示使用3折交叉验证来评估每个alpha值的表现。

  还计算了最佳参数对应的训练集和测试集上的R方(r2_score)和均方误差(neg_mean_squared_error)。最后,用一幅图展示了不同alpha值对应的交叉验证均方误差,以便直观地了解正则化强度与模型表现之间的关系。

from sklearn.linear_model import Ridge
from sklearn.metrics import r2_score
rd = Ridge()from sklearn.model_selection import GridSearchCV
lamda = np.linspace(0, 20, 100)
grid = {'alpha': lamda}
gs = GridSearchCV(estimator=rd, param_grid=grid,\scoring='neg_mean_squared_error', cv=3)
gs.fit(X_train, Y_train)
print(gs.best_params_, -gs.best_score_)
print("训练集MSE:%f," % -gs.score(X_train, Y_train), end='')
print("训练集R方:%f" % r2_score( Y_train, gs.predict(X_train)))
print("测试集MSE:%f," % -gs.score(X_test, Y_test), end='')
print("测试集R方:%f" % r2_score( Y_test, gs.predict(X_test)))fig = plt.figure( figsize=(4, 3), dpi=100 )
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot(lamda, -gs.cv_results_['mean_test_score'], linewidth=1)
plt.text(10, 31.58, r"网格搜索:$\alpha$", fontsize=18)
plt.xlabel( r"正则化系数 - $\alpha$" )
plt.ylabel( r"均方误差 - $MSE$" )
plt.show()

在这里插入图片描述

6、使用Lasso回归防止过拟合

  使用了Lasso回归模型,该模型是线性回归的变体,带有L1正则化项。Lasso回归通过缩小回归系数的绝对值来防止过拟合,最终可能导致一些系数变为零,从而实现特征选择的效果。

from sklearn.linear_model import Lasso
from sklearn.metrics import mean_squared_error
# 创建了一个Lasso模型,正则化参数alpha=1.0,最大迭代次数max_iter=1000
las = Lasso(alpha=1.0, max_iter=1000)
las.fit(X_train, Y_train)
print(las.coef_, las.intercept_)	#训练模型后,输出模型的系数和截距
# 计算训练集和测试集上的R方(score方法)和均方误差(mean_squared_error)
print("训练集R方:%f," % las.score(X_train, Y_train), end='')
print("训练集MSE:%f" % mean_squared_error( Y_train, las.predict(X_train)))print("测试集R方:%f," % las.score(X_test, Y_test), end='')
print("测试集MSE:%f" % mean_squared_error( Y_test, las.predict(X_test)))

在这里插入图片描述

多项式特征扩展与Lasso回归结合。

  • PolynomialFeatures:这个类用于生成多项式特征,它将输入特征的所有可能的组合作为新的特征。在这里,使用PolynomialFeatures(2, include_bias=False)创建了一个二次多项式特征扩展对象,并将其应用于训练集和测试集,得到了扩展后的特征矩阵X_train_pfX_test_pf
  • Lasso:这是Lasso回归模型的调用,使用默认参数alpha=1.0max_iter=1000。然后,使用扩展后的特征矩阵X_train_pf对模型进行拟合。
  • 输出模型系数和截距:打印了模型的系数和截距,这些系数对应于扩展后的特征空间中的每个特征。
  • 训练集和测试集上的评估:最后,分别计算了训练集和测试集上的R方值和均方误差。R方值(决定系数)用于评估模型对目标变量的拟合程度,均方误差则衡量了模型的预测误差大小。
from sklearn.linear_model import Lasso
from sklearn.metrics import mean_squared_error
from sklearn.preprocessing import PolynomialFeaturespoly = PolynomialFeatures(2, include_bias=False)
X_train_pf = poly.fit_transform(X_train)
X_test_pf = poly.fit_transform(X_test)
# X_train的形状是(样本数, 特征数),而X_train_pf的形状是(样本数, 扩展后的特征数)
print("X_train:", X_train.shape, ",X_train_pf.shape:", X_train_pf.shape)las = Lasso(alpha=1.0, max_iter=1000)
las.fit(X_train_pf, Y_train)
print(las.coef_, las.intercept_)	#模型的系数和截距
# 训练集和测试集上的R方值和均方误差
print("训练集R方:%f," % las.score(X_train_pf, Y_train), end='')
print("训练集MSE:%f" % mean_squared_error(Y_train, las.predict(X_train_pf)))print("测试集R方:%f," % las.score(X_test_pf, Y_test), end='')
print("测试集MSE:%f" % mean_squared_error(Y_test, las.predict(X_test_pf)))

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Proxmox VE 8 SDN创建VLAN隔离用户网络

作者:田逸(formyz) 在上一篇文章中,我们用SDN的Simple对租户(用户)网络实现了隔离功能,但它有个限制,仅仅能在单个物理节点上进行通信,而不能跨越物理节点(除…

天诚再出学校物联网锁新品,打造AIoT高校数智化通行解决方案

为进一步提升高职及本科院校校园安防智能化管理水平,助力学校教育信息化转变,校园全场景AIoT解决方案服务商——江苏新巢天诚智能技术有限公司(以下简称“天诚”)推出系列校园物联网锁新品,为在校师生用户群体提供更多…

24_Scala集合Map

文章目录 Scala集合Map1.构建Map2.增删改查3.Map的get操作细节 Scala集合Map –默认immutable –概念和Java一致 1.构建Map –创建kv键值对 && kv键值对的表达 –创建immutable map –创建mutable map //1.1 构建一个kv键值对 val kv "a" -> 1 print…

数据挖掘流程是怎样的?数据挖掘平台基本功能有哪些?

数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。 数据挖掘的流程是: 清晰地定义出业务问题,确定数据挖掘的目的。 数据准备: 数据准备包括&am…

《ElementUI 基础知识》el-tree 之“我的电脑”目录结构效果

前言 项目需求,Web 端获取服务器文件夹目录结构。目录数据是调接口获取,本篇略过,直接展现数据! 效果 实现 html 代码 8 - 15 行,自定义节点信息;代码 9 - 14 行,判断 icon 显示&#xff1b…

数据结构学不会?数据结构可视化网站来了

目录 前言 图码网站 算法可视化 算法编辑器 数据结构全书 数据结构课程 总结 前言 数据结构与算法在计算机的学习中应该是许多小白最头疼的东西,明明听的时候那么容易,为什么转换成代码就那么抽象呢? 有没有一个网站可以数据结构与算…

C语言——文件描述符、系统调用操作文件

文件描述符 在Unix-like操作系统中,文件描述符(file descriptor)是一个用于标识打开文件或I/O设备的整数值。它是对底层文件系统的抽象,用于在应用程序和操作系统之间传递文件信息。 文件描述符是一个非负整数,通常是…

FX110书籍推荐:如何快速成为一名专业股票投资人?

股票投资领域有一本神作《股票交易入门》,它是股票从业人员的入门必备书籍。 关于股票入门的书籍很多,但这本书涉及的知识面最全、实用性最强。从这本书里,我们可以领略到股票交易世界的跌宕起伏而又波澜壮阔的魅力。本书作者 本书的作者是美…

【自动驾驶|毫米波雷达】卡尔曼滤波

目录 一. 滤波器分类 二.卡尔曼滤波(Kalman Filter)原理 (1)定性理解 (2)定量推导 1. 预测阶段 2. 更新阶段 3. 卡尔曼增益 1)卡尔曼增益 2)如何理解卡尔曼增益? 三…

省份数量00

题目链接 省份数量 题目描述 注意点 1 < n < 200isConnected[i][j] 为 1 或 0isConnected[i][i] 1isConnected[i][j] isConnected[j][i] 解答思路 最初想到的是广度优先遍历&#xff0c;当某个城市不属于省份&#xff0c;需要从该城市开始&#xff0c;根据isConne…

重大消息!软考高级论文单考,综合和案例连考

依据辽宁省信息技术教育中心&#xff08;辽宁省软考办&#xff09;发布《关于2024年上半年计算机技术与软件专业技术资格(水平)考试批次安排的通知》可知&#xff0c;2024年上半年软考有如下调整&#xff1a; 1.软考高级考试中&#xff0c;综合知识和案例分析连考&#xff08;…

【功耗仪使用】

一&#xff0c;功耗仪使用 1.1&#xff0c;功耗仪外观及与手机&#xff0c;电脑连接方式 power monitor设备图 同时power monitor设备的后端有一个方形插孔通过数据线与电脑主机USB接口相连接&#xff0c;圆形插孔为电源插孔&#xff0c;用来给power monitor设备通电 pow…

淘宝优惠券领取软件草柴返利APP想从淘宝粘贴提示怎么关闭?想从天猫粘贴、想从京东粘贴弹窗提示关闭

使用iPhone苹果手机想从淘宝点击分享复制链接&#xff0c;到草柴APP查询该商品内部大额隐藏优惠券和返利。可是&#xff0c;苹果iPhone手机每次将复制的商品链接&#xff0c;粘贴到草柴APP时都是提示&#xff1a;“草柴”想从“淘宝”粘贴&#xff0c;每次都需要点击允许粘贴后…

MT2049 运动会进行中

思路&#xff1a;使用a存前缀和。遇见女生-1&#xff0c;遇见男生1。之后遍历a的时候&#xff0c;如果a[i]a[j]&#xff0c;则说明ij这个区间里男女生数量是一样的。所以即求ij这个区间最大长为多少。可以用l[]r[]数组记录某个数第一次出现的位置和最后一次出现的位置。 例如样…

【XR806开发板试用】SPI驱动数码管显示

准备工作 安装repo 创建repo安装目录。 mkdir ~/bin下载repo wget https://storage.googleapis.com/git-repo-downloads/repo -P ~/bin/改变执行权限 chmod ax ~/bin/repo设置环境变量&#xff0c;在~/.bashrc文件的最后输入 export PATH~/bin:$PATH和export REPO_URLhttps://…

java项目+maven+sonarqube+githook 实现代码提交审查

java项目mavensonarqubegithook 实现代码提交审查 当在团队开发过程中, 由于开发人员技术和风格的不同,导致代码质量和风格各不相同, 为了减少合并时的工作量, 以及基础的一些bug 的避免, 可以使用 (sonarqube阿里巴巴开发规范) 实现代码质量的检测. 为了更加简便, 即在使用git…

武汉星起航:亚马逊年终促销新策略——强化营销,优化体验赢未来

年终节日是电商平台的黄金销售期&#xff0c;也是各大电商平台竞相展示自身实力与智慧的重要舞台。作为全球电商巨头的亚马逊&#xff0c;自然也不例外。每年的年终节日&#xff0c;亚马逊都会推出一系列精彩纷呈的促销活动&#xff0c;吸引全球消费者的目光&#xff0c;实现销…

终端安全管理措施有哪些?好用终端安全管理软件推荐(建议收藏)

在当今数字化时代&#xff0c;信息安全已成为企业运营不可或缺的一部分。其中&#xff0c;终端安全为您详细介绍&#xff0c;并推荐几款好用的终端安全管理软件&#xff0c;帮助您更好地保护企业信息安全。管理是确保企业信息安全的重要环节。那么&#xff0c;终端安全管理措施…

JAVA智慧校园平台系统源码:基于前后端框架VUE2+Spring boot+Wed端原生小程序搭建的智慧校园平台

智慧校园平台是目前教育信息化领域的热点之一。随着数字化转型的加速&#xff0c;越来越多的学校开始寻求解决方案&#xff0c;以提高教育管理的效率和质量。 在使用智慧校园平台的过程中&#xff0c;一些功能特点是必要的。那么&#xff0c;究竟什么是智慧校园平台&#xff1…

[图解]SysML和EA建模住宅安全系统-02

1 00:00:00,900 --> 00:00:02,690 这个就是一个块定义图了 2 00:00:03,790 --> 00:00:04,780 简称BDD 3 00:00:05,610 --> 00:00:08,070 实际上就是UML里面的类图 4 00:00:08,080 --> 00:00:09,950 和组件图的一个结合体 5 00:00:13,150 --> 00:00:14,690 我…