版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据仓库与数据挖掘第3章数据预处理本章内容数据预处理的必要性数据清洗数据集成数据标准化数据规约数据变换与离散化利用sklearn进行数据预处理30五月20242低质量的数据导致低质量的数据挖掘结果数据是数据挖掘的目标对象和原始资源,对数据挖掘最终结果起着决定性的作用。现实世界中的数据是多种多样的,具有不同的特征,这就要求数据的存储采用合适的数据类型,并且数据挖掘算法的适用性会受到具体的数据类型限制。第3章数据预处理1.数据预处理的必要性现实世界中的数据大多都是“脏”的,原始数据通常存在着噪声、不一致、部分数据缺失等问题。数据的不一致各应用系统的数据缺乏统一的标准和定义,数据结构有较大的差异2.噪声数据收集数据时很难得到精确的数据,如数据采集设备故障、数据传输过程中会出现错误或存储介质可能出现的损坏等情况3.缺失值系统设计时可能存在的缺陷或者在系统使用过程中人为因素的影响30五月202441.数据预处理的必要性数据质量要求数据挖掘需要的数据必须是高质量的数据,即数据挖掘所处理的数据必须具有准确性(Correctness)、完整性(Completeness)和一致性(Consistency)等性质。此外,时效性(Timeliness)、可信性(Believability)和可解释性(Interpretability)也会影响数据的质量。30五月202452.数据清洗现实世界中的数据一般是不完整的、有噪声和不一致的“脏”数据,数据清理试图填充缺失的数据值、光滑噪声、识别离群点并纠正数据中的不一致。数据并不总是完整的引起空缺值的原因设备故障和其他数据不一致可能被删除数据没有被录入-------Missingdata需要经过推断而补上30五月202462.数据清洗数据清洗方法1.缺失值的处理(1)忽略元组(2)人工填写缺失值(3)使用一个全局常量填充缺失值(4)使用属性的中心度量(如均值或中位数)填充缺失值(5)使用与给定元组属同一类的所有样本的属性均值或中位数(6)使用最可能的值填充缺失值30五月202472.数据清洗2.噪声数据的处理噪声(Noise)是被测量的变量的随机误差或方差。噪声的处理方法一般有分箱、回归和离群点分析等方法。(1)分箱(2)回归(3)离群点分析利用Pandas进行数据清洗30五月202482.数据清洗In[1]:string_data=pd.Series(['aardvark','artichoke',np.nan,'avocado'])print(string_data)string_data.isnull()5/30/2024(1)缺失值的检测与统计函数isnull()可以直接判断该列中的哪个数据为NaN。【例4-1】利用isnull检测缺失值。利用isnull().sum()统计缺失值。2.数据清洗通过info方法,也可以查看DataFrame每列数据的缺失情况。【例4-4】用info方法查看DataFrame的缺失值。5/30/2024In[4]:()Out[4]:<class'pandas.core.frame.DataFrame'>RangeIndex:3entries,0to2Datacolumns(total5columns):A2non-nullfloat64B2non-nullfloat64C2non-nullfloat64D2non-nullfloat6430non-nullfloat64dtypes:float64(5)memoryusage:200.0bytes2.数据清洗缺失值的处理(1)删除缺失值在缺失值的处理方法中,删除缺失值是常用的方法之一。通过dropna方法可以删除具有缺失值的行。dropna方法的格式:dropna(axis=0,how=‘any’,thresh=None,subset=None,inplace=False)5/30/20242.数据清洗(2)填充缺失值缺失值所在的特征为数值型时,通常利用其均值、中位数和众数等描述其集中趋势的统计量来填充;缺失值所在特征为类别型数据时,则选择众数来填充。Pandas库中提供了缺失值替换的方法fillna。fillna的格式如下:pandas.DataFrame.fillna(value=None,method=None,asxi=None,inplace=False,limit=None)5/30/20242.数据清洗通过字典形式填充缺失值。5/30/2024In[11]:df=pd.DataFrame(np.random.randn(5,3))df.loc[:3,1]=NAdf.loc[:2,2]=NAprint(df)df.fillna({1:0.88,2:0.66})2.数据清洗数据值替换数据值替换是将查询到的数据替换为指定数据。在Pandas中通过replace进行数据值的替换。5/30/2024In[15]:data={'姓名':['张三','小明','马芳','国志'],'性别':['0','1','0','1'],
'籍贯':['北京','甘肃','','上海']}df=pd.DataFrame(data)df=df.replace('','不详')print(df)2.数据清洗在数据分析中,经常需要进行数据的映射或转换,在Pandas中可以自定义函数,然后通过map方法实现。5/30/20242.数据清洗3.数据异常值检测异常值是指数据中存在的数值明显偏离其余数据的值。异常值的存在会严重干扰数据分析的结果,因此经常要检验数据中是否有输入错误或含有不合理的数据。在利用简单的数据统计方法中一般常用散点图、箱线图和3σ法则。30五月2024162.数据清洗3.数据异常值检测1)散点图方法:30五月2024172.数据清洗3.数据异常值检测2)盒图:利用箱线图进行异常值检测时,根据经验,将最大(最小)值设置为与四分位数值间距为1.5个IQR(IQR=Q3-Q1)的值,即min=Q1-1.5IQR,max=Q3+1.5IQR,小于min和大于max的值被认为是异常值。30五月2024183.数据集成3.数据异常值检测3)3σ法则:若数据服从正态分布,在3σ原则下,异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值,因为在正态分布的假设下,距离平均值3σ之外的值出现的概率小于0.003。因此根据小概率事件,可以认为超出3σ之外的值为异常数据。30五月2024193.数据集成数据集成是将多个数据源中的数据合并,存放于一个一致的数据存储中。数据集成过程中的关键问题1.实体识别2.数据冗余和相关分析3.元组重复4.数据值冲突检测与处理30五月2024203.数据集成数据集成过程中的关键问题1.实体识别实体识别问题是数据集成中的首要问题,因为来自多个信息源的现实世界的等价实体才能匹配。如数据集成中如何判断一个数据库中的customer_id和另一数据库中的cust_no是指相同的属性?30五月2024213.数据集成数据集成过程中的关键问题2.数据冗余和相关分析冗余是数据集成的另一重要问题。如果一个属性能由另一个或另一组属性值“推导”出,则这个属性可能是冗余的。属性命名不一致也会导致结果数据集中的冗余。30五月2024223.数据集成数据集成过程中的关键问题2.数据冗余和相关分析30五月202423(1)标称数据的
相关检验(2)数值数据的相关系数(3)数值数据的协方差3.数据集成30五月2024243.数据集成数据集成过程中的关键问题3.元组重复除了检查属性的冗余之外,还要检测重复的元组,如给定唯一的数据实体,存在两个或多个相同的元组。利用Pandas.DataFrame.duplicates方法检测重复的数据利用Pandas.DataFrame.drop_duplicates方法删除重复的数据30五月2024253.数据集成数据集成过程中的关键问题4.数据值冲突检测与处理数据集成还涉及数据值冲突的检测与处理。例如不同学校的学生交换信息时,由于不同学校有各自的课程计划和评分方案,同一门课的成绩所采取的评分分数也有可能不同,如十分制或百分制。30五月2024263.数据集成2.利用Pandas合并数据在实际的数据分析中,可能有不同的数据来源,因此,需要对数据进行合并处理。(1)merge数据合并(2)concat数据连接(3)combine_first合并数据30五月2024273.数据集成与SQL中的join用法类似,Pandas中的数据合并merge()函数格式如下:merge(left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=('_x','_y'),copy=True,indicator=False,validate=None)5/30/20243.数据集成5/30/20244.数据标准化数据标准化(DataStandardization)一直是一项重要的处理流程。一般将数据标准化放在预处理过程中,作为一项通用技术而存在。不同特征之间往往具有不同的量纲,由此造成数值间的差异很大。因此为了消除特征之间量纲和取值范围的差异可能会造成的影响,需要对数据进行标准化处理。机器学习中有部分模型是基于距离度量进行模型预测和分类的。由于距离对特征之间不同取值范围非常敏感,所以基于距离读量的模型是十分有必要做数据标准化处理的。30五月2024304.数据标准化另一方面,在原始特征下,因尺度差异,其损失函数的等高线图可能是椭圆形,梯度方向垂直于等高线,下降会走zigzag路线,而不是指向局部最小值。通过对特征进行变换后,其损失函数的等高线图更接近圆形,梯度下降的方向震荡更小,收敛更快。如下图所示,图片来自AndrewNg。30五月2024314.数据标准化离差标准化数据离差标准化是对原始数据所做的一种线性变换,将原始数据的数值映射到[0,1]区间。消除大单位和小单位的影响(消除量纲)变异大小的差异影响;30五月2024324.数据标准化标准差标准化数据标准差标准化又称零均值标准化或z分数标准化,是当前使用最广泛的数据标准化方法。经过该方法处理的数据均值为0,标准化为1。消除单位影响及自身变量的差异。30五月202433图片来自Hung-yiLeepdf-GradientDescent4.数据标准化标准差标准化数据30五月2024344.数据标准化数据归一化/标准化的目的是为了获得某种“无关性”,如偏置无关、尺度无关、长度无关等。当归一化/标准化方法背后的物理意义和几何含义与当前问题的需要相契合时,则会对解决该问题有正向作用,反之,会起反作用。因此,如何选择标准化方法取决于待解决的问题。一般来说,涉及或隐含距离计算以及损失函数中含有正则项的算法,比如K-means、KNN、PCA、SVM等,需要进行数据标准化,距离计算无关的概率模型和树模型,如朴素贝叶斯、决策树和随机森林等,则不需要进行数据标准化。5/30/20245.数据归约
数据归约(DataReduction)用于在尽可能保持数据完整性的基础上得到数据的归约表示。也就是说,在归约后的数据集上挖掘将更有效,而且仍会产生相同或相似的分析结果。数据归约包括维归约、数量归约和数据压缩。30五月2024365.数据规约
维归约的思路是减少所考虑的随机变量或属性的个数,用的方法有属性子集选择、小波变换和主成分分析。属性子集选择是一种维归约方法,其中不相关、弱相关或冗余的属性或维被检测或删除。而后两种方法是原始数据变换或投影到较小的空间。30五月2024375.数据规约
维归约1.属性子集选择属性子集选择通过删除不相关或者冗余属性(或维)减少数据量。(1)逐步向前选择由空属性集作为规约集的起始,迭代确定原属性集中最好的属性并添加到规约集中。(2)逐步向后删除由整个属性集开始,在每次迭代中删除尚在属性集中最差的属性。30五月2024385.数据规约-维归约
维归约1.属性子集选择(3)逐步向前选择和逐步向后删除的组合每一步选择一个最好的属性,并在属性中删除一个最差的属性。(4)决策树归纳由给定的数据构造决策树,不出现在树中的所有属性假定是不相关的,出现在树中的属性形成规约后的属性子集。这些方法的约束条件可以不同,可以使用一个度量阈值决定何时终止属性选择过程。30五月2024395.数据规约-维归约
傅里叶变换-理解傅里叶变换,需要理解两个核心概念:时域:时间和振幅的关系图,横坐标是时间,纵坐标是振幅。频域:频率和振幅的关系图,横坐标是频率,纵坐标是振幅。任何「周期(T)「函数,都可以使用」傅立叶级数展开法」将它们分解为有限或无限个不同「频率」不同「振幅」的正弦函数的叠加。傅里叶级数展开公式如下:如果把函数看成离散点构成的向量,那么就是这些正弦函数「基向量」的线性组合。30五月2024405.数据规约-维归约
傅里叶变换30五月2024415.数据归约-维归约
小波变换小波变换是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具。30五月2024425.数据归约-维归约
5/30/20245.数据归约-维归约
主成分分析主成分分析(PrincipalComponentAnalysis,PCA)又称Karhunen-Loeve或K-L方法,用于搜索k个最能代表数据的n维正交向量,是最常用的一种降维方法。PCA通常用于高维数据集的探索与可视化,还可以用作数据压缩和预处理等,在数据压缩消除冗余和数据噪音消除等领域也有广泛的应用。PCA的主要目的是找出数据里最主要的方面代替原始数据。30五月2024445.数据归约-维归约
主成分分析例如某个淘宝店2012年全年的流量及交易情况可以看成一组记录的集合,其中每一天的数据是一条记录,格式如下:
(日期,浏览量,访客数,下单数,成交数,成交金额)从经验我们可以知道,“浏览量”和“访客数”往往具有较强的相关关系,而“下单数”和“成交数”也具有较强的相关关系。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。30五月2024455.数据归约-维归约
在n维线性空间中,任意n个线性无关的向量都可以作为线性空间的基,即空间的基不唯一。多不同的基,同一个向量的标准一般是不同的。PCA本质上是将方差最大的方向作为主要特征,并且在各个正交方向上将数据“离相关”,也就是让它们在不同正交方向上没有相关性。PCA是一种无参数技术,也就是说面对同样的数据,如果不考虑清洗,谁来做结果都一样,没有主观参数的介入,所以PCA便于通用实现,但是本身无法个性化的优化。5/30/20245/30/20241)将原始数据按列组成n行m列矩阵X2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值3)求出协方差矩阵
4)求出协方差矩阵的特征值及对应的特征向量5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P6)Y=PX即为降维到k维后的数据输入:m条n维数据输出:m条k维数据5.数据归约-维归约
主成分分析30五月2024485.数据归约-维归约
5/30/2024示例:有数据因为这个矩阵的每行已经是零均值,这里我们直接求协方差矩阵:然后求其特征值和特征向量。求解后特征值为:其对应的特征向量分别是:标准化后的特征向量为:因此我们的矩阵P是:用P的第一行乘以数据矩阵,就得到了降维后的表示:5.数据归约-维归约
数据降维投影结果如图:5/30/20245.数据归约-维归约
主成分分析Sklearn实现鸢尾花数据的
降维,将原来的4维降为2维P-12030五月202451importmatplotlib.pyplotaspltfromsklearn.decompositionimportPCAfromsklearn.datasetsimportload_irisdata=load_iris()y=data.targetx=data.datapca=PCA(n_components=2)#加载PCA算法,设置降维后主成分数目为2reduced_x=pca.fit_transform(x)#对样本进行降维print(reduced_x)5.数据归约-数量归约
数量归约数量归约(NumerosityReduction)
用替代的、较小的数据表示形式换原始数据。这些技术可以是参数或者非参数的。对于参数方法而言,使用模型估计数据,使得一般只需要存放模型参数而不是实际数据(离群点需存放),如回归和对数-线性模型。存放数据规约表示的非参数方法包括:直方图、聚类、抽样和数据立方体聚类30五月2024521.回归和对数线性模型回归和对数模型可以用来近似给定的数据。2.直方图将直方图中桶的个数由观测值的数量n减少到k个,使数据变成一块一块的呈现。3.聚类聚类后用簇中的代表代替实际数据。5/30/20245.数据归约-数量归约
4.抽样通过选取随机样本子集,实现小数据代表大数据的过程。抽样过程包括简单随机抽样、簇抽样和分层抽样。5.数据立方体聚类数据立方体是将细粒度的属性聚集到粗粒度的属性。5/30/20245.数据归约-数量归约
5.数据归约-数据压缩
数据压缩(DataCompression)
使用变换,一遍得到原始数据的归约或“压缩”表示。如果数据可以在压缩后的数据重构,而不损失信息,则该数据归约被称为无损的。如果是近似重构原数据,称为有损的。基于小波变换的数据压缩是一种非常重要的有损压缩方法。30五月2024556.数据变换和离散化
在数据预处理过程中,不同的数据适合不同的数据挖掘算法。数据变换是一种将原始数据变换成较好数据格式的方法,以便作为数据处理前特定数据挖掘算法的输入。数据离散化是一种数据变换的形式。数据变换的策略:1.光滑2.属性构造3.聚集4.规范化5.离散化6.由标称数据产生概念分层30五月202456数据变换与离散化数据变换的策略1.光滑数据光滑用于去掉数据中的噪声。常用的数据平滑方法有分箱、回归和聚类等方法。2.属性构造属性构造是通过由给定的属性构造新的属性并添加到属性集中,以帮助数据挖掘。3.聚集聚集是对数据进行汇总或聚集。例如,可以聚集日销售数据,计算月和年销售量。通常,聚集用来为多个抽象层的数据分析构造数据立方体。30五月202457数据变换与离散化数据变换的策略4.标准化把属性数据按比例缩放,使之落入一个特定的小区间,如-1.0~1.0。消除特征之间量纲和取值范围的差异可能造成的影响,需要对数据进行标准化处理。30五月202458数据变换与离散化30五月202459数据标准化之后,由于不同维度之间的特征在数值上有一定的比较性,可以有效提高分类器的准确性,而且,会使最优解的寻优过程明显变得平缓,更容易正确收敛到最优解。数据变换与离散化数据变换的策略4.标准化把属性数据按比例缩放,使之落入一个特定的小区间,如-1.0~1.0。(1)最小-最大规范化30五月202460(2)z分数规范化(3)小数定标数据变换与离散化5/30/20244.标准化
需要做数据归一化/标准化的模型:
线性模型,如基于距离度量的模型,包括KNN、K-means聚类、感知机和SVM;另外,线性回归类的几个模型一般情况下也是需要做数据归一化/标准化处理的。
不需要做数据归一化/标准化的模型:决策树,基于决策树的Boosting和Bagging等集成学习模型对于特征取值大小并不敏感,如随机森林,XGBoost,LightGBM等模型,以及朴素贝叶斯,这些模型一般不做数据归一化/标准化处理。数据变换与离散化数据变换的策略5.离散化30五月202462(1)通过分箱离散化分箱是一种基于指定的箱个数的自顶向下的分裂技术。例如使用等宽或等频分箱,然后用箱均值或中位数替换箱中的每个值,可以将属性值离散化。分箱对用户指定的箱个数很敏感,也易受离群点的影响。数据变换与离散化数据变换的策略5.离散化30五月202463(2)通过直方图离散化直方图把属性A的值划分为不相交的区间,称作桶或箱。可以使用各种划分规则定义直方图。如在等宽直方图中,将值分成相等分区或区间。直方图分析算法可以递归地用于每个分区,自动地产生多级概念分层,直到达到一个预先设定的概念层数,过程终止。(3)通过聚类、决策树和相关分析离散化数据变换与离散化6.由标称数据产生概念分层
对于标称数据,概念分层可以基于模式定义以及每个属性的不同值个数产生。使用概念分层变换数据使得较高层的知识模式可以被发现。它允许在多个抽象层进行挖掘。30五月202464Python数据变换与离散化
1.数据规范化数据分析的预处理除了数据清洗、数据合并和标准化之外,还包括数据变换的过程,如类别型数据变换和连续型数据的离散化。30五月202465Python数据变换与离散化2.类别型数据的哑变量处理类别型数据是数据分析中十分常见的特征变量,但是在进行建模时,Python不能像R那样去直接处理非数值型的变量,因此往往需要对这些类别变量进行一系列转换,如哑变量。哑变量(DummyVariables)用以反映质的属性的一个人工变量,是量化了的自变量,通常取值为0或1。Python中利用pandas库中的get_dummies函数对类别型特征进行哑变量处理。30五月202466Python数据变换与离散化2.类别型数据的哑变量处理30五月202467Python数据变换与离散化
3.连续型变量的离散化数据分析和统计的预处理阶段,经常会碰到年龄、消费等连续型数值,而很多模型算法尤其是分类算法都要求数据是离散的,因此要将数值进行离散化分段统计,提高数据区分度。常用的离散化方法主要有等宽法、等频法和聚类分析法。(1)等宽法Pandas提供了cut函数,可以进行连续型数据的等宽离散化。cut函数的基础语法格式为:pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3)30五月202468Python数据变换与离散化5/30/2024Python数据变换与离散化(2)等频法cut函数虽然不能够直接实现等频离散化,但可以通过定义将相同数量的记录放进每个区间。30五月202470Python数据变换与离散化(3)聚类分析法
一维聚类的方法包括两步,首先将连续型数据用聚类算法(如K-Means算法等)进行聚类,然后处理聚类得到的簇,为合并到一个簇的连续型数据做同一标记。
聚类分析的离散化需要用户指定簇的个数,用来决定产生的区间数。30五月2024717.利用sklearn进行数据预处理30五月202472利用sklearn进行数据预处理1.数据标准化、平均去除和方差缩放sklearn.preprocessing.scale(X,axis=0,with_mean=True,with_std=True,copy=True)例4-41数据的标准化、均值和标准差求解。P-128Preprocessing模块还提供了一个实用程序类StandardScaler。例4-42数据的标准化计算。P-12830五月202473利用sklearn进行数据预处理2.特征缩放另一种标准化是特征缩放,使其介于给定的最小最大值之间,通常是0-1之间,或者使每个特征的最大绝对值被缩放当单位大小。(1)一般特征值缩放sklearn.preprocessing.minmax_scale(X,feature_range=(0,1),axis=0,copy=True)min_max_scaler=preprocessing.minmax_scale()X_train_minmax=min_max_scaler.fit_transform(X_train)min_max_scaler.transform(X_test)P-129例4-4330五月202474利用sklearn进行数据预处理2.特征缩放(2)缩放稀疏数据将稀疏数据居中会破坏数据中的稀疏结构,但是缩放稀疏矩阵又是有意义的,特别是当特征处于不同的缩放比例。MaxAbsScaler和maxabs_scale适用于缩放稀疏数据。30五月202475利用sklearn进行数据预处理2.特征缩放(3)带异常值的缩放数据如果您的数据包含许多异常值,则使用数据的平均值和方差进行缩放可能不会很好地工作。30五月202476利用sklearn进行数据预处理3.非线性变换非线性变换有分位数转换和幂转换。分位数变换和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灯光设计师的工作总结
- 机械行业安全操作培训
- 超高清视频技术发展趋势
- 广东省深圳市南山区2023-2024学年六年级上学期英语期末试卷
- 财务工作一年绩效总结
- 《深部钻探论坛厦门》课件
- 《花瓣的哲学》课件
- 《执行力密码》课件
- 2023年广东省韶关市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2021年湖南省常德市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2024年包头职业技术学院单招职业适应性测试题库及答案1套
- 教科版小学科学四年级上册期末检测试卷及答案(共三套)
- 人教部编版八年级数学上册期末考试卷及答案一
- 养老机构安全管理培训课件
- (附答案)2024公需课《百县千镇万村高质量发展工程与城乡区域协调发展》试题广东公需科
- 安徽省芜湖市2023-2024学年高一上学期1月期末英语试题
- 有门摄影课智慧树知到期末考试答案2024年
- 临床试验观察表(CRF)
- (正式版)JBT 11880.13-2024 柴油机 选择性催化还原(SCR)系统 第13部分:催化剂分子筛
- 2024年江苏宿迁永泽福寿园殡葬服务有限公司招聘笔试参考题库含答案解析
- 铁路职业规划
评论
0/150
提交评论