手把手带你玩转Spark机器学习-使用Spark构建分类模型

article/2025/10/19 15:51:06

系列文章目录

  1. 手把手带你玩转Spark机器学习-专栏介绍
  2. 手把手带你玩转Spark机器学习-问题汇总
  3. 手把手带你玩转Spark机器学习-Spark的安装及使用
  4. 手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换
  5. 手把手带你玩转Spark机器学习-使用Spark构建分类模型
  6. 手把手带你玩转Spark机器学习-使用Spark构建回归模型
  7. 手把手带你玩转Spark机器学习-使用Spark构建聚类模型
  8. 手把手带你玩转Spark机器学习-使用Spark进行数据降维
  9. 手把手带你玩转Spark机器学习-使用Spark进行文本处理
  10. 手把手带你玩转Spark机器学习-深度学习在Spark上的应用

文章目录

  • 系列文章目录
  • 前言
  • 一、获取数据集
  • 二、数据探索
    • 2.数据预处理
    • 3.特征工程
    • 4.模型构建
      • Logistic regression
      • RandomForest
      • 梯度提升决策树
  • 总结


前言

本文,我们将介绍如何利用Spark构建分类模型。我们会介绍分类模型【逻辑回归、随机森林、梯度决策树】的基础知识以及如何通过Spark MLib来使用这些模型。分类通常通常是指将事物分成不同的类别。在分类模型中,我们期望根据一组特征来判断类别,这些特征代表了物体、事件或上下文相关的属性(变量)。

分类是监督学习的一种形式,我们用带有类标记或者类输出的训练样本训练模型(也就是通过输出结果监督被训练过的模型)。分类模型适用于很多情形,一些常见的例子如下:

  • 预测互联网用户对广告的点击率【点击or不点击,二分类】
  • 检测欺诈【二分类】
  • 预测拖欠贷款【二分类】
  • 对图片、视频或声音分类【绝大多数为多分类】
  • 对新闻、网页或者其他内容标记类别或者打标签【多分类】
  • 发现垃圾邮件、垃圾页面、网络入侵和其他恶意行为【二分类或者多分类】
  • 检测故障,比如计算机系统或者网络的故障检测【多分类】
  • 根据顾客或者用户购买产品或者使用服务的概率对他们进行排序【多分类】
  • 预测顾客或者用户中谁有可能停止使用某个产品或服务【二分类】

上面只是罗列了一些可行的用例,在实际业务场景中,分类方法是机器学习和统计领域使用最广泛的技术之一。
文章中涉及到的code可到本人github处下载:SparkML


一、获取数据集

我们在文章:Spark机器学习实战-使用Spark进行数据处理和数据转换中介绍了如何去获取一些公开数据集来支撑咱们的训练和学习。在这篇文章中我们将使用泰坦尼克号乘客数据,来预测他们是否能在泰坦尼克号沉没中幸存下来。数据集中字段定义如下:

变量名定义取值
survival幸存0=No,1=Yes
pclass船票仓位等级1 = 1st, 2 = 2nd, 3 = 3rd
sex性别
Age年龄
sibsp泰坦尼克号上的兄弟姐妹/配偶
parch泰坦尼克号上的父母/孩子
ticket票号
fare票价
cabin客舱号
embarked登船港口

二、数据探索

首先创建Session,并读取泰坦尼克号的训练数据

# Firstly we create sparkSession (like a container)
spark = SparkSession.builder.appName('Play with pyspark ML on titatic_dataset').getOrCreate()
# After creating spark, we use spark.read.csv to read dataset, like pandas.read_csv
df = spark.read.csv('.c/train.csv',header = 'True',inferSchema='True')
df.limit(3).toPandas()

在这里插入图片描述

然后,我们使用可视化库(matplotlib、seaborn)对上述数据进行可视化分析。在这之前,我们需要将 SparkDataframe 转换为 PandasDataFrame。

pandas_df = df.toPandas()plt.figure(figsize=(10,5))
plt.title('Age distribution among all Pasengers')
sns.distplot(pandas_df['Age']);

在这里插入图片描述
如上图所示,泰坦尼克号上的乘客年龄是个近似正太分布。

接下来我们利用pyspark中现有的函数来检查下数据中存在的空缺值。
isnan() 是 pysparrk.sql.function 包的一个函数,函数的入参是某列列名,isNull() 属于 pyspark.sql.Column 包,用于检查列的空状态。

from pyspark.sql.functions import isnan, when, count, col
df.select([count(when(isnan(c) | col(c).isNull(), c)).alias(c) for c in df.columns]).show()

在这里插入图片描述
由上图可知,有177名乘客的年龄是缺失的,687名乘客客舱号缺失,2名乘客登船港口缺失。

2.数据预处理

由于Cabin所在列数据缺失率超过50%,所以对该列做剔除处理。

df = df.drop("Cabin")

接下来我们对年龄进行缺失值的填充,一般来说,我们可以将平均年龄填充到这些缺失值中,但是我们发现有很多不同年龄的人,但是在Name中,我们发现有Mr和Mrs这样的称呼,因此我们可以通过这样的称呼对年龄进行分组,然后将各自组的平均值分配到各自组的缺失值中。

我们利用正则表达式来提取类似上述的称呼:

df = df.withColumn("Initial",regexp_extract(col("Name"),"([A-Za-z]+)\.",1))
df.limit(3).toPandas()

在这里插入图片描述
通过分析Initial的结果,发现有很多拼写错误的字母,比如说Mlle或者Mme,这种我们做个替换修正的操作:

df = df.replace(['Mlle','Mme', 'Ms', 'Dr','Major','Lady','Countess','Jonkheer','Col','Rev','Capt','Sir','Don'],['Miss','Miss','Miss','Mr','Mr',  'Mrs',  'Mrs',  'Other',  'Other','Other','Mr','Mr','Mr'])# Checking the average age by Initials
df.groupby('Initial').avg('Age').collect()

通过对Initial进行聚合,并计算出每个分组中的平均年龄。并将平均年龄填充到对应分组中(对年龄进行四舍五入)
在这里插入图片描述

# Assigning missing values in age feature based on average age of Initials
df = df.withColumn("Age",when((df["Initial"] == "Miss")   & (df["Age"].isNull()), 22).otherwise(df["Age"]))
df = df.withColumn("Age",when((df["Initial"] == "Other")  & (df["Age"].isNull()), 46).otherwise(df["Age"]))
df = df.withColumn("Age",when((df["Initial"] == "Master") & (df["Age"].isNull()), 5).otherwise( df["Age"]))
df = df.withColumn("Age",when((df["Initial"] == "Mr")     & (df["Age"].isNull()), 33).otherwise(df["Age"]))
df = df.withColumn("Age",when((df["Initial"] == "Mrs")    & (df["Age"].isNull()), 36).otherwise(df["Age"]))

对于Embarked列,我们做以下探查


df.groupBy("Embarked").count().show()

在这里插入图片描述

Embarked列只有两项缺失,并且该列是类别类变量,因此我们利用该列的众数对该数值进行填充。

df = df.na.fill({"Embarked" : 'S'})
# Check again the missing value status
df.select([count(when(isnan(c) | col(c).isNull(), c)).alias(c) for c in df.columns]).show()

在这里插入图片描述

3.特征工程

在处理完缺失值后,我们开始做一些特征工程的工作,这里的话,我们会多次使用Pyspark多重条件语法:When otherwise

首先我们构造一个新的特征列"Alone",这个特征列主要是表示该乘客是否有家人

df = df.withColumn("Family_Size",col('SibSp')+col('Parch')) # Create new column: Family_size
df = df.withColumn('Alone',lit(0))  # Create new column: Alone and assign 0 default value to Alone column
df = df.withColumn("Alone",when(df["Family_Size"] == 0, 1).otherwise(df["Alone"]))

接下来对Sex、Embarked和Initial列做编码处理,将字符串转换成数字编码,这里使用StringIndexer:

indexers = [StringIndexer(inputCol=column, outputCol=column+"_index").fit(df) for column in ["Sex","Embarked","Initial"]]
pipeline = Pipeline(stages=indexers)
df = pipeline.fit(df).transform(df)
df.limit(3).toPandas()

在这里插入图片描述

接着删除建模不需要的列,并将所有特征放入到Pyspark VectorAssembler中进行特征拼接:

# Now we drop columns that not needed for modelling
df = df.drop("PassengerId","Name","Ticket","Cabin","Embarked","Sex","Initial")# Before modelling in Pyspark, we need to put all features to Vector using Pyspark VectorAssembler
feature = VectorAssembler(inputCols = df.columns[1:],outputCol="features")
feature_vector= feature.transform(df)
feature_vector.limit(3).toPandas()

在这里插入图片描述划分训练集和测试集

# for data split in pyspark, we can use df.randomSplit()
(train_df, test_df) = feature_vector.randomSplit([0.8, 0.2],seed = 11)
train_df.printSchema()

在这里插入图片描述

4.模型构建

这里,我们将使用三种机器学习算法:逻辑回归(LogisticRegression)、随机森林(RandomForestClassifier)、梯度提升决策树(Gradient-boosted tree classifier)。

这里,关于逻辑回归的算法介绍,大家可以看我以前写的一篇博文:CS229 Part2 分类与逻辑回归

我们选择特征列进行特征训练并选择"Survived"作为标签进行预测。

# Select features column for features training and 'Survived' as label to predict
titanic_df = feature_vector.select(['features','Survived'])
# Split the dataset to train_df and test_df
train_df,test_df = titanic_df.randomSplit([0.75,0.25])

Logistic regression

# LOAD PYSPARK LIBRARIES
from pyspark.ml.classification import LogisticRegression
from pyspark.ml.tuning import ParamGridBuilder, TrainValidationSplit
from pyspark.ml import Pipeline
from pyspark.ml.evaluation import BinaryClassificationEvaluator
from pyspark.ml.tuning import CrossValidator, ParamGridBuilder
from sklearn.metrics import roc_curve,auc# DEFINE ALGORITHM 
lr = LogisticRegression(labelCol="Survived")# DEFINE GRID PARAMETERS
paramGrid = ParamGridBuilder().addGrid(lr.regParam, (0.01, 0.1))\.addGrid(lr.maxIter, (5, 10))\.addGrid(lr.tol, (1e-4, 1e-5))\.addGrid(lr.elasticNetParam, (0.25,0.75))\.build()# DEFINE CROSS VALIDATION WITH PARAMETERS
tvs = TrainValidationSplit( estimator=lr,estimatorParamMaps=paramGrid,evaluator=MulticlassClassificationEvaluator(labelCol='Survived'),trainRatio=0.8)
model = tvs.fit(train_df)
model_predictions= model.transform(test_df)print('Accuracy: ', MulticlassClassificationEvaluator(labelCol='Survived',metricName='accuracy').evaluate(model_predictions))
print('Precision: ',MulticlassClassificationEvaluator(labelCol='Survived',metricName='weightedPrecision').evaluate(model_predictions))

在这里插入图片描述

在上面的代码中,我们使用了网格参数来贪婪搜索训练模型的最佳参数,训练完成后的评估结果:Accuracy为0.8,Precision为0.8。
为了进一步刻画分类器的性能,我们来计算ROC的分值。

from pyspark.mllib.evaluation import BinaryClassificationMetrics as metric
from pyspark import SparkContext
sc =SparkContext.getOrCreate()   # We need to create SparkContext
results = model_predictions.select(['probability', 'Survived'])## prepare score-label set
results_collect = results.collect()
results_list = [(float(i[0][0]), 1.0-float(i[1])) for i in results_collect]
scoreAndLabels = sc.parallelize(results_list)metrics = metric(scoreAndLabels)
print("The ROC score is : ", metrics.areaUnderROC)

在这里插入图片描述
我们将ROC曲线画出,来进一步表示分类器性能在不同决策阈值下TPR对FPR的折衷。
ROC曲线是对分类起的真阳性率-假阳性率的图形化解释。

from sklearn.metrics import roc_curve, aucfpr = dict()
tpr = dict()
roc_auc = dict()y_test = [i[1] for i in results_list]
y_score = [i[0] for i in results_list]fpr, tpr, _ = roc_curve(y_test, y_score)
roc_auc = auc(fpr, tpr)%matplotlib inline
plt.figure()
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Area under the ROC Curve')
plt.legend(loc="lower right")
plt.show()

在这里插入图片描述

RandomForest

在机器学习中,随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定。在了解随机森林前,得先了解下决策树的知识:CART分类回归树分析与python实现、ID3决策树原理分析及python实现。

构建随机森林模型

from pyspark.ml.classification import RandomForestClassifier
from pyspark.ml.tuning import ParamGridBuilder, TrainValidationSplit
rf = RandomForestClassifier(labelCol='Survived')
paramGrid = ParamGridBuilder()\.addGrid(rf.maxDepth, [5, 10, 20]) \.addGrid(rf.maxBins, [20, 32, 50]) \.addGrid(rf.numTrees, [20, 40, 60 ]) \.addGrid(rf.impurity, ["gini", "entropy"]) \.addGrid(rf.minInstancesPerNode, [1, 5, 10]) \.build()tvs = TrainValidationSplit( estimator=rf,estimatorParamMaps=paramGrid,evaluator=MulticlassClassificationEvaluator(labelCol='Survived'),trainRatio=0.8)
model = tvs.fit(train_df)
model_predictions= model.transform(test_df)print('Accuracy: ', MulticlassClassificationEvaluator(labelCol='Survived',metricName='accuracy').evaluate(model_predictions))
print('Precision: ',MulticlassClassificationEvaluator(labelCol='Survived',metricName='weightedPrecision').evaluate(model_predictions))

在这里插入图片描述

计算ROC分数

sc =SparkContext.getOrCreate()   # We need to create SparkContext
results = model_predictions.select(['probability', 'Survived'])## prepare score-label set
results_collect = results.collect()
results_list = [(float(i[0][0]), 1.0-float(i[1])) for i in results_collect]
scoreAndLabels = sc.parallelize(results_list)metrics = metric(scoreAndLabels)
print("The ROC score is : ", metrics.areaUnderROC)

在这里插入图片描述

fpr = dict()
tpr = dict()
roc_auc = dict()y_test = [i[1] for i in results_list]
y_score = [i[0] for i in results_list]fpr, tpr, _ = roc_curve(y_test, y_score)
roc_auc = auc(fpr, tpr)%matplotlib inline
plt.figure()
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Area under the ROC Curve')
plt.legend(loc="lower right")
plt.show()

在这里插入图片描述

梯度提升决策树

在讲梯度提升决策树之前,先给大家讲下上面的随机森林和梯度决策树之间的区别。

随机森林和梯度提升决策树都属于集成学习算法,它们都由多棵决策树所组成,最终的结果也需要经过所有决策树共同决定。
但随机森林与梯度提升决策树在思想和算法上有所区别,随机森林采用的是机器学习中的Bagging思想,而梯度提升决策树则采用的是Boosting思想。

Bagging和Boosting都是集成学习方法,且都是通过结合多个弱学习器并提升为强学习器来完成训练任务。Bagging通过有放回均匀抽样法从训练集中抽取样本训练弱分类器,每个分类器的训练集是相互独立的,而Boosting的每个分类器的训练集不是相互独立的,每个弱分类器的训练集都是在上一个弱分类器的结果上进行取样。由于随机森林采用了Bagging思想,那么决策树训练集相互独立,组成随机森林的树相互之间可以并行生成,而梯度提升决策树采用的Boosting思想,组成的树需要按顺序串行生成。并且随机森林中的决策树对训练集进行训练时,对所有的训练集一视同仁,而梯度提升决策树对不同的决策树依据重要性赋有不同的权值。

在应用上,随机森林与梯度提升决策树都可以解决分类与回归问题,但随机森林更多地用于解决分类问题,梯度提升决策树则更多用于处理回归问题。

from pyspark.ml.classification import GBTClassifier
gbt = GBTClassifier(labelCol="Survived")
paramGrid = ParamGridBuilder()\.addGrid(gbt.maxDepth, [5, 10, 20]) \.addGrid(gbt.maxBins, [20, 32, 50]) \.addGrid(gbt.maxIter, [10, 20, 30]) \.addGrid(gbt.minInstancesPerNode, [1, 5, 10]) \.build()tvs = TrainValidationSplit(estimator=gbt, estimatorParamMaps=paramGrid,evaluator=MulticlassClassificationEvaluator(labelCol='Survived'),trainRatio=0.8)
model = tvs.fit(train_df)
model_predictions= model.transform(test_df)
print('Accuracy: ', MulticlassClassificationEvaluator(labelCol='Survived',metricName='accuracy').evaluate(model_predictions))
print('Precision: ',MulticlassClassificationEvaluator(labelCol='Survived',metricName='weightedPrecision').evaluate(model_predictions))

在这里插入图片描述
计算ROC分数

sc =SparkContext.getOrCreate()   # We need to create SparkContext
results = model_predictions.select(['probability', 'Survived'])## prepare score-label set
results_collect = results.collect()
results_list = [(float(i[0][0]), 1.0-float(i[1])) for i in results_collect]
scoreAndLabels = sc.parallelize(results_list)metrics = metric(scoreAndLabels)
print("The ROC score is: ", metrics.areaUnderROC)

在这里插入图片描述

画出ROC曲线

fpr = dict()
tpr = dict()
roc_auc = dict()y_test = [i[1] for i in results_list]
y_score = [i[0] for i in results_list]fpr, tpr, _ = roc_curve(y_test, y_score)
roc_auc = auc(fpr, tpr)%matplotlib inline
plt.figure()
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Area under the ROC Curve')
plt.legend(loc="lower right")
plt.show()

在这里插入图片描述


总结

以上就是今天本文所要分享的内容,借助泰坦尼克号乘客数据,我们通过三个机器学习算法来预测乘客是否幸存。并详细讲解了如何通过Pyspark对数据进行分析、清洗、异常值填充、特征工程以及参数搜索模型调优,最后我们还分析比较了随机森林和梯度提升决策树的异同,以及介绍了一些性能评估指标及可视化的方法。


http://chatgpt.dhexx.cn/article/ELqyHm4m.shtml

相关文章

手把手带你玩转Spark机器学习-Spark的安装及使用

系列文章目录 手把手带你玩转Spark机器学习-专栏介绍手把手带你玩转Spark机器学习-问题汇总手把手带你玩转Spark机器学习-Spark的安装及使用手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换手把手带你玩转Spark机器学习-使用Spark构建分类模型手把手带你玩转Spa…

手把手带你玩转Spark机器学习-深度学习在Spark上的应用

系列文章目录 手把手带你玩转Spark机器学习-专栏介绍手把手带你玩转Spark机器学习-问题汇总手把手带你玩转Spark机器学习-Spark的安装及使用手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换手把手带你玩转Spark机器学习-使用Spark构建分类模型手把手带你玩转Spa…

Spark Machine Learning(SparkML):机器学习(部分一)

机器学习是现阶段实现人工智能应用的主要方法,它广泛应用于机器视觉、语音识别、自然语言处理、数据挖掘等领域。MLlib是Apache Spark的可伸缩机器学习库。官网地址:[http://spark.apache.org/docs/latest/ml-guide.html] Spark的机器学习(ML)库提供了许多分布式ML算法。这些算…

手把手带你玩转Spark机器学习-使用Spark构建聚类模型

系列文章目录 手把手带你玩转Spark机器学习-专栏介绍手把手带你玩转Spark机器学习-问题汇总手把手带你玩转Spark机器学习-Spark的安装及使用手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换手把手带你玩转Spark机器学习-使用Spark构建分类模型手把手带你玩转Spa…

Spark机器学习解析

源码加数据集: 文件源码 Gitee好像只收10M一下的文件类型,所以数据集就只能以链接的形式自己下了 KMeans和决策树KDD99数据集,推荐使用10%的数据集: http://kdd.ics.uci.edu/databases/kddcup99/ ALS电影推荐的Movielens数据集…

Spark大数据处理系列之Machine Learning

Spark的机器学习库(Spark MLlib),包括各种机器学习算法:协同过滤算法、聚类算法、分类算法和其他算法。在前面的《Spark大数据处理》系列文章,介绍Apache Spark框架,介绍如何使用Spark SQL库的SQL接口去访问数据,使用S…

大数据笔记--Spark机器学习(第一篇)

目录 一、数据挖掘与机器学习 1、概念 2、人工智能 3、数据挖掘体系 二、机器学习 1、什么是机器学习 2、机器学习的应用 3、实现机器学习算法的工具与技术框架 三、Spark MLlib介绍 1、简介 2、MLlib基本数据类型 Ⅰ、概述 Ⅱ、本地向量 Ⅲ、向量标签的使用 Ⅳ…

iis 重启 (三种方法)

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 1 1、界面操作 打开“控制面板”->“管…

IIS中应用程序池自动停止,重启报错

阅文时长| 0.2分钟字数统计| 329.6字符主要内容| 1、引言&背景 2、解决方案 3、声明与参考资料 『IIS中应用程序池自动停止,重启报错』编写人| SCscHero 编写时间| 2022/1/3 PM12:32文章类型| 系列完成度| 已完成座右铭每一个伟大的事业,都有一个微不…

服务器上系统怎么启动iis,IIS服务器如何重新启动

IIS的设计目的是建立一套集成的服务器服务,用以支持HTTP,FTP和SMTP,它能够提供快速且集成了现有产品,同时可扩展的Internet服务器,而最近就有很多小伙伴问小编IIS服务器如何重新启动,其实很简单&#xff0c…

解决:IIS 假死,运行一段时间服务器上所有网站打不开,必须要重启服务器才行,重启IIS都没用。怎么解决,解决方案

tip:我服务器问题是 每个5-6天后,服务器上的所有网站都不能访问,重启IIS无用,必须重启服务器! 后,请教周华伟周经理后,找到解决方案如下: 第一原因: 这是程序池造成的&#xff0c…

iis服务器 关闭自动启动,设置IIS服务器定时自动重启的方法

最近,有一朋友的IIS服务器老是出现问题,运行一段时间下来就会出现访问服务器上的网站时提示数据库连接出错,然后重启IIS后网站又能正常访问了,实在找不出是什么原因导致了这个问题。不过最终我想到了一个笨办法,就是让…

C#实现对IIS网站和应用程序池实时监测(网站停止后自动重启)

一、需求分析 在我们的日常运维中,可能会遇到业务网站在运行一段时间后由于某些不确定因素而停止运行,导致业务功能受影响,而此时只要我们重启服务又能够正常运行了,在我们还没有完全排查从根本上解决问题前,需要一个临时的方法来救场(即:当发现业务网站停止后能够自动重…

bat脚本重启IIS中的网站

bat脚本实现重启IIS中的网站 echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d C:\Windows\System32\inetsrv\ tas…

Windows服务器设置IIS定时重启的方法,带图详解

我们在使用Windows2008下IIS服务器时会经常出现资源耗尽的现象,运行一段时间下来就会出现访问服务器上的网站时提示数据库连接出错,重启IIS后网站又能正常访问了,这个问题可能困扰了很多站长朋友。 一位做网站的笔友经过不断的实践找到了一个…

【服务器】iis的重启服务器、重启iis、回收(重启)线程池、刷新网站

windows自带iis,如果没有的也可以控制面板中启用 1、在开始按钮点击右键,选择控制面板。 2、接着我们从控制面板选择“程序”。 3、然后选择“启用或关闭windows功能”。 4、从列表中选择Internet Infomation Services。 5、并且把相应的功能条…

【window】重启IIS服务

在工作站计算机中使用命令窗口重启IIS一、首先打开cmd命令窗口 二、在cmd窗口中输入iisreset /restart——注 /前有空格 然后就能重启IIS

关于IIS重启的几种方法

关于IIS重启的几种方法 今天看文档,正好看到了有各种情况下,对于云端和本地互相同步更新过程中,经常需要重启IIS服务。自己一直就掌握一种重启方法,想看看一共有几种常用的,遂百度之。经过试验,将经验总结如…

Matlab常用图像处理命令108例(八)

文章和代码以及样例图片等相关资源,已经归档至【Github仓库:digital-image-processing-matlab】或者公众号【AIShareLab】回复 数字图像处理 也可获取。 文章目录 98.roifill99.roifilt2100.roipoly101.std2102.subimage103.truesize104.uint8105.uint16…

chrome浏览器跨域设置(版本号108之后的跨域设置)

1、首先在chrome浏览器安装目录下复制chrome.exe,生成一个新的命名为chrome-cross.exe 注意:为什么要在目录下复制一个新的?是因为如果名字相同,可能会导致设置好的跨域浏览器打开后跟原来的chrome.exe是同一个浏览器&#xff0c…