机器学习实战:预测波士顿房价

news2024/11/19 13:20:45

前言: Hello大家好,我是Dream。 今天来学习一下机器学习中一个非常经典的案例:预测波士顿房价,在此过程中也会补充很多重要的知识点,欢迎大家一起前来探讨学习~

一、导入数据

在这个项目中,我们利用马萨诸塞州波士顿郊区的房屋信息数据训练和测试一个模型,并对模型的性能和预测能力进行测试。此项目的数据集来自UCI机器学习知识库。波士顿房屋这些数据于1978年开始统计,共506个数据点,涵盖了麻省波士顿不同郊区房屋14种特征的信息。
通过该数据训练后的好的模型可以被用来对房屋做特定预测—尤其是对房屋的价值。对于房地产经纪等人的日常工作来说,这样的预测模型被证明非常有价值。
本项目对原始数据集做了以下处理:

  • 有16个'MEDV' 值为50.0的数据点被移除。 这很可能是由于这些数据点包含遗失看不到的值
  • 有1个数据点的 'RM' 值为8.78. 这是一个异常值,已经被移除。
  • 对于本项目,房屋的'RM''LSTAT''PTRATIO'以及'MEDV'特征是必要的,其余不相关特征已经被移除。
  • 'MEDV'特征的值已经过必要的数学转换,可以反映35年来市场的通货膨胀效应。
import numpy as np
import pandas as pd
from sklearn.model_selection import ShuffleSplit
import visuals as vs
%matplotlib inline

# Load the Boston housing dataset
data = pd.read_csv('housing.csv')
prices = data['MEDV']
features = data.drop('MEDV', axis = 1)
data.head(5)

二、分析数据

在项目的第一个部分,会对波士顿房地产数据进行初步的观察,通过对数据的探索来熟悉数据可以让你更好地理解和解释你的结果。

由于这个项目的最终目标是建立一个预测房屋价值的模型,我们需要将数据集分为特征(features)目标变量(target variable)

  • 特征 'RM''LSTAT',和 'PTRATIO',给我们提供了每个数据点的数量相关的信息。
  • 目标变量 'MEDV',是我们希望预测的变量。

他们分别被存在 featuresprices 两个变量名中。

基础统计运算

  • 计算 prices 中的 'MEDV' 的最小值、最大值、均值、中值和标准差;
  • 将运算结果储存在相应的变量中。
# TODO: Minimum price of the data
minimum_price = np.min(prices)

# TODO: Maximum price of the data
maximum_price = np.max(prices)

# TODO: Mean price of the data
mean_price =np.mean(prices)

# TODO: Median price of the data
median_price = np.median(prices)

# TODO: Standard deviation of prices of the data
std_price = np.std(prices)

# Show the calculated statistics
print("Statistics for Boston housing dataset:\n")
print("Minimum price: ${:.2f}".format(minimum_price)) 
print("Maximum price: ${:.2f}".format(maximum_price))
print("Mean price: ${:.2f}".format(mean_price))
print("Median price ${:.2f}".format(median_price))
print("Standard deviation of prices: ${:.2f}".format(std_price))

在这里插入图片描述

特征观察

如前文所述,本项目中我们关注的是其中三个值:'RM''LSTAT''PTRATIO',对每一个数据点:

  • 'RM' 是该地区中每个房屋的平均房间数量;
  • 'LSTAT' 是指该地区有多少百分比的业主属于是低收入阶层(有工作但收入微薄);
  • 'PTRATIO' 是该地区的中学和小学里,学生和老师的数目比(学生/老师)。

凭直觉,上述三个特征中对每一个来说,你认为增大该特征的数值,'MEDV'的值会是增大还是减小呢?

‘1’: ‘RM’ 是该地区中每个房屋的平均房间数量:

  • ‘回答:’ 'RM’增加,意味着房子的总面积会增加,所以价值会更高。

‘2’: ‘LSTAT’ 是指该地区有多少百分比的业主属于是低收入阶层(有工作但收入微薄);_

  • ‘回答:’ 'LSTAT’占比增加,低收入阶层增加,可支配消费能力就会不多,房屋的价值不会更高。

‘3’: ‘PTRATIO’ 是该地区的中学和小学里,学生和老师的数目比(学生/老师)

  • ‘回答:’ 'PTRATIO’增加,说明学生/老师数目比增加,优质教育程度下降,政府配额不足,学位房优势不明显,价值会下降。

三、 建立模型

定义衡量标准

如果不能对模型的训练和测试的表现进行量化地评估,我们就很难衡量模型的好坏。通常我们会定义一些衡量标准,这些标准可以通过对某些误差或者拟合程度的计算来得到。我们通过运算[决定系数] R 2 R^2 R2 来量化模型的表现。模型的决定系数是回归分析中十分常用的统计信息,经常被当作衡量模型预测能力好坏的标准。

R 2 R^2 R2 的数值范围从0至1,表示目标变量的预测值和实际值之间的相关程度平方的百分比。一个模型的 R 2 R^2 R2 值为0还不如直接用平均值来预测效果好;而一个 R 2 R^2 R2 值为1的模型则可以对目标变量进行完美的预测。从0至1之间的数值,则表示该模型中目标变量中有百分之多少能够用特征来解释。模型也可能出现负值的 R 2 R^2 R2,这种情况下模型所做预测有时会比直接计算目标变量的平均值差很多。

在下方代码的 performance_metric 函数中,我们实现:

  • 使用 sklearn.metrics 中的 r2_score 来计算 y_truey_predict R 2 R^2 R2 值,作为对其表现的评判。
  • 将他们的表现评分储存到 score 变量中。
# TODO: Import 'r2_score'
from sklearn.metrics import r2_score
def performance_metric(y_true, y_predict):
     
    score= r2_score(y_true,y_predict)
    # Return the score
    return score

拟合程度

假设一个数据集有五个数据且一个模型做出下列目标变量的预测:

真实数值预测数值
3.02.5
-0.50.0
2.02.1
7.07.8
4.25.3
你觉得这个模型已成功地描述了目标变量的变化吗?如果成功,请解释为什么,如果没有,也请给出原因。

提示1:运行下方的代码,使用 performance_metric 函数来计算 y_truey_predict 的决定系数。

提示2 R 2 R^2 R2 分数是指可以从自变量中预测的因变量的方差比例。 换一种说法:

  • R 2 R^2 R2 为0意味着因变量不能从自变量预测。
  • R 2 R^2 R2 为1意味着可以从自变量预测因变量。
  • R 2 R^2 R2 在0到1之间表示因变量可预测的程度。
  • R 2 R^2 R2 为0.40意味着 Y 中40%的方差可以从 X 预测。
# Calculate the performance of this model
score = performance_metric([3, -0.5, 2, 7, 4.2], [2.5, 0.0, 2.1, 7.8, 5.3])
print("Model has a coefficient of determination, R^2, of {:.3f}.".format(score))

Model has a coefficient of determination, R^2, of 0.923.

R^2=0.923,决定系数接近1,说明已经成功的描述了目标变量的变化.

数据分割与重排

接下来,我们需要把波士顿房屋数据集分成训练和测试两个子集。通常在这个过程中,数据也会被重排列,以消除数据集中由于顺序而产生的偏差。

  • 使用 sklearn.model_selection 中的 train_test_split, 将 featuresprices 的数据都分成用于训练的数据子集和用于测试的数据子集。
    • 分割比例为:80%的数据用于训练,20%用于测试;
    • 选定一个数值以设定 train_test_split 中的 random_state ,这会确保结果的一致性;
  • 将分割后的训练集与测试集分配给 X_train, X_test, y_trainy_test
# TODO: Import 'train_test_split'
from sklearn.model_selection import train_test_split

# X_train:训练输入数据
# X_test:测试输入数据
# y_train:训练标签
# y_test:测试标签

X = np.array(features)
Y = np.array(prices)

# TODO: Shuffle and split the data into training and testing subsets
X_train, X_test, y_train, y_test =train_test_split(X, Y, test_size = 0.2,random_state=30)

# Success
print("Training and testing split was successful.")

训练及测试

测试数据集通过未知数据来验证算法效果。如果没有数据来对模型进行测试,无法验证未知数据对结果预测。


四、分析模型的表现

在项目的第四步,我们来看一下不同参数下,模型在训练集和验证集上的表现。这里,我们专注于一个特定的算法(带剪枝的决策树,但这并不是这个项目的重点),和这个算法的一个参数 'max_depth'。用全部训练集训练,选择不同'max_depth' 参数,观察这一参数的变化如何影响模型的表现。画出模型的表现来对于分析过程十分有益。

学习曲线

下方区域内的代码会输出四幅图像,它们是一个决策树模型在不同最大深度下的表现。每一条曲线都直观得显示了随着训练数据量的增加,模型学习曲线的在训练集评分和验证集评分的变化,评分使用决定系数 R 2 R^2 R2。曲线的阴影区域代表的是该曲线的不确定性(用标准差衡量)。

vs.ModelLearning(features, prices)

在这里插入图片描述
max-depth = 1 ;当训练数据从0到50增加时,训练集曲线的评分急速下降,验证集曲线的评分急速增加,随着数据量大于50再往上增加,训练集评分逐渐缓慢0.5附近收敛,验证集评分逐渐缓慢向0.4左右收敛,分数大于100以后,训练集评分和验证集评分基本趋向稳定。如果再有更多的训练数据,也不会有效提升模型的表现。

复杂度曲线

下列代码内的区域会输出一幅图像,它展示了一个已经经过训练和验证的决策树模型在不同最大深度条件下的表现。这个图形将包含两条曲线,一个是训练集的变化,一个是验证集的变化。跟学习曲线相似,阴影区域代表该曲线的不确定性,模型训练和测试部分的评分都用的 performance_metric 函数。

vs.ModelComplexity(X_train, y_train)

在这里插入图片描述
1:当模型以最大深度 1训练时,模型的预测是出现很大的偏差还是出现了很大的方差?

  • ** 回答:** 欠拟合,出现大的偏差

2:当模型以最大深度10训练时,情形又如何呢?

  • ** 回答:** 过拟合,出现大的方差

3:图形中的哪些特征能够支持你的结论?

  • ** 回答:** 当深度=1时训练集评分和验证集评分比较低。深度=10时,训练集评分和验证集评分误差越来越大。

五、评估模型的表现

我们使用 fit_model 中的优化模型去预测客户特征集:

网格搜索法

1: 什么是网格搜索法?

  • 回答: 通过各种训练数据训练一堆模型,然后通过交叉验证数据挑选最佳模型。

2:如何用它来优化模型?

  • **回答:**例如决策树算法,通过不同深度的1,2,3,4的训练数据模型,通过交叉验证数据算出F1得分最高的,即最优化参数模型。

K折交叉验证法:

1:什么是K折交叉验证法

  • 回答: 数据被按一定比例分成了训练集和测试集,在K折交叉验证中训练集又被分成了K份,每一份作为验证集。并进行K份训练和验证,最后求出平均分数,以此来得出最优参数和最优模型。

2:GridSearchCV 是如何结合交叉验证来完成对最佳参数组合的选择的?

  • 回答: 可以通过输入参数,给出最优化的结果和参数

3:GridSearchCV 中的’cv_results_'属性能告诉我们什么?

  • 回答: 通过修改 fit_model(X_train, y_train) 函数的返回值 print(pd.DataFrame(reg.cv_results_)) 可以看到显示的是每次训练模型的结果集

4:网格搜索为什么要使用K折交叉验证?K折交叉验证能够避免什么问题?

  • 回答: 为了更好地拟合和预测,得出最优参数和最优模型。K折交叉验证通过将训练集分成K份,每一份依次作为验证集,并进行K次训练和验证,最后求出平均分数,这样可以减少模型表现得评分误差,从而更准确地找到最优参数

拟合模型

我们使用决策树算法训练一个模型。为了得出的是一个最优模型,我们需要使用网格搜索法训练模型,以找到最佳的 'max_depth' 参数。我们把'max_depth' 参数理解为决策树算法在做出预测前,允许其对数据提出问题的数量。决策树是监督学习算法中的一种。
ShuffleSplitScikit-Learn 版本0.17和0.18中有不同的参数。对于下面代码单元格中的 fit_model 函数:

  1. 定义 'regressor' 变量: 使用 sklearn.tree 中的 DecisionTreeRegressor 创建一个决策树的回归函数;
  2. 定义 'params' 变量: 为 'max_depth' 参数创造一个字典,它的值是从1至10的数组;
  3. 定义 'scoring_fnc' 变量: 使用 sklearn.metrics 中的 make_scorer 创建一个评分函数。将 ‘performance_metric’ 作为参数传至这个函数中;
  4. 定义 'grid' 变量: 使用 sklearn.model_selection 中的 GridSearchCV 创建一个网格搜索对象;将变量'regressor', 'params', 'scoring_fnc''cross_validator' 作为参数传至这个对象构造函数中;
# TODO: Import 'make_scorer', 'DecisionTreeRegressor', and 'GridSearchCV'
from sklearn.metrics import  make_scorer
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import GridSearchCV

def fit_model(X, y):
   
    cv_sets = ShuffleSplit(n_splits=10, test_size=0.20, random_state=0)
    
    regressor = DecisionTreeRegressor(random_state=0)
    params = {"max_depth":list(range(1,11))}
    scoring_fnc = make_scorer(performance_metric)
    grid = GridSearchCV(regressor,params,scoring=scoring_fnc,cv=cv_sets)

    grid = grid.fit(X, y)
    return grid

六、做出预测

当我们用数据训练出一个模型,它现在就可用于对新的数据进行预测。在决策树回归函数中,模型已经学会对新输入的数据提问,并返回对目标变量的预测值。我们可以用这个预测来获取数据未知目标变量的信息,这些数据必须是不包含在训练数据之内的。

# Fit the training data to the model using grid search
reg = fit_model(X_train, y_train)

# clf.cv_results_ 是选择参数的日志信息  
#print(pd.DataFrame(reg.cv_results_))
# Produce the value for 'max_depth'
print("Parameter 'max_depth' is {} for the optimal model.".format(reg.best_estimator_.get_params()['max_depth']))

最优模型的最大深度是 max_depth = 4

预测销售价格

假如我们是一个在波士顿地区的房屋经纪人,并期待使用此模型以帮助你的客户评估他们想出售的房屋。你已经从你的三个客户收集到以下的资讯:

特征客戶 1客戶 2客戶 3
房屋内房间总数5 间房间4 间房间8 间房间
社区贫困指数(%被认为是贫困阶层)17%32%3%
邻近学校的学生-老师比例15:122:112:1
  • 你会建议每位客户的房屋销售的价格为多少?
  • 从房屋特征的数值判断,这样的价格合理吗?为什么?

运行下列的代码区域,使用你优化的模型来为每位客户的房屋价值做出预测。

# Produce a matrix for client data
client_data = [[5, 17, 15], # Client 1
               [4, 32, 22], # Client 2
               [8, 3, 12]]  # Client 3

# Show predictions
for i, price in enumerate(reg.predict(client_data)):
    print("Predicted selling price for Client {}'s home: ${:,.2f}".format(i+1, price))

Predicted selling price for Client 1’s home: $409,752.00
Predicted selling price for Client 2’s home: $220,886.84
Predicted selling price for Client 3’s home: $937,650.00

1: 你会建议每位客户的房屋销售的价格为多少?

回答:

  • 客户1建议价格:$409,752.00 理由是:5间房 社区贫困指数为17%不到1/5 学生:老师比例15:1,教育环境中等偏上,房屋宜居性良好,综上价格合理。

  • 客户2建议价格:$220,886.84 理由是:4间房 社区贫困指数将近1/3,学生:老师比例22:1,教育环境很一般。房屋购买吸引力不是很好,所以价值低合理

  • 客户3建议价格:$937,650.00 理由是:8间房 社区贫困指数只有3%属于富人区,老师比例12:1教育环境优,综上该房屋属于上游配套,房间较高合理。

2: 从房屋特征的数值判断,这样的价格合理吗?为什么?

回答: 客户1、客户2、客户2的预测数据分别为:$409,752.00 、$220,886.84、 $937960;房间越多价值越高,邻近学校的学生-老师比例越低价值越高,社区贫困 指数(%)占比越低价值越高,这三个房屋特征数据预测数来的数据我认为是比较合理的,从价值来看几个特征衡量价值影响权重分别为:社区贫困指数 (高端生活区)> 邻近学校的学生-老师比例 (教育资源)> 房屋内房间总数

刚刚预测了三个客户的房子的售价。在这个练习中,我们用最优模型在整个测试数据上进行预测, 并计算相对于目标变量的决定系数 R 2 R^2 R2 的值。

# TODO Calculate the r2 score between 'y_true' and 'y_predict'
predicted = reg.predict(X_test)
r2 = performance_metric(y_test,predicted)

print("Optimal model has R^2 score {:,.2f} on test data".format(r2))

Optimal model has R^2 score 0.80 on test data

R^2=0.8,说明符合变量的变化的结果.

模型健壮性

一个最优的模型不一定是一个健壮模型。有的时候模型会过于复杂或者过于简单,以致于难以泛化新增添的数据;有的时候模型采用的学习算法并不适用于特定的数据结构;有的时候样本本身可能有太多噪点或样本过少,使得模型无法准确地预测目标变量。这些情况下我们会说模型是欠拟合的。模型是否足够健壮来保证预测的一致性?

vs.PredictTrials(features, prices, fit_model, client_data)

在这里插入图片描述

10次训练结果除了第9次,其他基本在训练结果数值比较稳定,说明模型相对健壮

1:1978年所采集的数据,在已考虑通货膨胀的前提下,在今天是否仍然适用?

**回答:**不适用,数据太旧,无法体现现在的价值。

2: 数据中呈现的特征是否足够描述一个房屋?

回答: 不足,还有很多影响房屋价格的特征:房屋的新旧程度、楼层的高低、建筑结构等等。

3: 在波士顿这样的大都市采集的数据,能否应用在其它乡镇地区?

回答: 不适合

4:你觉得仅仅凭房屋所在社区的环境来判断房屋价值合理吗?

回答: 不合理,社区环境房屋价值的一部分,还应考虑地理位置、城市经济因素、交通因素、教育发达程度、已经房屋本身的一些其他特征等诸多因素。

文末推荐与福利

在这里插入图片描述
《Python从入门到精通(微课精编版)》免费包邮送出3本!

在这里插入图片描述
内容介绍:
《Python从入门到精通(微课精编版)》使用通俗易懂的语言、丰富的案例,详细介绍了Python语言的编程知识和应用技巧。全书共24章,内容包括Python开发环境、变量和数据类型、表达式、程序结构、序列、字典和集合、字符串、正则表达式、函数、类、模块、异常处理和程序调试、进程和线程、文件操作、数据库操作、图形界面编程、网络编程、Web编程、网络爬虫、数据处理等,还详细介绍了多个综合实战项目。其中,第24章为扩展项目在线开发,是一章纯线上内容。全书结构完整,知识点与示例相结合,并配有案例实战,可操作性强,示例源代码大都给出详细注释,读者可轻松学习,快速上手。本书采用O2O教学模式,线下与线上协同,以纸质内容为基础,同时拓展更多超值的线上内容,读者使用手机微信扫一扫即可快速阅读,拓展知识,开阔视野,获取超额实战体验。

抽奖方式: 评论区随机抽取3位小伙伴免费送出!
参与方式: 关注博主、点赞、收藏、评论区评论“人生苦短,我用Python!”(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!)
活动截止时间: 2023-12-12 20:00:00
当当购买链接: https://product.dangdang.com/29484801.html
京东购买链接: https://item.jd.com/13524355.html

😄😄😄名单公布方式: 下期活动开始将在评论区和私信一并公布,中奖者请三天内私信提供收货信息😄😄😄

在这里插入图片描述

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

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

相关文章

富时中国A50指数查询方法详解

富时中国A50指数,是指衡量中国A股市场50家具有代表性的上市公司股票表现的指数。对于投资者来说,了解和查询A50指数的走势对于制定投资策略至关重要。那么,如何轻松地查询富时中国A50指数呢? 1. 百度搜索 百度搜索引擎是最简便的…

【Node.js后端架构:MVC模式】基于expres讲解

Node.js后端架构:MVC模式 什么是MVC MVC (Model-View-Controller) 是一种软件设计模式,用于将应用程序的逻辑分离成三个不同的组件:模型、视图和控制器。 模型(Model)负责处理应用程序的数据逻辑。它负责从数据库或其…

使用Netty实现文件传输的HTTP服务器和客户端

现在我们来用netty实现文件传输的HTTP服务器和客户端 pom依赖文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-insta…

国内好用的CRM系统你知道哪些?看看这篇吧

选择CRM系统需要考虑许多因素&#xff0c;其中一个重要的标准是用户数量。使用广泛、受到用户认可的CRM系统&#xff0c;无论是在功能、易用性、灵活性还是价格上&#xff0c;都会给企业带来更多的益处。有什么国内用得比较多的CRM系统吗&#xff1f; 以Zoho CRM为例&#xff…

Linux学习教程(第十四章 Linux系统服务管理)一

第十四章 Linux系统服务管理&#xff08;一&#xff09; 什么是系统服务&#xff1f;服务是在后台运行的应用程序&#xff0c;并且可以提供一些本地系统或网络的功能。 那么&#xff0c;Linux 中常见的服务有那些&#xff0c;这些服务怎么分类&#xff0c;服务如何启动&#x…

视频处理关键知识

1 引言 视频技术发展到现在已经有100多年的历史&#xff0c;虽然比照相技术历史时间短&#xff0c;但在过去很长一段时间之内都是最重要的媒体。由于互联网在新世纪的崛起&#xff0c;使得传统的媒体技术有了更好的发展平台&#xff0c;应运而生了新的多媒体技术。而多媒体技术…

为什么感染HPV的人越来越多?劲松中西医结合医院专家发表看法

近年来&#xff0c;HPV感染率在我国呈现上升趋势&#xff0c;引起了社会的广泛关注。HPV是一种人乳头瘤病毒&#xff0c;主要通过性接触传播&#xff0c;也是引起宫颈癌的主要原因之一。那么&#xff0c;为什么我国的HPV感染率如此高呢&#xff1f; 首先&#xff0c;我们需要了…

手把手教你写 Compose 动画 -- 讲的不能再细的 AnimationSpec 动画规范

前面我们聊过 animateDpAsState 和 Animatable 两种动画 API 的用法&#xff0c;但只是简单了解了&#xff0c;这两个函数内部都有一个共同的核心参数&#xff1a;AnimationSpec。 Composable fun animateDpAsState(targetValue: Dp,animationSpec: AnimationSpec<Dp> …

友思特 Neuro-R:快速部署实时推理API

科技赋能&#xff0c;视觉技术在缺陷检测方面的应用为生产制造自动化程度带来了重大影响&#xff0c;有效缩短了检测时间&#xff0c;提升了生产效率&#xff0c;创造出更多的经济效益。通过视觉技术的精准分析和快速判断&#xff0c;缺陷检测变得更加准确、高效&#xff0c;无…

Java二十一章 网络通信

1 网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。 局域网与互联网 服务器是指提供信息的计算机或程序&#xff0c;客户机是指请求信息的计算机或程序。网络用于连接服务器与客户机&#xff0c;实现两者间的相互通信。 网络协议 网络协议规定了计算机…

echarts绘制一个柱状折线图

其他echarts&#xff1a; echarts绘制一个环形图 echarts绘制一个饼图 echarts绘制一个环形图2 效果&#xff1a; 代码&#xff1a; <template><div class"wrapper"><!-- 柱状图 --><div v-if"type new_bar" ref"barChar…

2023最新八股文前端面试题

第一章 Css 1.说一下CSS的盒模型。 在HTML页面中的所有元素都可以看成是一个盒子盒子的组成:内容content、内边距padding、边框border、外边距margin盒模型的类型: 标准盒模型 margin border padding content IE盒模型 margin content(border padding) 控制盒模型的模式…

如何选择靠谱的软件测试外包公司?CMA、CNAS软件测试报告获取

作为信息科技产业的代表之一&#xff0c;软件公司受到了越来越多的关注&#xff0c;它们的发展为我国的科技创新提供了强大的战略支撑。软件测试作为提升软件产品质量的后盾&#xff0c;日益成为一个专业化、标准化和规范化的行业&#xff0c;软件测试外包公司就是这种背景下成…

每日汇评:由于非农就业数据可能低迷,黄金恐再次测试2050美元上方

周五早间&#xff0c;金价在2,030美元附近扩大区间&#xff1b; 美元正在企稳&#xff0c;美债收益率坚持复苏收益&#xff1b; 由于美国就业大概率疲软&#xff0c;黄金日线图倾向于看涨&#xff1b; 周五早间&#xff0c;金价连续第四个交易日延续区间波动走势&#xff0c;因…

员工持股平台模式有哪几种?

员工持股平台模式 目前在现有的市场环境下持股平台的模式主要有公司型的持股平台以及有限合伙企业的持股平台。 &#xff08;一&#xff09;公司型员工持股平台 设立公司型的员工持股平台的唯一目的是为了让平台公司受让母公司的股权&#xff0c;从而实现员工间接持有母公司股权…

外贸行业的CRM系统和其它CRM有什么区别?

外贸行业对客户管理的追求日益提高&#xff0c;为了应对客户需求的变化和多元性&#xff0c;外贸企业需要借助CRM管理系统实现智能管理。下面&#xff0c;我们将详细探讨外贸CRM的概念、特点和具体应用。 什么是外贸CRM&#xff1f; 外贸CRM是指针对外贸行业的客户关系管理系…

3-Mybatis

文章目录 Mybatis概述什么是Mybatis&#xff1f;Mybatis导入知识补充数据持久化持久层 第一个Mybatis程序&#xff1a;数据的增删改查查创建环境编写代码1、目录结构2、核心配置文件&#xff1a;resources/mybatis-config.xml3、mybatis工具类&#xff1a;Utils/MybatisUtils4、…

电商行业邮件营销全攻略:解决方案与实施技巧

在电商行业这样多元化且快节奏的行业中&#xff0c;有效、及时的沟通则是其业务发展的基础之一。您需要在客户生命周期的各个阶段与他们进行交互&#xff0c;需要在恰当的时机推送他们需要的信息&#xff0c;更重要的是&#xff0c;您需要根据客户的购买经历迅速制定营销方案&a…

STL(五)(queue篇)

我发现之前一版在电脑上看 常用函数部分 没有问题,由于是手打上去的,在手机上看会发生错位问题,现已将电脑原版 常用函数部分 截图改为图片形式,不会再发生错位问题,非常感谢大家的支持 ### priority_queue优先队列出现频率非常高,尤为重要(是一定要掌握的数据结构) 1.queue队…

vmware虚拟机17 安装macos14过程及问题处理亲测

前期准备 1、可引导可虚拟机安装的macOS Sonoma 14 ISO镜像安装文件 我找到得地址&#xff0c;下载自行解决啦 2、VMware虚拟机应用软件 官网下载就好&#xff0c;搜个码搞定 3、解锁工具macOS Unlocker 开始安装&#xff1a; 1、打开VMware软件&#xff0c;新建一个系统…