《機(jī)器學(xué)習(xí)-Python實(shí)戰(zhàn)(微課版)》課件 夏林中 第9-12章 AdaBoost -神經(jīng)網(wǎng)絡(luò) 綜合案例_第1頁
《機(jī)器學(xué)習(xí)-Python實(shí)戰(zhàn)(微課版)》課件 夏林中 第9-12章 AdaBoost -神經(jīng)網(wǎng)絡(luò) 綜合案例_第2頁
《機(jī)器學(xué)習(xí)-Python實(shí)戰(zhàn)(微課版)》課件 夏林中 第9-12章 AdaBoost -神經(jīng)網(wǎng)絡(luò) 綜合案例_第3頁
《機(jī)器學(xué)習(xí)-Python實(shí)戰(zhàn)(微課版)》課件 夏林中 第9-12章 AdaBoost -神經(jīng)網(wǎng)絡(luò) 綜合案例_第4頁
《機(jī)器學(xué)習(xí)-Python實(shí)戰(zhàn)(微課版)》課件 夏林中 第9-12章 AdaBoost -神經(jīng)網(wǎng)絡(luò) 綜合案例_第5頁
已閱讀5頁,還剩340頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第九章AdaBoost

學(xué)習(xí)目標(biāo)通過本章學(xué)習(xí)可以:掌握Boosting算法的思想掌握AdaBoost算法的基本原理掌握AdaBoost的scikit-learn應(yīng)用方法BoostingAdaBoost原理AdaBoost的scikit-learn實(shí)現(xiàn)應(yīng)用案例集成學(xué)習(xí)通過將多個(gè)單個(gè)學(xué)習(xí)器集成/組合在一起,使它們共同完成學(xué)習(xí)任務(wù),以達(dá)到提高預(yù)測(cè)準(zhǔn)確率的目的。Bagging:核心思想是對(duì)訓(xùn)練集進(jìn)行有放回地抽取,從而為每一個(gè)基本分類器都構(gòu)造出一個(gè)同樣大小但各不相同的的訓(xùn)練集,從而訓(xùn)練出不同的基分類器。代表算法是隨機(jī)森林。Boosting:是一種可以用來減小監(jiān)督學(xué)習(xí)中偏差的機(jī)器學(xué)習(xí)算法。在分類問題中,它通過改變訓(xùn)練樣本的權(quán)重,學(xué)習(xí)多個(gè)分類器,并將這些分類器進(jìn)行線性組合,提升分類的性能。代表算法有Adaboost和GradientBoostingTree(GBDT)。回顧:集成學(xué)習(xí)Boosting的主要作用跟bagging類似也是一種把若干個(gè)基分類器整合為一個(gè)分類器的方法。Boosting是一個(gè)順序過程,每個(gè)后續(xù)模型都會(huì)嘗試糾正先前模型的錯(cuò)誤,后續(xù)的模型依賴于之前的模型。Boosting的基本思想先從初始訓(xùn)練集訓(xùn)練出一個(gè)基學(xué)習(xí)器,再根據(jù)基學(xué)習(xí)器的表現(xiàn)對(duì)訓(xùn)練樣本分布進(jìn)行調(diào)整,使得先前基學(xué)習(xí)器做錯(cuò)的訓(xùn)練樣本在后續(xù)受到更多的關(guān)注,然后基于調(diào)整后的樣本分布來訓(xùn)練下一個(gè)基學(xué)習(xí)器;如此重復(fù)進(jìn)行,直至基學(xué)習(xí)器數(shù)目達(dá)到事先指定的值T,最終將這T個(gè)基學(xué)習(xí)器進(jìn)行加權(quán)結(jié)合。Boosting的工作機(jī)制樣本權(quán)重分類器權(quán)重優(yōu)化學(xué)習(xí)器修正樣本權(quán)重Boosting是一個(gè)迭代的過程,通過改變訓(xùn)練樣本的分布,使得基分類器聚焦在那些很難分的樣本上。不像bagging,Boosting給每一個(gè)訓(xùn)練樣本賦予一個(gè)權(quán)值,而且可以在每一輪提升過程結(jié)束時(shí)自動(dòng)地調(diào)整權(quán)值。Boosting結(jié)合了很多弱學(xué)習(xí)器來形成一個(gè)強(qiáng)學(xué)習(xí)器,單個(gè)模型表現(xiàn)不佳,但它們?cè)跀?shù)據(jù)集的某些部分表現(xiàn)很好。因此,每個(gè)模型實(shí)際上提升了集成的整體性能。訓(xùn)練樣本的權(quán)值可以用于以下方面:可以用作抽樣分布,從原始數(shù)據(jù)集中提取出自主樣本集?;鶎W(xué)習(xí)器可以使用權(quán)值學(xué)習(xí)有利于高權(quán)值樣本的模型。Boosting提升的理解偏差-方差Boosting:降低偏差。Bagging:降低方差。樣本選擇:Boosting:每一輪的訓(xùn)練集不變,只是訓(xùn)練集中每個(gè)樣本的權(quán)重發(fā)生變化,權(quán)值根據(jù)上一輪的預(yù)測(cè)結(jié)果進(jìn)行調(diào)整。Bagging:訓(xùn)練集是在原始集中有放回抽取的,從原始集中選出的訓(xùn)練集之間是獨(dú)立的。樣本權(quán)重:Boosting:根據(jù)錯(cuò)誤率不斷調(diào)整樣本的權(quán)值,錯(cuò)誤率越大則權(quán)值越大。Bagging:每個(gè)樣本的權(quán)重相等。Bagging與Boosting區(qū)別(1)基學(xué)習(xí)器權(quán)重:Boosting:每個(gè)弱學(xué)習(xí)器都有相應(yīng)的權(quán)重,對(duì)于誤差小的學(xué)習(xí)器會(huì)有更大的權(quán)重。Bagging:弱學(xué)習(xí)器的權(quán)重可以相等也可以賦予權(quán)重。串、并行計(jì)算:Boosting:串行,各個(gè)及學(xué)習(xí)器順序生成,因?yàn)楹笠粋€(gè)模型參數(shù)依賴于前一輪模型的預(yù)測(cè)結(jié)果。Bagging:各個(gè)學(xué)習(xí)器可以并行生成。Bagging與Boosting區(qū)別(2)BoostingAdaBoost原理AdaBoost的scikit-learn實(shí)現(xiàn)應(yīng)用案例Boosting族算法最著名的代表是AdaBoost[FreundandSchapire,1997]。AdaBoost:AdaptiveBoosting,自適應(yīng)提升。Adaboost采用迭代的思想,繼承了Boosting算法,每次迭代只訓(xùn)練一個(gè)弱學(xué)習(xí)器,訓(xùn)練好的弱學(xué)習(xí)器將參與下一次迭代。也就是說,在第N次迭代中,一共有N個(gè)弱學(xué)習(xí)器,其中N-1個(gè)是以前訓(xùn)練好的,其各種參數(shù)都不會(huì)改變,本次訓(xùn)練第N個(gè)學(xué)習(xí)器。其中弱學(xué)習(xí)器的關(guān)系是第N個(gè)弱學(xué)習(xí)器更可能分對(duì)前N-1個(gè)弱學(xué)習(xí)器沒分對(duì)的數(shù)據(jù),最終分類輸出要看這N個(gè)分類器的綜合效果。AdaBoost1.如何改變訓(xùn)練樣本分布?2.采用什么樣的結(jié)合策略來將基學(xué)習(xí)器結(jié)合成一個(gè)強(qiáng)學(xué)習(xí)器?針對(duì)第一個(gè)問題,AdaBoost提高那些被前一輪基學(xué)習(xí)器錯(cuò)誤分類的樣本的權(quán)值,降低那些被正確分類的樣本的權(quán)值;針對(duì)第二個(gè)問題,AdaBoost對(duì)所有基學(xué)習(xí)器采用加權(quán)結(jié)合,增大分類誤差小的基學(xué)習(xí)器的權(quán)值,減少分類錯(cuò)誤率大的基學(xué)習(xí)器的權(quán)值。AdaBoost的兩個(gè)關(guān)鍵問題

二分類算法原理(1)

二分類算法原理(2)

二分類算法原理(3)

直接將Adaboost算法應(yīng)用于多類分類問題往往不能得到令人滿意的結(jié)果。針對(duì)這個(gè)問題,ZhuJi等人在2009年提出了SAMME及SAMME.R算法,這也是sklearn中用Adaboost做多類分類問題時(shí)采用的算法。兩者的主要區(qū)別是弱學(xué)習(xí)器權(quán)重的度量。SAMME是二分類Adaboost算法的擴(kuò)展,即用對(duì)樣本集分類效果作為弱學(xué)習(xí)器權(quán)重,而SAMME.R使用了對(duì)樣本集分類的預(yù)測(cè)概率大小來作為弱學(xué)習(xí)器權(quán)重。由于SAMME.R使用了概率度量的連續(xù)值,迭代一般比SAMME快,因此AdaBoostClassifier的默認(rèn)算法algorithm的值也是SAMME.R。多分類問題

SAMME算法原理

SAMME.R算法原理SAMME.R使用概率估計(jì)來更新增加模型,而SAMME只使用分類。SAMME.R算法通常比SAMME更快地收斂,通過更少的提升迭代實(shí)現(xiàn)較低的測(cè)試誤差。每一次提升迭代后,測(cè)試集上各算法的誤差顯示左側(cè)圖,每一棵樹的測(cè)試集上的分類誤差顯示在中間,每一棵樹的boost權(quán)重顯示為右側(cè)圖。在SAMME.R算法中,所有樹的權(quán)重都是1,因此沒有顯示。SAMME和SAMME.R對(duì)比

回歸算法原理(1)

回歸算法原理(2)

回歸算法原理(3)

回歸算法原理(4)

優(yōu)點(diǎn):Adaboost是一種有很高精度的分類器可以使用各種方法構(gòu)建弱學(xué)習(xí)器分類器弱學(xué)習(xí)器構(gòu)造比較簡(jiǎn)單不用做特征篩選泛化能力好,不用擔(dān)心overfitting(過擬合)缺點(diǎn):容易受到噪聲干擾訓(xùn)練時(shí)間長(zhǎng)執(zhí)行效果依賴于弱學(xué)習(xí)器的選擇AdaBoost優(yōu)缺點(diǎn)BoostingAdaBoost原理AdaBoost的scikit-learn實(shí)現(xiàn)應(yīng)用案例類庫介紹:AdaBoostClassifier用于分類,AdaBoostRegressor用于回歸。AdaBoostClassifier使用了兩種Adaboost分類算法的實(shí)現(xiàn),SAMME和SAMME.R。而AdaBoostRegressor則使用了Adaboost.R2(和前面原理一致)。Adaboost調(diào)參:主要從兩方面進(jìn)行調(diào)參,一是對(duì)Adaboost的框架進(jìn)行調(diào)參,二是對(duì)選擇的弱分類器進(jìn)行調(diào)參,兩者相輔相成。AdaBoost的scikit-learn實(shí)現(xiàn)(1)base_estimator:弱分類學(xué)習(xí)器或者弱回歸學(xué)習(xí)器。AdaBoostClassifier默認(rèn)使用CART分類樹DecisionTreeClassifier,而AdaBoostRegressor默認(rèn)使用CART回歸樹DecisionTreeRegressor。(2)algorithm:這個(gè)參數(shù)只有AdaBoostClassifier有。scikit-learn實(shí)現(xiàn)了兩種Adaboost分類算法,SAMME和SAMME.R。兩者的主要區(qū)別是弱學(xué)習(xí)器權(quán)重的度量。AdaBoostClassifier的默認(rèn)算法是SAMME.R。(3)loss:這個(gè)參數(shù)只有AdaBoostRegressor有,Adaboost.R2算法會(huì)用到。有線性‘linear’,平方‘square’和指數(shù)‘exponential’三種選擇,默認(rèn)是線性。框架參數(shù)(1)(4)n_estimators:AdaBoostClassifier和AdaBoostRegressor都有,弱學(xué)習(xí)器的最大迭代次數(shù),或者說最大的弱學(xué)習(xí)器的個(gè)數(shù)。一般來說n_estimators太小,容易欠擬合,n_estimators太大,又容易過擬合,一般選擇一個(gè)適中的數(shù)值。默認(rèn)是50。(5)learning_rate:AdaBoostClassifier和AdaBoostRegressor都有,即每個(gè)弱學(xué)習(xí)器的權(quán)重縮減系數(shù)ν,ν的取值范圍為0<ν≤1,默認(rèn)是1。對(duì)于同樣的訓(xùn)練集擬合效果,較小的ν意味著需要更多的弱學(xué)習(xí)器的迭代次數(shù)。通常我們用步長(zhǎng)和迭代最大次數(shù)一起來決定算法的擬合效果??蚣軈?shù)(2)(1)max_features:劃分時(shí)考慮的最大特征數(shù)。可以使用很多種類型的值,默認(rèn)是“None”,意味著劃分時(shí)考慮所有的特征數(shù)。(2)max_depth:決策樹最大深度。默認(rèn)可以不輸入,此時(shí),決策樹在建立子樹的時(shí)候不會(huì)限制子樹的深度。(3)min_samples_split:內(nèi)部節(jié)點(diǎn)劃分所需最小樣本數(shù)。默認(rèn)是2。這個(gè)值限制了子樹繼續(xù)劃分的條件,如果某節(jié)點(diǎn)的樣本數(shù)少于min_samples_split,則不會(huì)繼續(xù)再嘗試選擇最優(yōu)特征來進(jìn)行劃分。弱學(xué)習(xí)器參數(shù)(1)(4)min_samples_leaf:葉子節(jié)點(diǎn)最少樣本數(shù),默認(rèn)是1。這個(gè)值限制了葉子節(jié)點(diǎn)最少的樣本數(shù),如果某葉子節(jié)點(diǎn)數(shù)目小于樣本數(shù),則會(huì)和兄弟節(jié)點(diǎn)一起被剪枝。(5)min_weight_fraction_leaf:葉子節(jié)點(diǎn)最小的樣本權(quán)重和,默認(rèn)是0,即不考慮權(quán)重問題。這個(gè)值限制了葉子節(jié)點(diǎn)所有樣本權(quán)重和的最小值,如果小于這個(gè)值,則會(huì)和兄弟節(jié)點(diǎn)一起被剪枝。(6)max_leaf_nodes:最大葉子節(jié)點(diǎn)數(shù),默認(rèn)是“None”,即不限制最大的葉子節(jié)點(diǎn)數(shù)。通過限制最大葉子節(jié)點(diǎn)數(shù),可以防止過擬合。弱學(xué)習(xí)器參數(shù)(2)BoostingAdaBoost原理AdaBoost的scikit-learn實(shí)現(xiàn)應(yīng)用案例本小節(jié)基于Boston波士頓房?jī)r(jià)數(shù)據(jù)集利用AdaBoost對(duì)房?jī)r(jià)進(jìn)行預(yù)測(cè)。Boston房?jī)r(jià)預(yù)測(cè)是一個(gè)回歸問題。數(shù)據(jù)集一共包含506個(gè)觀察,13個(gè)輸入變量和1個(gè)輸出變量。每條數(shù)據(jù)包含房屋以及房屋周圍的詳細(xì)信息。其中包含城鎮(zhèn)犯罪率,一氧化氮濃度,住宅平均房間數(shù),到中心區(qū)域的加權(quán)距離以及自住房平均房?jī)r(jià)等等。應(yīng)用案例導(dǎo)入庫準(zhǔn)備數(shù)據(jù)集數(shù)據(jù)準(zhǔn)備fromsklearn.datasetsimportload_bostonfromsklearn.ensembleimportAdaBoostRegressor#下載數(shù)據(jù)集boston=load_boston()#定義feature和labelx=boston.datay=boston.targetprint('Featurecolumnname')print(boston.feature_names)print("Sampledatavolume:%d,numberoffeatures:%d"%x.shape)print("Targetsampledatavolume:%d"%y.shape[0])sns.distplot(tuple(y),kde=False,fit=st.norm)定義模型AdaBoost和DecisionTree,在未調(diào)參的情況下對(duì)比兩者的性能。模型定義和訓(xùn)練#定義模型名稱names=['DecisionTree','AdaBoost']#定義模型models=[DecisionTreeRegressor(),AdaBoostRegressor(n_estimators=30)]#模型訓(xùn)練并返回R2值defR2(model,x_train,x_test,y_train,y_test):model_fitted=model.fit(x_train,y_train)y_pred=model_fitted.predict(x_test)score=r2_score(y_test,y_pred)returnscore#輸出模型測(cè)試結(jié)果forname,modelinzip(names,models):score=R2(model,x_train,x_test,y_train,y_test)print("{}:{:.6f}".format(name,score.mean()))返回結(jié)果:DecisionTree:0.461254AdaBoost:0.657742通過網(wǎng)格搜索的方法選擇較好的框架參數(shù)。網(wǎng)格搜索#網(wǎng)格搜索選擇較好的框架參數(shù)parameters={'n_estimators':[50,60,70,80],'learning_rate':[0.5,0.6,0.7,0.8,0.9],}model=GridSearchCV(AdaBoostRegressor(),param_grid=parameters,cv=3)model.fit(x_train,y_train)#輸出最合適的參數(shù)值print("Optimalparameterlist:",model.best_params_)print("Optimalmodel:",model.best_estimator_)print("OptimalR2value:",model.best_score_)返回結(jié)果:Optimalparameterlist:{'learning_rate':0.6,'n_estimators':80}Optimalmodel:AdaBoostRegressor(learning_rate=0.6,n_estimators=80)OptimalR2value:0.8356690414326865對(duì)通過網(wǎng)格搜索進(jìn)行調(diào)參后的模型的擬合效果進(jìn)行可視化。擬合效果可視化##可視化模型擬合結(jié)果ln_x_test=range(len(x_test))y_predict=model.predict(x_test)plt.figure(figsize=(16,8),facecolor='w')plt.plot(ln_x_test,y_test,'r-',lw=2,label=u'Value')plt.plot(ln_x_test,y_predict,'g-',lw=3,label=u'EstimatedvalueoftheAdaboostalgorithm,$R^2$=%.3f'%(model.best_score_))plt.legend(loc='upperleft')plt.grid(True)plt.title(u"BostonHousingPriceForecast(Adaboost)")plt.xlim(0,101)plt.show()通過本章的學(xué)習(xí)了解Adaboost算法的基本原理和應(yīng)用方式,為后續(xù)的實(shí)際應(yīng)用提供理論和技術(shù)準(zhǔn)備??偨Y(jié)謝謝第十章聚類學(xué)習(xí)目標(biāo)通過本章學(xué)習(xí)可以:掌握K-Means聚類過程和原理。掌握層次聚類的過程和原理。掌握密度聚類的過程和原理。掌握譜聚類的過程和原理。1.無監(jiān)督學(xué)習(xí)2.聚類算法3.

K-Means聚類4.

層次聚類5.密度聚類算法引入我們通常講,物以類聚,人以群分!其實(shí)說的就是要依據(jù)物和人的關(guān)系進(jìn)行區(qū)分。而關(guān)系在實(shí)際應(yīng)用場(chǎng)景下,又分為內(nèi)部相似性和外部關(guān)系。前者是觀察的對(duì)象或物體本身比較相似,劃分為一類,比如橘子和柚子都屬于水果;后者是指兩種物體經(jīng)常同時(shí)出現(xiàn),比如牛奶和面包等。而這些就是我們接下來要學(xué)習(xí)的無監(jiān)督學(xué)習(xí)。無監(jiān)督學(xué)習(xí)概念無監(jiān)督學(xué)習(xí):是指在標(biāo)注的數(shù)據(jù)中,根據(jù)數(shù)據(jù)之間本身的屬性特征和關(guān)聯(lián)性對(duì)數(shù)據(jù)進(jìn)行區(qū)分,相似相近或關(guān)聯(lián)性強(qiáng)的數(shù)據(jù)放在一起,而不相似不相近、關(guān)聯(lián)性不強(qiáng)的數(shù)據(jù)不放在一起。無監(jiān)督學(xué)習(xí)的本質(zhì)是:利用無標(biāo)簽的數(shù)據(jù)學(xué)習(xí)數(shù)據(jù)的分布或數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系。無監(jiān)督學(xué)習(xí)最常應(yīng)用的場(chǎng)景是部分降維算法、聚類算法和關(guān)聯(lián)算法。無監(jiān)督學(xué)習(xí)導(dǎo)入有監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí)的區(qū)別有監(jiān)督學(xué)習(xí)中,如分類問題,要求樣本必須有明確的類別信息,其建立的前提是所有待分類項(xiàng)都有一個(gè)類別與之對(duì)應(yīng)。但在處理實(shí)際問題的過程中,獲取到的數(shù)據(jù)記錄可能并沒有進(jìn)行標(biāo)注,尤其是處理海量數(shù)據(jù)時(shí),如果通過預(yù)處理對(duì)數(shù)據(jù)進(jìn)行打標(biāo),以滿足分類算法的要求,代價(jià)非常大。有監(jiān)督學(xué)習(xí)中最常見的是分類問題,而無監(jiān)督學(xué)習(xí)中最常見的是聚類問題,聚類問題不依賴預(yù)定義的類和類標(biāo)號(hào)的訓(xùn)練實(shí)例。關(guān)注事物本身的特征分析。比如電商對(duì)用戶信息和購買行為數(shù)據(jù)進(jìn)行聚類分析,目的是找到大量級(jí)的且有一定相似度的客戶群,從而實(shí)現(xiàn)用戶畫像,接著針對(duì)該用戶群共有的行為特征投放廣告和其他營(yíng)銷活動(dòng)。1.無監(jiān)督學(xué)習(xí)2.聚類算法3.

K-Means聚類4.

層次聚類5.密度聚類算法聚類分析概念聚類分析是分析研究對(duì)象如何按照多個(gè)方面的特征進(jìn)行綜合分類的一種多元統(tǒng)計(jì)方法,它是根據(jù)物以類聚的思想將相似的樣本歸為一類。把對(duì)象分為不同的類別,類別是依據(jù)數(shù)據(jù)的特征確定的。把相似的東西放在一起,類別內(nèi)部的差異盡可能小,類別之間的差異盡可能的大。作用作為單獨(dú)過程,用于對(duì)數(shù)據(jù)進(jìn)行打標(biāo),即數(shù)據(jù)畫像。作為分類等其他學(xué)習(xí)任務(wù)的前驅(qū)過程,如聚類算法可以作為一些監(jiān)督算法的前驅(qū)過程。聚類分析的作用如下兩圖,有什么相同與不同之處?聚類分析兩個(gè)基本問題-性能度量性能度量:評(píng)價(jià)聚類結(jié)果的好壞程度。聚類性能度量一般分兩類:外部指標(biāo):將聚類結(jié)果與某個(gè)“參考模型”進(jìn)行比較,如依據(jù)業(yè)務(wù)專家給出的劃分結(jié)果的聚類結(jié)果進(jìn)行評(píng)價(jià)。內(nèi)部指標(biāo):直接考察聚類結(jié)果不利用任何參考模型。聚類分析兩個(gè)基本問題-距離計(jì)算常用的距離度量方法包括:歐幾里得距離(簡(jiǎn)稱歐氏距離)和余弦相似度,兩者都是評(píng)定個(gè)體間差異的大小的。歐氏距離會(huì)受指標(biāo)不同單位刻度影響,需要先對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,在聚類問題中,如果兩個(gè)樣本點(diǎn)的歐氏距離越大,表示兩者差異越大。如下表示兩個(gè)??維的樣本點(diǎn)

,

之間的歐氏距離

:余弦相似度不會(huì)受指標(biāo)刻度的影響,余弦值落于區(qū)間[-1,1],值越大,差異越小。如

表示樣本點(diǎn)

的余弦相似度,此時(shí)將樣本點(diǎn)看作??維向量處理。聚類算法應(yīng)用場(chǎng)景-行業(yè)(1)離群點(diǎn)檢測(cè)離群點(diǎn)檢測(cè)是數(shù)據(jù)挖掘中重要應(yīng)用,任務(wù)就是發(fā)現(xiàn)與大部分觀察對(duì)象顯著不同的對(duì)象,很多的數(shù)據(jù)挖掘方法會(huì)將這種差異信息視作噪聲進(jìn)行預(yù)處理,但也有的一些應(yīng)用場(chǎng)景中,離群點(diǎn)本身攜帶有重要的異常信息,是需要被關(guān)注和研究的。離群點(diǎn)檢測(cè)已經(jīng)被廣泛應(yīng)用于電信、信用卡詐騙檢測(cè),貸款審批,電子商務(wù),網(wǎng)絡(luò)入侵和天氣預(yù)報(bào)等領(lǐng)域,甚至可以利用離群點(diǎn)檢測(cè)分析運(yùn)動(dòng)員的統(tǒng)計(jì)數(shù)據(jù),以發(fā)現(xiàn)異常運(yùn)動(dòng)員。應(yīng)用方式:利用聚類算法,找到遠(yuǎn)離其他簇的小簇;首先聚類所有對(duì)象,然后評(píng)估對(duì)象屬于簇的程度,對(duì)不同距離的點(diǎn)進(jìn)行打分。聚類算法應(yīng)用場(chǎng)景-行業(yè)(2)用戶畫像構(gòu)建方面:根據(jù)客戶數(shù)據(jù),將相似性較高的客戶聚為一類,打標(biāo)簽,進(jìn)行客戶類別細(xì)分。業(yè)務(wù)推薦和精準(zhǔn)營(yíng)銷方面:通過構(gòu)建用戶畫像進(jìn)行業(yè)務(wù)推薦和精準(zhǔn)營(yíng)銷。常用聚類算法介紹基于原型聚類(partitioningmethods)K-Means算法,K-Mediods算法基于層次聚類(hierarchicalmethods)HierarchicalClustering算法、BIRCH算法基于密度聚類(density-basedmethods)DBSCAN算法1.無監(jiān)督學(xué)習(xí)2.聚類算法3.K-Means聚類4.

層次聚類5.密度聚類算法基于原型聚類“原型”是指樣本空間中具有代表性的點(diǎn)。原型聚類假設(shè)聚類結(jié)構(gòu)可以通過一組原型刻畫,這一方法在實(shí)際聚類任務(wù)中最為常用,理解起來也較簡(jiǎn)單;通常算法先對(duì)原型進(jìn)行初始化,然后對(duì)原型進(jìn)行迭代更新求解。采用不同的原型表示,不同的求解方式,即會(huì)產(chǎn)生不同的聚類算法。最經(jīng)典的原型聚類算法即:K-Means聚類算法:基于各個(gè)樣本點(diǎn)與各個(gè)聚集簇的中心點(diǎn)距離遠(yuǎn)近,進(jìn)行劃分的聚類算法。K-Mediods算法:在K-Means基礎(chǔ)上改進(jìn)的算法。K-Means聚類算法算法思想輸入聚類個(gè)數(shù)??,以及包含??個(gè)數(shù)據(jù)對(duì)象的數(shù)據(jù)集,輸出標(biāo)準(zhǔn)的k個(gè)聚類的一種算法。然后將??個(gè)數(shù)據(jù)對(duì)象劃分為??個(gè)聚類,而最終所獲得的聚類滿足:(1)同一聚類中的對(duì)象相似度較高;(2)而不同聚類中的對(duì)象相似度較小。K-Means聚類算法步驟執(zhí)行步驟1)選取??個(gè)對(duì)象作為初始中心(叫質(zhì)心),作為聚類中心;2)對(duì)每個(gè)樣本數(shù)據(jù),計(jì)算它們與中心的歐氏距離,按距離最近的準(zhǔn)則將它們分到距離最近的聚類中心所對(duì)應(yīng)的類;3)更新聚類中心:將每個(gè)類別中所有對(duì)象所對(duì)應(yīng)的均值作為該類別的新中心(新的質(zhì)心),計(jì)算目標(biāo)函數(shù);4)判斷聚類中心和目標(biāo)函數(shù)的值是否改變,若不變,則輸出結(jié)果,若改變,則返回2)。??1=(2,10),??2=(2,5),??3=(8,4),??4=(5,8),??5=(7,5),??6=(6,4),??7=(1,2),??8=(4,9).K-Means聚類-過程舉例(1)K-Means聚類-過程舉例(2)K-Means聚類-K如何確定K-Means算法首先選擇??個(gè)初始質(zhì)心,其中??是用戶指定的參數(shù),即所期望的簇的個(gè)數(shù)。這樣做的前提是已經(jīng)知道數(shù)據(jù)集中包含多少個(gè)簇,但很多情況下,我們并不知道數(shù)據(jù)的分布情況。如何有效地確定??值,提供以下幾種方法:從實(shí)際問題出發(fā),人工指定比較合理的??值,通過多次隨機(jī)初始化聚類中心選取比較滿意的結(jié)果均方根:假設(shè)我們有??個(gè)樣本,該方法認(rèn)為??=枚舉法:用不同的??值進(jìn)行聚類分別計(jì)算類內(nèi)距離均值和類間距離均值之比,選擇最小的那個(gè)??值對(duì)不同??值都產(chǎn)生2次聚類,選擇兩次聚類結(jié)果最相似的??值手肘法(Elbow)、層次聚類法等。K-Means聚類的優(yōu)缺點(diǎn)優(yōu)點(diǎn)簡(jiǎn)單、易于理解、運(yùn)算速度快;對(duì)處理大數(shù)據(jù)集,該算法保持可伸縮性和高效性;當(dāng)簇接近高斯分布時(shí),它的效果較好。缺點(diǎn)在K-Means算法是局部最優(yōu)的,容易受到初始質(zhì)心的影響;在K-Means算法中K值需要事先給定的,有時(shí)候K值的選定非常難以估計(jì);在簇的平均值可被定義的情況下才能使用,只能應(yīng)用連續(xù)型數(shù)據(jù);該算法需要不斷地進(jìn)行樣本分類調(diào)整,不斷地計(jì)算調(diào)整后的新的聚類中心,因此當(dāng)數(shù)據(jù)量非常大時(shí),算法的性能(時(shí)間和計(jì)算資源)開銷是非常大的;對(duì)噪聲和孤立點(diǎn)數(shù)據(jù)敏感。K-Means聚類-細(xì)節(jié)解析初始簇心的選擇有時(shí)候會(huì)影響最終的聚類結(jié)果,實(shí)際操作中,我們一般會(huì)選用不同的數(shù)據(jù)作為初始簇心,多次執(zhí)行K-Means算法;新質(zhì)心不一定是實(shí)際的一個(gè)數(shù)據(jù)點(diǎn)。K-Means算法超參數(shù)????是用戶指定的參數(shù),即所期望的簇的個(gè)數(shù)。??指定的前提是已知數(shù)據(jù)集中包含多少個(gè)簇,但很多情況下,并不知道數(shù)據(jù)的分布情況,需要憑借業(yè)務(wù)專家的經(jīng)驗(yàn);常見做法是多嘗試幾個(gè)??值,看分成幾類的結(jié)果更好解釋,更符合分析目的等;或者可以把各種??值算出的SSE做比較,取最小的SSE的??值。K-Means算法會(huì)不會(huì)陷入一直選質(zhì)心的過程,永遠(yuǎn)停不下來?不會(huì)。數(shù)學(xué)證明一定會(huì)收斂,目標(biāo)函數(shù)SSE是可收斂的函數(shù),但數(shù)據(jù)量大時(shí),收斂時(shí)間可能較長(zhǎng)。K-Means算法的使用方法(1)利用python調(diào)用庫sklearn中的cluster子模塊,該模板包含常用聚類算法模型,如:K-Means,DBSCAN等;sklearn的K-Means方法默認(rèn)用歐氏距離,雖然還有余弦相似度、曼哈頓距離等多種方法,但沒有設(shè)定計(jì)算距離方法的參數(shù)。K-Means算法的使用方法(2)利用Python中庫sklearn中的sklearn.cluster.KMeans方法KMeans(n_clusters=8,init=’k_means++’,n_init=10,max_iter=300,tol=0.0001,precompute_distances=’auto’,verbose=0,random_state=None,copy_x=True,n_jobs=1,algorithm=’auto’)參數(shù)說明n_clusters:用于指定聚類中心的個(gè)數(shù),一般調(diào)用時(shí)只需給出n_clusters的值,如指定??為10,KMeans(n_clusters=10)。init:初始聚類中心的初始化方法,其默認(rèn)選擇的是K-Means++。max_iter:最大的迭代次數(shù),默認(rèn)300。K-Means算法優(yōu)化K-Means算法的結(jié)果非常依賴于初始隨機(jī)選擇的聚類中心的位置,可以通過多次執(zhí)行該算法來減少初始中心敏感的影響??刹捎玫膬?yōu)化方法有:1.選擇彼此距離盡可能遠(yuǎn)的K個(gè)點(diǎn)作為初始簇中心。

2.先使用canopy算法進(jìn)行初始聚類,得到K個(gè)canopy中心,以此或距離每個(gè)canopy中心最近的點(diǎn)作為初始簇中心。K-Means應(yīng)用示例隨機(jī)創(chuàng)建一些二維數(shù)據(jù)作為訓(xùn)練集,選擇二維特征數(shù)據(jù),代碼如下:importnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinlinefromsklearn.datasets.samples_generatorimportK-Means應(yīng)用示例#X為樣本特征,Y為樣本簇類別,共1000個(gè)樣本,每個(gè)樣本2個(gè)特征,共4個(gè)簇,簇中心在[-1,-1],[0,0],[1,1],[2,2],簇方差分別為[0.4,0.2,0.2]X,y=make_blobs(n_samples=1000,n_features=2,centers=[[-1,-1],[0,0],[1,1],[2,2]],cluster_std=[0.4,0.2,0.2,0.2],random_state=9)plt.scatter(X[:,0],X[:,1],marker='o')plt.show()K-Means應(yīng)用示例

創(chuàng)建的數(shù)據(jù)如下:K-Means應(yīng)用示例

現(xiàn)在用K-Means聚類方法來做聚類,首先選擇k=2,代碼如下:fromsklearn.clusterimportKMeansy_pred=KMeans(n_clusters=2,random_state=9).fit_predict(X)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.show()K-Means應(yīng)用示例

效果圖輸出如圖:K-Means應(yīng)用示例

用Calinski-HarabaszIndex評(píng)估的聚類分?jǐn)?shù):fromsklearnimportmetricsmetrics.calinski_harabaz_score(X,y_pred)輸出如下:3116.1706763322227K-Means應(yīng)用示例

k=3的聚類效果,代碼如下:fromsklearn.clusterimportKMeansy_pred=KMeans(n_clusters=3,random_state=9).fit_predict(X)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.show()K-Means應(yīng)用示例

效果圖輸出如圖:K-Means應(yīng)用示例

用Calinski-HarabazIndex評(píng)估的k=3時(shí)候聚類分?jǐn)?shù):

metrics.calinski_harabaz_score(X,y_pred)輸出如下:

2931.625030199556可見此時(shí)k=3的聚類分?jǐn)?shù)比k=2還差K-Means應(yīng)用示例

k=4時(shí)候的聚類效果:fromsklearn.clusterimportKMeansy_pred=KMeans(n_clusters=4,random_state=9).fit_predict(X)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.show()K-Means應(yīng)用示例

效果圖輸出如圖:K-Means應(yīng)用示例

用Calinski-HarabaszIndex評(píng)估的k=4時(shí)候聚類分?jǐn)?shù):

metrics.calinski_harabaz_score(X,y_pred)輸出如下:

5924.050613480169

可見k=4的聚類分?jǐn)?shù)比k=2和k=3都要高,這也符合預(yù)期,隨機(jī)數(shù)據(jù)集也就是4個(gè)簇K-Means應(yīng)用示例

用MiniBatchKMeans的效果,將batchsize設(shè)置為200.由于的4個(gè)簇都是凸的,所以其實(shí)batchsize的值只要不是非常的小,對(duì)聚類的效果影響不大。forindex,kinenumerate((2,3,4,5)):plt.subplot(2,2,index+1)y_pred=MiniBatchKMeans(n_clusters=k,batch_size=200,random_state=9).fit_predict(X)K-Means應(yīng)用示例

score=metrics.calinski_harabaz_score(X,y_pred)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.text(.99,.01,('k=%d,score:%.2f'%(k,score)),transform=plt.gca().transAxes,size=10,horizontalalignment='right')plt.show()K-Means應(yīng)用示例

效果圖輸出如圖:K-Means應(yīng)用示例

可見:使用MiniBatchKMeans的聚類效果也不錯(cuò)。當(dāng)然由于使用MiniBatch的原因,同樣是k=4最優(yōu),KMeans類的Calinski-HarabaszIndex分?jǐn)?shù)為5924.05,而MiniBatchKMeans的分?jǐn)?shù)稍微低一些,為5921.45,這個(gè)差異損耗并不大。1.無監(jiān)督學(xué)習(xí)2.聚類算法3.

K-Means聚類4.

層次聚類5.密度聚類算法層次聚類層次聚類法核心思想是在不同層次對(duì)數(shù)據(jù)集進(jìn)行劃分,從而形成樹形的聚類結(jié)構(gòu),數(shù)據(jù)集的劃分可采用“自下向上”的聚合策略,也可以采用“自頂向下”的分拆策略。聚類的層次被表示成樹形圖。樹根擁有所有樣本的唯一聚類,葉子是僅有一個(gè)樣本的聚類。凝聚層次聚類

AGNES算法(AGglomerativeNESting)采用自底向上的策略。最初將每個(gè)對(duì)象作為一個(gè)簇,然后這些簇根據(jù)某些準(zhǔn)則被一步一步合并,兩個(gè)簇間的距離可以由這兩個(gè)不同簇中距離最近的數(shù)據(jù)點(diǎn)的相似度來確定。聚類的合并過程反復(fù)進(jìn)行直到所有的對(duì)象滿足簇?cái)?shù)目。分裂的層次聚類

DIANA算法(DIvisiveANALysis)采用自頂向下的策略。首先將所有對(duì)象置于一個(gè)簇中,然后按照某種既定的規(guī)則逐漸細(xì)分為越來越小的簇(比如最大的歐式距離),直到達(dá)到某個(gè)終結(jié)條件(簇?cái)?shù)目或者簇距離達(dá)到閾值)。凝聚層次聚類的過程和原理(1)1)計(jì)算數(shù)據(jù)集的相似矩陣;2)假設(shè)每個(gè)樣本點(diǎn)為一個(gè)簇類;3)循環(huán):合并相似度最高的兩個(gè)簇類,然后更新相似矩陣;4)當(dāng)簇類個(gè)數(shù)為1時(shí),循環(huán)終止。凝聚層次聚類的過程和原理(2)假設(shè)我們有6個(gè)樣本點(diǎn){A,B,C,D,E,F}第一步:我們假設(shè)每個(gè)樣本點(diǎn)都為一個(gè)簇類,計(jì)算每個(gè)簇類間的相似度,得到相似矩陣;第二步:若B和C的相似度最高,合并簇類B和C為一個(gè)簇類?,F(xiàn)在我們還有五個(gè)簇類,分別為A,BC,D,E,F(xiàn)。第三步:更新簇類間的相似矩陣,相似矩陣的大小為5行5列;若簇類BC和D的相似度最高,合并簇類BC和D為一個(gè)簇類?,F(xiàn)在我們還有四個(gè)簇類,分別為A,BCD,E,F(xiàn)。凝聚層次聚類的過程和原理(3)第四步:更新簇類間的相似矩陣,相似矩陣的大小為4行4列;若簇類E和F的相似度最高,合并簇類E和F為一個(gè)簇類?,F(xiàn)在我們還有3個(gè)簇類,分別為A,BCD,EF。第五步:重復(fù)第四步,簇類BCD和簇類EF的相似度最高,合并該兩個(gè)簇類;現(xiàn)在我們還有2個(gè)簇類,分別為A,BCDEF。第六步:最后合并簇類A和BCDEF為一個(gè)簇類,層次聚類算法結(jié)束。凝聚層次聚類的過程和原理(4)樹狀圖是類似樹(tree-like)的圖表,記錄了簇類聚合和拆分的順序。我們根據(jù)上面的步驟,使用樹狀圖對(duì)聚合層次聚類算法進(jìn)行可視化,以上過程如圖所示。層次聚類由不同層次的分割聚類組成,層次之間的分割具有嵌套的關(guān)系。它不需要輸入?yún)?shù),這是它的一個(gè)明顯的優(yōu)點(diǎn),其缺點(diǎn)是終止條件必須具體指定。與原型聚類和密度聚類不同,層次聚類試圖在不同的“層次”上對(duì)樣本數(shù)據(jù)集進(jìn)行劃分,一層一層地進(jìn)行聚類。典型的分層聚具體有:HierarchicalClustering算法、BIRCH算法等。基于層次聚類常用算法基本概念:判斷兩個(gè)簇之間的距離(1)基本概念:判斷兩個(gè)簇之間的距離(2)計(jì)算兩個(gè)組合數(shù)據(jù)點(diǎn)間距離常用的方法是:SingleLinkage,CompleteLinkage和AverageLinkage,3種計(jì)算方法解析如下:SingleLinkage是將兩個(gè)簇中最近的兩個(gè)點(diǎn)間的距離作為這兩個(gè)組合數(shù)據(jù)點(diǎn)的距離,該方法易受極端值的影響,兩個(gè)不相似的點(diǎn)可能由于其中的某個(gè)極端的點(diǎn)距離較近而組合在一起。CompleteLinkage與SingleLinkage相反,將兩個(gè)簇中距離最遠(yuǎn)的兩個(gè)點(diǎn)間的距離作為這兩個(gè)簇的距離,CompleteLinkage的問題也與SingleLinkage相反,兩個(gè)相似的點(diǎn)可能某個(gè)點(diǎn)原先所在的簇中有極端值而無法組合在一起。AverageLinkage的計(jì)算方法是計(jì)算兩個(gè)簇中的每個(gè)點(diǎn)與其他所有點(diǎn)的距離并將所有距離的均值作為兩個(gè)組合數(shù)據(jù)點(diǎn)間的距離,此方法計(jì)算量比較大,但結(jié)果比前兩種方法更合理?;靖拍睿号袛鄡蓚€(gè)簇之間的距離(3)HierarchicalClustering算法簡(jiǎn)單易理解。主要思路:確保距離近的點(diǎn)落在同一個(gè)簇(cluster)之中,流程如下:將每個(gè)對(duì)象作為一個(gè)簇????={??},形成簇的集合??={??};

迭代以下步驟直至所有對(duì)象都在一個(gè)族中;找到一對(duì)距離最近的簇:min??(????,????);將這對(duì)簇合并為一個(gè)新的簇;從原集合C中移除這對(duì)簇;最終產(chǎn)生層次樹形的聚類結(jié)構(gòu):樹形圖。HierarchicalClustering算法原理優(yōu)點(diǎn):可排除噪聲點(diǎn)的干擾,但有可能噪聲點(diǎn)分為一簇。適合形狀不規(guī)則,不要求聚類完全的情況。不必確定??值,可根據(jù)聚類程度不同有不同的結(jié)果。原理簡(jiǎn)單,易于理解。缺點(diǎn):計(jì)算量很大,耗費(fèi)的存儲(chǔ)空間相對(duì)于其他幾種方法要高。合并操作不能撤銷。合并操作必須有一個(gè)合并限制比例,否則可能發(fā)生過度合并導(dǎo)致所有分類中心聚集,造成聚類失敗。HierarchicalClustering算法優(yōu)缺點(diǎn)skearn提供的模塊cluster中可以調(diào)用:AgglomerativeClustering(n_clusters=2,affinity=“euclidean”,memory,connectivity,compute_full_tree,linkage,pooling_func)具體參數(shù)描述:n_clusters:一個(gè)整數(shù),指定分類簇的數(shù)量,默認(rèn)為2。affinity:一個(gè)字符串或者可調(diào)用對(duì)象,用于計(jì)算距離,默認(rèn)歐氏距離“euclidean”。memory:用于緩存輸出的結(jié)果,默認(rèn)為不緩存。connectivity:一個(gè)數(shù)組或者可調(diào)用對(duì)象或者None,用于指定連接矩陣。compute_full_tree:通常當(dāng)訓(xùn)練了n_clusters后,訓(xùn)練過程就會(huì)停止,等于True時(shí)會(huì)繼續(xù)訓(xùn)練從而生成一顆完整的樹。HierarchicalClustering使用方法(1)具體參數(shù)描述:linkage:一個(gè)字符串,用于指定鏈接算法,可選類型為{“ward”,“complete”,“average”,“single”}?!皊ingle”,單鏈接single-linkage,采用dmin?!癱omplete”,全鏈接complete-linkage,采用dmax。“average”,均連接average-linkage,采用davg?!皐ard,Ward鏈接,為默認(rèn)選擇方式。pooling_func:一個(gè)可調(diào)用對(duì)象,它的輸入是一組特征的值,輸出是一個(gè)數(shù)。該參數(shù)在sklearn0.20版本中棄用,將在0.22中刪除。HierarchicalClustering使用方法(2)BIRCH算法即平衡迭代削減聚類法,其核心是用一個(gè)聚類特征3元組表示一個(gè)簇的有關(guān)信息,從而使一簇點(diǎn)的表示可用對(duì)應(yīng)的聚類特征,而不必用具體的一組點(diǎn)來表示。它通過構(gòu)造滿足分支因子和簇直徑限制的聚類特征樹來求聚類。3元組包含:數(shù)據(jù)點(diǎn)個(gè)數(shù),數(shù)據(jù)點(diǎn)特征之和,數(shù)據(jù)點(diǎn)特征的平方和分支因子:規(guī)定了樹的每個(gè)節(jié)點(diǎn)的樣本個(gè)數(shù)簇直徑:體現(xiàn)一類點(diǎn)的距離范圍BIRCH算法通過聚類特征可以方便地進(jìn)行中心、半徑、直徑及類內(nèi)、類間距離的運(yùn)算。BIRCH算法中聚類特征樹的構(gòu)建過程是動(dòng)態(tài)的,可以隨時(shí)根據(jù)新的數(shù)據(jù)點(diǎn)對(duì)樹進(jìn)行重構(gòu),適合大規(guī)模數(shù)據(jù)集。BIRCH算法BIRCH算法第一步是通過掃描數(shù)據(jù),建立聚類特征樹。第二步是采用某個(gè)算法對(duì)聚類特征樹的葉節(jié)點(diǎn)進(jìn)行聚類。BIRCH算法優(yōu)缺點(diǎn)優(yōu)點(diǎn)就是一次掃描就行進(jìn)行比較好的聚類。缺點(diǎn)是要求是球形聚類,因?yàn)镃F樹存儲(chǔ)的都是半徑類的數(shù)據(jù),都是球形才適合。BIRCH算法描述聚類特征樹可以動(dòng)態(tài)構(gòu)造,不要求所有數(shù)據(jù)讀入內(nèi)存,可逐個(gè)讀入。新的數(shù)據(jù)項(xiàng)總是插入到樹中與該數(shù)據(jù)距離最近的葉子中。如果插入后使得該葉子的直徑大于類直徑T,則把該葉子節(jié)點(diǎn)分裂。其它葉子結(jié)點(diǎn)也需要檢查是否超過分枝因子來判斷其分裂與否,直至該數(shù)據(jù)插入到葉子中,并且滿足不超過類直徑,而每個(gè)非葉子節(jié)點(diǎn)的子女個(gè)數(shù)不大于分枝因子。算法可通過改變類直徑修改特征樹大小,控制其占內(nèi)存容量。BIRCH算法通過一次掃描就可以進(jìn)行較好的聚類,因此該算法適于大數(shù)據(jù)集。I/O花費(fèi)與數(shù)據(jù)量成線性關(guān)系。BIRCH算法只適用于數(shù)據(jù)的分布呈凸形及球形的情況,并且由于BIRCH算法需提供正確的聚類個(gè)數(shù)和簇直徑限制,對(duì)不可視的高維數(shù)據(jù)不可行。BIRCH算法的計(jì)算解析sklearn中的聚類算法包含在sklearn.cluster模塊中,BIRCH算法的具體描述為Birch(threshold=0.5,branching_factor=50,n_clusters=3,compute_labels=True,copy=True)參數(shù)說明如下:threshold:float,表示設(shè)定的半徑閾值,默認(rèn)0.5。branching_factor:int,默認(rèn)=50,每個(gè)節(jié)點(diǎn)最大特征樹子集群數(shù)。n_clusters:int,默認(rèn)=3,最終聚類數(shù)目。compute_labels:bool,默認(rèn)為True,是否為每個(gè)擬合計(jì)算標(biāo)簽,一般默認(rèn)。copy:bool,默認(rèn)為True,是否復(fù)制給定數(shù)據(jù)。如果設(shè)置為False,則將覆蓋初始數(shù)據(jù)。BIRCH算法使用方法層次聚類的應(yīng)用示例

構(gòu)建容量為15000的瑞士卷(swissrolldataset)數(shù)據(jù)集,用離差平方和的層次聚類算法建模,可視化聚類結(jié)果并輸出算法運(yùn)行時(shí)間,代碼如下:n_samples=15000noise=0.05X,_=make_swiss_roll(n_samples,noise)層次聚類的應(yīng)用示例

減小瑞士卷的厚度X[:,1]*=.5print("Computeunstructuredhierarchicalclustering...")st=time.time()ward=AgglomerativeClustering(n_clusters=6,linkage='ward').fit(X)elapsed_time=time.time()-stlabel=ward.labels_#運(yùn)行時(shí)間print("Elapsedtime:%.2fs"%elapsed_time)print("Numberofpoints:%i"%label.size)############################################################層次聚類的應(yīng)用示例

#可視化結(jié)果fig=plt.figure()ax=p3.Axes3D(fig)ax.view_init(7,-80)forlinnp.unique(label):ax.scatter(X[label==l,0],X[label==l,1],X[label==l,2],color=plt.cm.jet(np.float(l)/np.max(label+1)),s=20,edgecolor='k')plt.title('Withoutconnectivityconstraints(time%.2fs)'%層次聚類的應(yīng)用示例

效果圖輸出如圖:1.無監(jiān)督學(xué)習(xí)2.聚類算法3.

K-Means聚類4.

層次聚類5.密度聚類算法密度聚類算法密度聚類的思想不同于K-Means,它是通過聚類的簇是否緊密相連來判斷樣本點(diǎn)是否屬于一個(gè)簇,代表性的算法就是DBSCAN,它基于一組鄰域參數(shù)來判斷某處樣本是否是緊密。DBSCAN(Density-BasedSpatialClusteringofApplicationswithNoise,具有噪聲的基于密度的聚類方法)是一種很典型的密度聚類算法,和K-Means,BIRCH這些一般只適用于凸樣本集的聚類相比,DBSCAN還適用于非凸樣本集。密度聚類過程和原理(1)DBSCAN是一種基于密度的聚類算法,這類密度聚類算法一般假定類別可以通過樣本分布的緊密程度決定。同一類別的樣本,他們之間的緊密相連的,也就是說,在該類別任意樣本周圍不遠(yuǎn)處一定有同類別的樣本存在。通過將緊密相連的樣本劃為一類,這樣就得到了一個(gè)聚類類別。通過將所有各組緊密相連的樣本劃為各個(gè)不同的類別,則我們就得到了最終的所有聚類類別結(jié)果。密度聚類過程和原理(2)DBSCAN是基于一組鄰域來描述樣本集的緊密程度的,參數(shù)(?,MinPts)用來描述鄰域的樣本分布緊密程度。其中,?描述了某一樣本的鄰域距離閾值,MinPts描述了某一樣本的距離為?的鄰域中樣本個(gè)數(shù)的閾值。DBSCAN算法的基本概念(1)DBSCAN算法的基本概念(2)DBSCAN算法將數(shù)據(jù)點(diǎn)分為三類:核心點(diǎn):在半徑??內(nèi)含有超過min_??????????????數(shù)目的點(diǎn)。邊界點(diǎn):在半徑??內(nèi)點(diǎn)的數(shù)量小于min_??????????????,但是落在核心點(diǎn)的鄰域內(nèi)的點(diǎn)。噪音點(diǎn):既不是核心點(diǎn)也不是邊界點(diǎn)的點(diǎn)。DBSCAN聚類算法應(yīng)用特點(diǎn)和傳統(tǒng)的K-Means算法相比,DBSCAN最大的不同就是不需要輸入類別數(shù)K,當(dāng)然它最大的優(yōu)勢(shì)是可以發(fā)現(xiàn)任意形狀的聚類簇,而不是像K-Means,一般僅僅使用于凸的樣本集聚類。同時(shí)它在聚類的同時(shí)還可以找出異常點(diǎn),這點(diǎn)和BIRCH算法類似。DBSCAN聚類算法優(yōu)缺點(diǎn)

優(yōu)點(diǎn):可以解決數(shù)據(jù)分布特殊(非凸,互相包絡(luò),長(zhǎng)條形等)的情況。對(duì)于噪聲不敏感,速度較快,不需要指定簇的個(gè)數(shù);可適用于較大的數(shù)據(jù)集。在鄰域參數(shù)給定的情況下結(jié)果是確定的,只要數(shù)據(jù)進(jìn)入算法的順序不變,與初始值無關(guān)。缺點(diǎn):如果樣本集的密度不均勻、聚類間距差相差很大時(shí),聚類質(zhì)量較差,這時(shí)用DBSCAN聚類一般不適合。如果樣本集較大時(shí),聚類收斂時(shí)間較長(zhǎng),此時(shí)可以對(duì)搜索最近鄰時(shí)建立的KD樹或者球樹進(jìn)行規(guī)模限制來改進(jìn)。調(diào)參相對(duì)于傳統(tǒng)的K-Means之類的聚類算法稍復(fù)雜,主要需要對(duì)距離閾值?,鄰域樣本數(shù)閾值MinPts聯(lián)合調(diào)參,不同的參數(shù)組合對(duì)最后的聚類效果有較大影響。DBSCAN聚類算法使用方法

利用sklearn庫中的sklearn.cluster.DBSCAN方法,完整描述為:sklearn.cluster.DBSCAN(eps=0.5,min_samples=5,metric=’euclidean’,metric_params=None,algorithm=’auto’,leaf_size=30,p=None,n_jobs=None)注意:DBSCAN主要參數(shù):eps:兩個(gè)樣本被看作鄰居節(jié)點(diǎn)的最大距離。min_samples:最小簇的樣本數(shù)。metric:距離計(jì)算方式,euclidean為歐氏距離計(jì)算。密度聚類應(yīng)用示例

importwarningswarnings.filterwarnings('ignore')importnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinlinefromsklearnimportdatasetsfromsklearn.clusterimportDBSCAN,KMeans密度聚類應(yīng)用示例

#noise控制疊加的噪聲的大小X,y=datasets.make_circles(n_samples=1000,noise=0.1,factor=0.3)#centers=[[1.5,1.5]]坐標(biāo)位置,在1.5,1.5生成X3,y3=datasets.make_blobs(n_samples=500,n_features=2,centers=[[1.5,1.5]],cluster_std=0.2)#將兩個(gè)數(shù)據(jù)級(jí)聯(lián)X=np.concatenate([X,X3])y=np.concatenate([y,y3+2])plt.scatter(X[:,0],X[:,1],c=y生成的數(shù)據(jù)如圖:密度聚類應(yīng)用示例

密度聚類應(yīng)用示例

kmeans#有缺陷kmeans=KMeans(3)kmeans.fit(X)y_=kmeans.predict(X)plt.scatter(X[:,0],X[:,1],c=y_)kmeans形成的聚類效果如圖10-13所示:可以看出,效果很不好。密度聚類應(yīng)用示例

定義dbcandbscan=DBSCAN(eps=0.15,min_samples=5)dbscan.fit(X)#賦值y_=dbscan.fit_predict(X)y_=dbscan.labels_plt.scatter(X[:,0],X[:,1],c=y_)DBSCAN的形成的聚類效果如圖10-14所示:本章主要介紹了聚類算法的基本原理和常見聚類算法,包括Kmeans,層次聚類,密度聚類等,同時(shí)也介紹了不同算法在應(yīng)用層面的差異性和優(yōu)缺點(diǎn),為后續(xù)算法的選型提供了比較好的理論參考??偨Y(jié)謝謝第十一章:降維與關(guān)聯(lián)規(guī)則學(xué)習(xí)目標(biāo)通過本章的學(xué)習(xí):掌握降維的基本思想掌握主成分分析(PCA)的步驟。掌握關(guān)聯(lián)規(guī)則算法的基本原理和挖掘過程。

1.降維技術(shù)2.

PCA降維技術(shù)的原理與實(shí)現(xiàn)3.LDA降維技術(shù)的原理與實(shí)現(xiàn)4.關(guān)聯(lián)規(guī)則挖掘算法的基本原理5.關(guān)聯(lián)規(guī)則挖掘應(yīng)用算法降維技術(shù)背景(1)維數(shù)災(zāi)難背景現(xiàn)實(shí)應(yīng)用中屬性維度成千上萬,在高維度情況下會(huì)帶來很多麻煩,而且當(dāng)維度大的時(shí)候,數(shù)據(jù)樣本一般分布的非常稀疏,這是所有學(xué)習(xí)算法要面對(duì)的問題,降維技術(shù)應(yīng)運(yùn)而生。數(shù)據(jù)降維降維是對(duì)事物的特征進(jìn)行壓縮和篩選,該項(xiàng)任務(wù)相對(duì)比較抽象。如果沒有特定領(lǐng)域知識(shí),無法預(yù)先決定采用哪些數(shù)據(jù),比如在人臉識(shí)別任務(wù)中,如果直接使用圖像的原始像素信息,數(shù)據(jù)的維度會(huì)非常高,通常會(huì)利用降維技術(shù)對(duì)圖像進(jìn)行處理,保留下最具有區(qū)分度的像素組合。降維技術(shù)背景(2)對(duì)數(shù)據(jù)降維還有如下原因:(1)使得數(shù)據(jù)集更易使用(2)降低算法的計(jì)算開銷(3)去除噪聲(4)使得結(jié)果容易理解降維技術(shù)-

主成分分析(1)主成分分析(PCA)

在PCA中,數(shù)據(jù)從原來的坐標(biāo)系轉(zhuǎn)換到新的坐標(biāo)系,由數(shù)據(jù)本身決定。轉(zhuǎn)換坐標(biāo)系時(shí),以方差最大的方向作為坐標(biāo)軸方向,因?yàn)閿?shù)據(jù)的最大方差給出了數(shù)據(jù)的最重要的信息。第一個(gè)新坐標(biāo)軸選擇的是原始數(shù)據(jù)中方差最大的方法,第二個(gè)新坐標(biāo)軸選擇的是與第一個(gè)新坐標(biāo)軸正交且方差次大的方向。重復(fù)該過程,重復(fù)次數(shù)為原始數(shù)據(jù)的特征維數(shù)。大部分方差都包含在最前面的幾個(gè)新坐標(biāo)軸中,因此,可以忽略余下的坐標(biāo)軸,即對(duì)數(shù)據(jù)進(jìn)行了降維處理。降維技術(shù)

-

線性判別式分析(2)線性判別式分析(LDA)

線性判別式分析是將高維的模式樣本投影到最佳判別矢量空間,以達(dá)到抽取分類信息和壓縮特征空間維數(shù)的效果,投影后保證模式樣本在新的子空間有最大的類間距離和最小的類內(nèi)距離,即模式在該空間中有最佳的可分離性,可以達(dá)到對(duì)數(shù)據(jù)進(jìn)行的降維處理。降維方法總體理解(1)樣本數(shù)據(jù)集的理解將數(shù)據(jù)集考慮成矩陣,每行對(duì)應(yīng)一個(gè)樣本,每列對(duì)應(yīng)一個(gè)特征或者維度。在降維方法中,都是把數(shù)據(jù)集看作矩陣形式,數(shù)學(xué)上有非常多關(guān)于矩陣的處理技巧和定理,降維的方法證明均源于此。降維方法總體理解(2)機(jī)器學(xué)習(xí)領(lǐng)域中所謂的降維就是指采用某種映射方法,將原高維空間中的數(shù)據(jù)點(diǎn)映射到低維度的空間。降維的本質(zhì)是學(xué)習(xí)一個(gè)映射函數(shù)f:x->y,其中x是原始數(shù)據(jù)點(diǎn)的表達(dá),目前最多使用向量表達(dá)形式。y是數(shù)據(jù)點(diǎn)映射后的低維向量表達(dá),通常y的維度小于x的維度(當(dāng)然也可以提高維度)。映射函數(shù)f可能是顯式的或隱式的、線性的或非線性的。在很多算法中,降維算法成為了數(shù)據(jù)預(yù)處理的一部分。一些算法如果沒有降維預(yù)處理,就很難得到很好的效果。1.降維技術(shù)2.PCA降維技術(shù)的原理與實(shí)現(xiàn)3.LDA降維技術(shù)的原理與實(shí)現(xiàn)4.關(guān)聯(lián)規(guī)則挖掘算法的基本原理5.關(guān)聯(lián)規(guī)則挖掘應(yīng)用算法PCA降維技術(shù)(1)PCA(PrincipalComponentAnalysis,主成分分析)在高維向量空間中,隨著維度的增加,數(shù)據(jù)呈現(xiàn)出越來越稀疏的分布特點(diǎn),增加后續(xù)算法的復(fù)雜度,而很多時(shí)候雖然數(shù)據(jù)維度較高,但是很多維度之間存在相關(guān)性,他們表達(dá)的信息有重疊。PCA的思想是將n維特征映射到k維上(k<n),這k維是全新的正交特征。這k維特征稱為主成分,是重新構(gòu)造出來的k維特征,而不是簡(jiǎn)單地從n維特征中去除其余n-k維特征(這也是與特征選擇特征子集的方法的區(qū)別)。PCA降維技術(shù)(2)PCA的目的是在高維數(shù)據(jù)中找到最大方差的方向,接著映射它到比最初維數(shù)小或相等的新的子空間。PCA降維技術(shù)的原理(1)PCA應(yīng)用本身是基于一定假設(shè)的:1.線性即特征的變換是線性變換,作用有限,目前也有非線性的特征變換kernelPCA。2.處理的數(shù)據(jù)分布式服從指數(shù)族概率密度函數(shù),即能通過均值和協(xié)方差來表征數(shù)據(jù)的分布,因?yàn)橹挥性谶@個(gè)情況下信噪比和協(xié)方差矩陣才能表示噪聲和數(shù)據(jù)冗余。(好在實(shí)際應(yīng)用中常見的數(shù)據(jù)是服從高斯分布或近似高斯分布)。PCA降維技術(shù)的原理(2)主成分分析(PCA)的基本原理

在一組多變量的數(shù)據(jù)中,很多變量常常是一起變動(dòng)的。一個(gè)原因是很多變量是同一個(gè)驅(qū)動(dòng)影響的的結(jié)果。在很多系統(tǒng)中,只有少數(shù)幾個(gè)這樣的驅(qū)動(dòng),但是多余的儀器使我們測(cè)量了很多的系統(tǒng)變量。當(dāng)這種情況發(fā)生的時(shí)候,你需要處理的就是冗余的信息。而你可以通過用一個(gè)簡(jiǎn)單的新變量代替這組變量來簡(jiǎn)化此問題。PCA降維技術(shù)的原理(3)

第一主成分是數(shù)據(jù)空間的一個(gè)軸。當(dāng)你把各觀察值投影到這個(gè)軸時(shí),結(jié)果會(huì)形成一個(gè)新變量,這個(gè)變量的方差是所有可選的軸中最大的。第二主成分是空間的另一個(gè)軸,它垂直于第一個(gè)軸。投影數(shù)據(jù)到這個(gè)軸上將得到另一組變量,此變量的方差是所有可選的軸中最大的。PCA降維技術(shù)的原理(4)特征向量(eigenvector)是一個(gè)矩陣的滿足如下公式的非零向量:

特征向量和特征值只能由方陣得出,且并非所有方陣都有特征向量和特征值。如果一個(gè)矩陣有特征向量和特征值,那么它的每個(gè)維度都有一對(duì)特征向量和特征值。矩陣的主成分是其協(xié)方差矩陣的特征向量,按照對(duì)應(yīng)的特征值大小排序。PCA降維技術(shù)的原理(5)

最大的特征值就是第一主成分,第二大的特征值就是第二主成分,以此類推。把數(shù)據(jù)映射到主成分上,第一主成分是最大特征值對(duì)應(yīng)的特征向量,因此我們要建一個(gè)轉(zhuǎn)換矩陣,它的每一列都是主成分的特征向量。如果我們要把5維數(shù)據(jù)降成3維,那么我們就要用一個(gè)3維矩陣做轉(zhuǎn)換矩陣,用特征向量中的前三個(gè)主成分作為轉(zhuǎn)換矩陣。若把我們的2維數(shù)據(jù)映射成1維,那么我們就要用一個(gè)1維矩陣做轉(zhuǎn)換矩陣,用特征向量中的第一主成分作為轉(zhuǎn)換矩陣。最后,我們用數(shù)據(jù)矩陣右乘轉(zhuǎn)換矩陣。PCA算法流程輸入:n維特征的樣本數(shù)據(jù)集??輸出:降到p維后的樣本集??’對(duì)所有樣本構(gòu)成的矩陣X進(jìn)行去中心化;求出X的協(xié)方差矩陣C;利用特征值分解,求出協(xié)方差矩陣C的特征值及對(duì)應(yīng)的特征向量;將特征向量按對(duì)應(yīng)特征值大小從上到下按行排列成矩陣,根據(jù)實(shí)際業(yè)務(wù)場(chǎng)景,取前p列組成新的坐標(biāo)矩陣W。令原始數(shù)據(jù)集與新坐標(biāo)舉證W相乘,得到的新的數(shù)據(jù)集(矩陣)即為降到p維后的坐標(biāo)。PCA優(yōu)缺點(diǎn)優(yōu)點(diǎn):以方差衡量信息的無監(jiān)督學(xué)習(xí),不受樣本標(biāo)簽限制。各主成分之間正交,可消除原始數(shù)據(jù)成分間的相互影響。計(jì)算方法簡(jiǎn)單,主要運(yùn)算是奇異值分解,易于在計(jì)算機(jī)上實(shí)現(xiàn)??蓽p少指標(biāo)選擇的工作量。缺點(diǎn):主成分解釋其含義往往具有一定的模糊性,不如原始樣本特征的解釋性強(qiáng)。方差小的非主成分也可能含有對(duì)樣本差異的重要信息,因降維丟棄可能對(duì)后續(xù)數(shù)據(jù)處理有影響。PCA降維的Python實(shí)現(xiàn)

#Python實(shí)現(xiàn)PCAimportnumpyasnpdefpca(X,k):#kisthecomponentsyouwant#每個(gè)特征的平均值n_samples,n_features=X.shapemean=np.array([np.mean(X[:,i])foriinrange(n_features)])#規(guī)范化norm_X=X-mean#散射矩陣scatter_matrix=np.dot(np.transpose(norm_X),norm_X)#計(jì)算特征向量和特征值eig_val,eig_vec=np.linalg.eig(scatter_matrix)eig_pairs=[(np.abs(eig_val[i]),eig_vec[:,i])foriinrange(n_features)]PCA降維的Python實(shí)現(xiàn)

#根據(jù)eig_val從最高到最低對(duì)eig_vec進(jìn)行排序eig_pairs.sort(reverse=True)#選擇最上面的keig_vecfeature=np.array([ele[1]foreleineig_pairs[:k]])#獲取新數(shù)據(jù)data=np.dot(norm_X,np.transpose(feature))returndataX=np.array([[-1,1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]])print(pca(X,1))PCA算法使用方法(1)在sklearn庫中,可以使用sklearn.decomposition.PCA加載PCA進(jìn)行降維。具體方法:PCA(n_components=None,copy=True,whiten=False,svd_solver=‘a(chǎn)uto’)主要參數(shù)有:n_components:指定主成分的個(gè)數(shù),即降維后數(shù)據(jù)的維度。copy:在運(yùn)行算法時(shí),是否將原始訓(xùn)練數(shù)據(jù)復(fù)制一份。等于True表示在原始數(shù)據(jù)的副本上進(jìn)行運(yùn)算,原始訓(xùn)練數(shù)據(jù)的值不會(huì)有任何改變;等于False在原始數(shù)據(jù)上進(jìn)行降維計(jì)算,原始訓(xùn)練數(shù)據(jù)的值會(huì)改。Whiten:白化,使得每個(gè)特征具有相同的方差。svd_solver:可選項(xiàng)為{‘a(chǎn)uto’,‘full’,‘a(chǎn)rpack’,‘randomized’},表示解析器計(jì)算SVD的策略。PCA算法使用方法(2)在sklearn庫中,可以使用sklearn.decomposition.PCA加載PCA進(jìn)行降維。主要屬性:components_:降維后各主成分方向,并按照各主成分的方差值大小排序。explained_variance_:降維后各主成分的方差值,方差值越大,越主要。explained_variance_ratio_:降維后的各主成分的方差值占總方差值的比例,比例越大,則越主要。singular_values_:奇異值分解得到的前n_components個(gè)中最大的奇異值。1.降維技術(shù)2.PCA降維技術(shù)的原理與實(shí)現(xiàn)3.LDA降維技術(shù)的原理與實(shí)現(xiàn)4.關(guān)聯(lián)規(guī)則挖掘算法的基本原理5.關(guān)聯(lián)規(guī)則挖掘應(yīng)用算法LDA介紹(1)

線性判別式分析(LinearDiscriminantAnalysis),簡(jiǎn)稱為L(zhǎng)DA。也稱為Fisher線性判別(FisherLinearDiscriminant,F(xiàn)LD),是模式識(shí)別的經(jīng)典算法,在1996年由Belhumeur引入模式識(shí)別和人工智能領(lǐng)域。 LDA是一種監(jiān)督學(xué)習(xí)的降維技術(shù),將數(shù)據(jù)在低維度上進(jìn)行投影,投影后希望每一種類別數(shù)據(jù)的投影點(diǎn)盡可能的接近,而不同類別的數(shù)據(jù)的類別中心之間的距離盡可能的大。LDA介紹(2)LDA(LinearDiscriminantAnalysis)線性判別式分析,也叫Fisher線性判別,是模式識(shí)別中的經(jīng)典算法,它的數(shù)據(jù)集的每個(gè)樣本是有類別輸出的。思想:投影后類內(nèi)距離最小,類間距離最大。線性判別:LDA的主要思想是將一個(gè)高維空間中的數(shù)據(jù)投影到一個(gè)較低維的空間中,且投影后要保證各個(gè)類別的類內(nèi)方差小而類間均值差別大,這意味著同一類的高維數(shù)據(jù)投影到低維空間后相同類別的聚在一起,而不同類別之間相距較遠(yuǎn)。判別問題與線性判別函數(shù)

1.方法分類:線性判別函數(shù)、支持向量機(jī)、fisher線性判別函數(shù)廣義線性判別函數(shù)、非線性判別函數(shù)、核學(xué)習(xí)機(jī)2.基本思想:步一:給定一個(gè)判別函數(shù),且已知該函數(shù)的參數(shù)形式;步二:采用樣本來訓(xùn)練判別函數(shù)的參數(shù);判別問題與線性判別函數(shù)

步三:對(duì)于新樣本,采用判別函數(shù)對(duì)其進(jìn)行決策,并按照一些準(zhǔn)則來完成分類學(xué)習(xí)判別函數(shù)的基本技術(shù)路線;假定有n個(gè)d維空間中的樣本,每個(gè)樣本的類別標(biāo)簽已知,且一共有c個(gè)不同的類別假定判別函數(shù)的形式已知,尋找一個(gè)判別函數(shù)對(duì)于給定的新樣本x,判定它屬于哪個(gè)類別LDA算法優(yōu)缺點(diǎn)LDA算法既可以用來降維,也可以用來分類,主要用于降維,尤其在進(jìn)行圖像識(shí)別相關(guān)的數(shù)據(jù)分析時(shí),LDA是一個(gè)有力的工具。優(yōu)點(diǎn):在降維過程中可以使用類別的先驗(yàn)經(jīng)驗(yàn)。LDA在樣本分類信息依賴均值而不是方差的時(shí)候,比PCA之類的算法較

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論