首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Spark上的交叉验证对SVM和DT进行数据分割

Spark是一个开源的大数据处理框架,它提供了丰富的工具和库来处理大规模数据集。在Spark上使用交叉验证对SVM(支持向量机)和DT(决策树)进行数据分割的步骤如下:

  1. 导入必要的库和模块:
代码语言:txt
复制
from pyspark.ml.classification import LinearSVC, DecisionTreeClassifier
from pyspark.ml.evaluation import BinaryClassificationEvaluator
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.tuning import ParamGridBuilder, CrossValidator
from pyspark.sql import SparkSession
  1. 创建SparkSession:
代码语言:txt
复制
spark = SparkSession.builder.appName("CrossValidationExample").getOrCreate()
  1. 加载数据集:
代码语言:txt
复制
data = spark.read.format("libsvm").load("data/sample_libsvm_data.txt")
  1. 准备数据:
代码语言:txt
复制
assembler = VectorAssembler(inputCols=data.columns[1:], outputCol="features")
data = assembler.transform(data)
  1. 创建分类器对象:
代码语言:txt
复制
svm = LinearSVC(maxIter=10)
dt = DecisionTreeClassifier()
  1. 创建参数网格:
代码语言:txt
复制
paramGrid = ParamGridBuilder().addGrid(svm.regParam, [0.1, 0.01]).addGrid(dt.maxDepth, [2, 5]).build()
  1. 创建交叉验证评估器:
代码语言:txt
复制
evaluator = BinaryClassificationEvaluator()
  1. 创建交叉验证对象:
代码语言:txt
复制
crossval = CrossValidator(estimator=svm, estimatorParamMaps=paramGrid, evaluator=evaluator, numFolds=3)
  1. 运行交叉验证:
代码语言:txt
复制
cvModel = crossval.fit(data)
  1. 获取最佳模型:
代码语言:txt
复制
bestModel = cvModel.bestModel

以上步骤中,我们首先导入了必要的库和模块,然后创建了SparkSession。接着,我们加载了数据集,并使用VectorAssembler将数据转换为特征向量。然后,我们创建了SVM和DT的分类器对象。接下来,我们创建了参数网格,用于定义不同参数组合。然后,我们创建了交叉验证评估器和交叉验证对象。最后,我们运行交叉验证并获取最佳模型。

关于交叉验证的概念,它是一种评估机器学习模型性能的方法。它将数据集分成K个子集,每次使用其中K-1个子集作为训练集,剩下的一个子集作为验证集。这样,我们可以通过多次训练和验证来评估模型的性能,从而选择最佳的模型参数。

SVM和DT是常用的机器学习算法,用于分类和回归任务。SVM通过寻找一个最优的超平面来将数据分为不同的类别,而DT则通过构建一棵决策树来进行分类。它们在不同的数据集和场景下都有广泛的应用。

腾讯云提供了多个与大数据处理和机器学习相关的产品和服务,例如腾讯云机器学习平台(https://cloud.tencent.com/product/tcmlp)、腾讯云数据仓库(https://cloud.tencent.com/product/dw)、腾讯云数据湖(https://cloud.tencent.com/product/datalake)等。这些产品和服务可以帮助用户在云上进行大规模数据处理和机器学习任务。

注意:以上答案仅供参考,具体的实现方式可能会因环境和需求的不同而有所变化。

相关搜索:如何使用jquery对单击和oneclick上的按钮进行验证如何对不同的参数模型使用网格搜索和交叉验证?如何使用purrr中的cross和pmap对多个模型执行k折交叉验证?如何使用Matplotlib对Pandas数据框中的数据进行分类和绘图?如何要求对POST请求进行身份验证,但允许在令牌安全的API上对GET请求进行未经身份验证的使用?如何使用图像数据生成器和来自dataframe的流(使用CSV文件)实现K折叠交叉验证如何在AppEngine上使用Appengine的OpenID和facebook OAuth混合进行身份验证?如何在Intranet的.NET核心web应用程序上使用AD进行身份验证和使用SQL数据库进行授权如何使用r中的插入程序包对最佳调整的超参数进行10折交叉验证,从而获得每个折叠的预测?如何使用单独的df对训练和测试数据进行logistic回归模型预测如何使用Jwt对端点进行身份验证并防止用户在Spring Boot WebFlux中使用自己的数据如何使用cypress对带Firebase身份验证和Firestore的Angular应用程序进行e2e测试如何使用数据集(nd.array)对散点图中的错误条(x和y)进行颜色映射?如何使用pivot_wider对R中值列中存在重复和多个类的数据集进行整理在使用ListViewSet时,如何对序列化程序MethodField上的序列化程序数据进行排序?如何在不使用笔记本进行内置算法的情况下对s3上的训练数据进行预处理如何在使用python jira模块对jira中的用户进行身份验证时,不断询问用户名和密码直到正确?使用Kafka和Schema注册中心,我对Avro数据进行编码和解码,但是我如何处理下游的GenericRecord数据处理呢?如何使用angular8使表单中的数据根据上一次和下一次单击按钮进行更改
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MADlib——基于SQL数据挖掘解决方案(23)——分类之SVM

用逗号分隔键值优化正则化参数。如果提供了值列表,则将执行交叉验证以从列表中选择最佳值。详见后面的描述。 verbose(可选) BOOLEAN 缺省值为FALSE。是否详细输出训练结果。...可以使用内置交叉验证机制来执行超参数优化,该机制通过为params中参数n_folds分配一个大于1值来激活。注意,如果使用分组,则不支持交叉验证。...使用'{}''[]'在这里都有效。 下面的参数并非都可以进行交叉验证。对于允许交叉验证参数,其默认值以列表格式显示,例如[0.01]。...由于最佳值取决于数据条件数量,因此实践中通常使用内置交叉验证在指数范围中进行搜索,例如,"init_stepsize = [1, 0.1, 0.001]"。...为了减少训练时间,通常在二次采样数据运行交叉验证,因为这通常提供整个数据条件数良好估计。然后可以在整个数据运行生成init_stepsize。

79410

图解大数据 | Spark机器学习(下)—建模与超参调优

而不是独立地调整PipeLine中每个组成部分 [4fa34c7ca37b6cb9264fad121a8b95eb.png] 2)交叉验证训练验证切分 MLlib支持交叉验证 Cross Validator...训练验证分割Train Validation Split 两个模型选择工具。...也就是说,通过交叉验证找到最佳ParamMap,利用此ParamMap在整个训练集可以训练(fit)出一个泛化能力强,误差相对小最佳模型。...交叉验证代价比较高昂,为此Spark也为超参数调优提供了训练-验证切分TrainValidationSplit。 TrainValidationSplit创建单一 (训练, 测试) 数据。...例如,当设置trainRatio=0.75时,TrainValidationSplit将会将数据切分75%作为数据集,25%作为验证集,来生成训练、测试集,并最终使用最好ParamMap完整数据集来拟合评估器

1.1K21
  • 在机器学习中处理大量数据

    在机器学习实践中用法,希望数据学习同学起到抛砖引玉作用。...,并行计算 2)弹性,指节点存储时,既可以使用内存,也可以使用外存 •RDD还有个特性是延迟计算,也就是一个完整RDD运行任务分成两部分:TransformationAction Spark RDD...) 22795 9766 可以看到,训练集测试集安装7:3比例分割了,接下来就是构建模型进行训练。..., numFolds=5) # 交叉验证运行 cv_model = cv.fit(train) # 对于测试数据使用五折交叉验证 predictions = cv_model.transform(test...spark通过封装成pyspark后使用难度降低了很多,而且pysparkML包提供了基本机器学习模型,可以直接使用,模型使用方法sklearn比较相似,因此学习成本较低。

    2.3K30

    机器学习-03-机器学习算法流程

    (6)最后是将学习过程进行保存,便于将来使用,通过这样对应,我们可以发现,机器学习思想并不复杂,仅仅是人类在生活中学习成长一个模拟。 那如何才能实现机器学习模型呢?...# 第二步使用sklearn模型选择 from sklearn import svm svc = svm.SVC(gamma='auto') 本章中我们不会对机器学习算法机理进行讲解,我们希望在本章中学员学会如何将算法模型实例化...如果验证评估实验成功,则在测试集执行最终评估,但是,如果我们将原始数据进行划分为我们所说训练集、验证集、测试集,那么我们可用数据将会大大减少,为了解决这个问题,我们提出了交叉验证这样解决办法...而交叉验证 (Cross validation)优点是所有的样本都被作为了训练集测试集,每个样本都被验证一次。其中10-folder通常被最长使用 上图显示了交叉验证运行过程。...官网 Spark MLlib是Spark常用机器学习算法实现库,同时包括相关测试和数据生成器。Spark设计初衷就是为了支持一些迭代Job, 这正好符合很多机器学习算法特点。

    15410

    SparkML模型选择(超参数调整)与调优

    Spark ML模型选择与调优 本文主要讲解如何使用Spark MLlib工具去调优ML算法Pipelines。内置交叉验证其他工具允许用户优化算法管道中超参数。...Cross-Validation-交叉验证 CrossValidator开始时候会将数据分割成很多测试集训练集对儿。...例子 以下示例演示如何使用CrossValidator从参数网格中进行选择。 请注意,参数网格交叉验证非常耗性能。...在现实设置中,尝试更多参数并且使用更多folds(k=3,k=10是非常常见)。换句话说使用交叉验证代价是非常大。...CrossValidator一样, TrainValidationSplit在最后会使用最佳参数整个数据Estimator进行拟合。

    2.6K50

    《机器学习》学习笔记(四)——用Python代码实现单变量线性回归、多变量线性回归;数据评估之交叉验证法、留出法、自助法

    三、数据评估之交叉验证法、留出法、自助法 1:SVM分类器 2:K近邻分类器 ---- 一、单变量线性回归 提出问题 假设某披萨店披萨价格披萨直径之间有下列数据关系: ?...模型评价 拟合出来判别函数效果如何训练数据贴合度如何数据预测准确度如何? 先给出下列定义: 残差(residuals):判别函数计算结果与实际结果之间差异,如下图中红色线段部分。...在通过训练数据得出了判别函数后,对于新数据如何评估该假设函数表现呢?可以使用与训练数据不同另一组数据(称为检验/测试数据)来进行评估。R方就是用来进行评估一种计算方法。...如果R方较小或为负,说明效果很差 在Python中如何单变量线性回归模型效果进行评估 手动计算 假设hpyTrain代表针对训练数据预测?y值,hpyTest代表针对测试数据预测?...# 交叉验证所需函数(train_test_split对数据训练集做数据分割;cross_val_score做交叉验证;cross_validate也是做交叉验证) from sklearn.model_selection

    2.7K11

    《自然语言处理实战入门》 ---- 笔试、面试题:机器学习基础(51-100)

    分别对这 10 个点进行观察可以发现,每个实例点最近邻都不是当前实例所属类别,因此每次验证都是错误。整体错误率即为 100%。 75. 如果在大型数据训练决策树。...C 负无穷大 答案:C 解析:本题考查SVM Soft-SVM 之间联系彼此转化条件。 Soft-SVM 在原来 SVM 基础增加了分类错误项,如下式: ?...我们想要训练一个 ML 模型,样本数量有 100 万个,特征维度是 5000,面对如此大数据如何有效地训练模型(多选)? A. 训练集随机采样,在随机采样数据建立模型 B....节点中用于分割所需最小样本数用来控制过拟合。过高值可能导致欠拟合,因此,它应该使用交叉验证进行调整。 每个基本树选择样本比例是通过随机抽样来完成。小于1值能够减小方差使模型具有鲁棒性。...下面是交叉验证几种方法: Bootstrap 留一法交叉验证 5 折交叉验证 重复使用两次 5 折交叉验证 请对上面四种方法执行时间进行排序,样本数量为 1000。

    1.8K10

    监督学习6大核心算法精讲与代码实战

    模型评估:使用独立验证数据集评估模型性能。常见评估指标有准确率、精确率、召回率等。 模型优化:根据评估结果模型进行调整优化。 模型部署:将训练好模型应用到实际场景中进行预测。...参数敏感:SVM性能对核函数超参数(如 ( C ) ( \gamma ))较为敏感,需要仔细调参。 难以处理大规模数据集:在大规模数据SVM训练时间较长。...模型训练:使用训练集数据训练模型。 模型预测:使用测试集数据进行预测,并计算模型准确率。 决策边界可视化:通过绘制决策边界和数据点,直观展示SVM分类器效果。...3.1 交叉验证 交叉验证(Cross-Validation)是一种评估模型性能技术,它通过将数据集分成多个子集,并多次训练验证模型来评估模型性能。...K折交叉验证具体步骤如下: 将数据集随机分成K个大小相等子集。 对于每个子集: 将该子集作为验证集,其余子集作为训练集。 训练模型并在验证评估模型性能。 计算所有K次评估平均性能。

    28421

    python中使用scikit-learnpandas决策树进行iris鸢尾花数据分类建模交叉验证

    p=9326 在这篇文章中,我将使用python中决策树(用于分类)。重点将放在基础知识最终决策树理解。 导入 因此,首先我们进行一些导入。...我将使用著名iris数据集,该数据集可对各种不同iris类型进行各种测量。pandassckit-learn都可以轻松导入这些数据,我将使用pandas编写一个从csv文件导入函数。...交叉验证 获取数据 接下来,让我们使用上面设置搜索方法来找到合适参数设置。...在这两种情况下,从96%到96.7%改善都很小。当然,在更复杂问题中,这种影响会更大。最后几点注意事项: 通过交叉验证搜索找到最佳参数设置后,通常使用找到最佳参数所有数据进行训练。...网格搜索确实花费时间太长,这当然是有意义。 此处开发基本交叉验证想法可以应用于许多其他scikit学习模型-随机森林,逻辑回归,SVM等。

    2K00

    机器学习中交叉验证

    因为我们训练模型时,不是直接把数丢进去就好了,而是需要对模型不断进行调整(比如参数),使模型在测试集表现足够好,但是即使模型在测试集效果好,不一定在其他数据效果好,因为这个模型是“专门”针对这个测试集而调整...这样就需要把数据分成三份,一份训练、一份验证、一份测试,先在训练集训练模型,然后验证模型结果,最后再在测试集判断模型真正效果,但是这样做结果就是大幅降低了数据使用率,因训练数据不够多而造成欠拟合...计算交叉验证指标 使用交叉验证最简单方法是在估计器和数据集上调用cross_val_score辅助函数。...下面的例子展示了如何通过分割数据,拟合模型计算连续 5 次分数(每次不同分割)来估计 linear kernel 支持向量机在 iris 数据精度: >>> from sklearn.model_selection...具有 6 个样本数据进行 3-split 时间序列交叉验证示例: >>> from sklearn.model_selection import TimeSeriesSplit >>> X =

    1.9K70

    机器学习面试问题集(2018-3-13更新)

    5.易于通过静态测试来模型进行评测。表示有可能测量该模型可信度。6.在相对短时间内能够大型数据源做出可行且效果良好结果。7.可以对有许多属性数据集构造决策树。...模型训练、诊断、调优 模型诊断中至关重要是判断过拟合、欠拟合,常见方法是绘制学习曲线,交叉验证。...如果采用是对数损失函数进行替代那么就和逻辑回归优化目标几乎相同,这就得到了软间隔SVM与逻辑回归数学上联系,因此一般来说SVM性能逻辑回归性能差不多。 ?...软间隔SVM与逻辑回归区别 逻辑回归通过输出预测概率后根据阈值进行判断类别,SVM则直接输出分割超平面,然后使用0/1函数距离进行分类,不能直接输出概率值,如果需要SVM输出概率值则需要进行特殊处理...逻辑回归可以使用多阈值然后进行多分类,SVM则需要进行推广。 SVM在训练过程只需要支持向量,依赖训练样本数较小,而逻辑回归则是需要全部训练样本数据,在训练时开销更大。

    84940

    Spark 模型选择调参

    pipeline,内置交叉验证其他工具允许用户优化模型pipeline中超参数; 目录: 模型选择,也就是调参; 交叉验证; 训练集、验证集划分; 模型选择(调参) 机器学习一个重要工作就是模型选择...,或者说根据给定任务使用数据来发现最优模型参数,也叫做调试,既可以针对单个模型进行调试,也可以针对整个pipeline各个环节进行调试,使用者可以一次整个pipeline进行调试而不是每次一个pipeline...列表:用于搜索参数空间; Evaluator:衡量模型在集外测试集上表现方法; 这些工具工作方式如下: 分割数据到训练集测试集; 每一组训练&测试数据,应用所有参数空间中可选参数组合: 每一组参数组合...,使用其设置到算法,得到对应model,并验证该model性能; 选择得到最好性能模型使用参数组合; Evaluator针对回归问题可以是RegressionEvaluator,针对二分数据可以是...; 确认了最佳参数后,CrossValidator最终会使用全部数据最佳参数组合来重新训练预测; 例子:通过交叉验证进行模型选择; 注意:交叉验证在整个参数网格是十分耗时,下面的例子中,参数网格中

    96153

    pycaret之训练模型(创建模型、比较模型、微调模型)

    1、比较模型 这是我们建议在任何受监管实验工作流程中第一步。此功能使用默认超参数训练模型库中所有模型,并使用交叉验证评估性能指标。它返回经过训练模型对象。...对于受监督模块(分类回归),此函数将返回一个表,该表具有k倍交叉验证性能指标以及训练有素模型对象。...对于有监督学习,此函数将返回一个表,该表包含k倍通用评估指标的交叉验证分数以及训练有素模型对象。对于无监督学习,此函数仅返回经过训练模型对象。...默认情况下,所有指标均四舍五入到4位小数,可以使用round参数进行更改。 PyCaret中音调模型功能是预定义搜索空间进行随机网格搜索,因此它依赖于搜索空间迭代次数。...默认情况下,此函数在搜索空间执行10次随机迭代,可以使用tune_model中n_iter参数进行更改。增加n_iter参数可能会增加训练时间,但通常会导致高度优化模型。

    2.2K10

    机器学习-12-sklearn案例01-初级

    最后,在预测时候,也要对数据做同样标准化处理,即也要用上面的scaler中均值方差来预测时候特征进行标准化。...3,为什么使用交叉验证交叉验证用于评估模型预测性能,尤其是训练好模型在新数据表现,可以在一定程序熵减少过拟合。...不过如果只做一次分割,它对训练集,验证测试机样本比例,还有分割数据分布是否原始数据分布相同等因素比较敏感,不同划分会得到不同最优模型,,而且分成三个集合后,用于训练数据更少了。...2,k 折交叉验证(k-fold cross validation) K折交叉验证通过k个不同分组训练结果进行平均来减少方差,因此模型性能对数据划分就不那么敏感。...Cross Validation:进行多次train_test_split划分;每次划分时,在不同数据集上进行训练,测试评估,从而得到一个评价结果;如果是5折交叉验证,意思就是在原始数据进行五次划分

    20400

    数据分享|Python、Spark SQL、MapReduce决策树、回归车祸发生率影响因素可视化分析

    其中有用列信息包括:日期、地区、严重程度、道路方向、温度、湿度、压强、能见度、风速等13列。 因为数据集过大,因此采用SparkSpark SQL)MapReduce等进行数据清洗筛选。...点击标题查阅往期内容 数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC 左右滑动查看更多 01 02 03 04 因素分析...分类树 我尝试通过分类树利用上述特征来车祸严重程度进行分类预测,并得到对分类模型最有帮助特征。 尝试了3、45交叉验证来确定最佳标准最大深度。...从下面的结果可以看出,对于该训练集,最佳准则是gini准则,树最大深度最佳值是6。然后用这个模型测试集进行预测。实际,预测结果并不是很好。...scikit-learnpandas决策树进行iris鸢尾花数据分类建模交叉验证 R语言里非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析 R语言用标准最小二乘OLS,广义相加模型

    23820

    【Python深度学习之路】-2.1 机器学习流程

    训练数据:学习过程中使用数据。 测试数据:在学习完成之后,模型精读进行评估时所使用数据。...) print("y_test :",y_test.shape) k折交叉验证使用无放回抽样,将训练数据分割为k个子集,将其中k-1个子集数据作为学习数据使用,将剩下1个子集数据用于模型测试一种方法...因此需要进行重复k次学习评估,得到k个性能评估数据取平均值,从而计算出模型平均性能。特殊包括留一交叉验证,意指使用除某一行以外所有数据进行学习,主要是处理非常小数据。...(交叉验证优点是允许我们充分地利用手头数据最大限度地模型性能进行评估。)...() X = iris.data y = iris.target # 使用机器学习算法SVM svc = svm.SVC(C=1,kernel="rbf",gamma = 0.001) # 通过交叉验证计算得分

    45720

    Scikit-learn 秘籍 第四章 使用 scikit-learn 对数据分类

    基尼系数都有优缺点。也就是说,如果你观察它们工作方式主要差异,这可能是个重新验证假设好方式。 4.2 调整决策树模型 如果我们仅仅使用基本决策树实现,可能拟合得不是很好。...., 1, 1, 1]) 4.5 使用支持向量机对数据分类 支持向量机(SVM)是我们使用技巧之一,它不能轻易用概率解释。SVM 背后原理是,我们寻找一个平面,,它将数据分割为组,并且是最优。...更多 随让我们可能不能获得更好线性 SVM,Scikit 中 SVC 分类器会使用径向基函数。我们之前看过这个函数,但是让我们观察它如何计算我们刚刚拟合数据决策边界。...工作原理 我们在上一个秘籍中提到过,我们本质在这里比较可能性。所以,如何比较可能性呢?让我们使用价格来尝试is_higher分类。 我们假设收盘价服从对数正态分布。...作为下一章前瞻,我们使用内建交叉验证方法: >>> from sklearn import cross_validation as cv >>> import scipy.stats as sp >

    35900

    【机器学习】集成模型集成学习:多个模型相结合实现更好预测

    ,并组合基分类器输出 使用交叉验证来减少偏置 Level-0:基分类器 给定一个数据集 ( X , y ) 可以是SVM, Naive Bayes, DT等 Level-1:集成分类器...SVM支持向量机、DT决策树、KNN近邻、LR逻辑回归等封装好模型,支持对数据进行交叉验证以调参。...开始训练数据进行机器学习', datetime.now()) #设置k折交叉验证参数。...-【开始】########################### #进行交叉验证,并不同模型表现打分 #(由于是交叉验证,将使用不同数据同一模型进行评分,故每个模型对应一个得分序列。...交叉验证训练过程结束后,将得到模型参数配置。使用得出参数配置下,在全体训练数据进行验证验证模型全体训练数据重构误差。

    9.8K60

    从组学数据进行机器学习

    本章提供了一个如何使用ML组学数据进行典型分析指南。...表1详细列出了其余超参数范围最终值:标准化方法、特征数量正则化参数。当然,超参数搜索只在训练集上进行。我使用了五次重复五倍交叉验证法来估计一组超参数性能。...当然,这种逻辑也延伸到了超参数搜索内部交叉验证。 因此,研究重复了完整例子,验证集采用基于化合物分割超参数搜索采用五倍交叉验证分割方式。...为了检查这种行为是否也发生在原始DNN模型,研究进行了相同分割训练。为了得到一个训练好模型,研究不得不禁用早期停止,因为验证F1分数总是不确定。因此,最终模型性能非常低。...总之,我们看到了数据探索如何指导建模决策,模型定义哪些方面是重要,模型验证陷阱在哪里,以及如何训练分析最终基于组学模型。

    78320

    如何让机器像人一样多角度思考?协同训练来帮你

    在实验中,作者GA-SVM模型,PSO-SVM模型,Self-GA模型(使用GA-SVM选择参数),Self-PSO模型(使用PSO-SVM选择参数)半监督协同回归模型(Semi-SVM)即本论文提出算法进行对比...将h2与h3分类结果一致无标记数据进行标注,并加入h1训练集,其余类推。该算法使用分类器投票即少数服从多数标签置信度进行了隐式估计,避免了使用更加耗时十倍交叉验证思想。...3.3.2 显式评估 最早显示估计方法是当两个充分冗余属性子集不存在时,在每次训练迭代中使用十折交叉验证(Ten-fold Cross Validation)来估计未标记数据置信度。...Tumor数据验证了所提出方法有效性。...因此,如何现有算法进行优化减轻其计算量也是一个研究方向。3)对于协同训练算法使用无标记数据与有标记数据比例需进一步探究。4)对于机器学习中回归任务,由于其输出是连续值,标签置信度较难评估。

    1.2K30
    领券