機器學(xué)習(xí)及應(yīng)用第7章-集成學(xué)習(xí)課件_第1頁
機器學(xué)習(xí)及應(yīng)用第7章-集成學(xué)習(xí)課件_第2頁
機器學(xué)習(xí)及應(yīng)用第7章-集成學(xué)習(xí)課件_第3頁
機器學(xué)習(xí)及應(yīng)用第7章-集成學(xué)習(xí)課件_第4頁
機器學(xué)習(xí)及應(yīng)用第7章-集成學(xué)習(xí)課件_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第07章 集成學(xué)習(xí)集成學(xué)習(xí)投票法掛袋法提升法7.1 引言集成學(xué)習(xí)(Ensemble Learning)是指利用多個獨立的基學(xué)習(xí)器來進行學(xué)習(xí),組合某輸入樣例在各個基學(xué)習(xí)器上的輸出,并由他們按照某種策略共同決定輸出。集成學(xué)習(xí)的基本思想是先通過一定的規(guī)則生成一定數(shù)量的基學(xué)習(xí)器(Base Estimator),再采用某種集成策略將這些基學(xué)習(xí)器的預(yù)測結(jié)果組合起來,形成最終的結(jié)論。集成學(xué)習(xí)中,弱學(xué)習(xí)器(Weak Learner)是錯誤概率小于0.5的學(xué)習(xí)器;而強學(xué)習(xí)器(Strong Learner)則具有任意小的錯誤概率。集成學(xué)習(xí)主要包括三個部分:個體的生成方法、個體學(xué)習(xí)器(基學(xué)習(xí)器)和結(jié)論的合(集)成方

2、法。集成學(xué)習(xí)中的基學(xué)習(xí)器可以是同質(zhì)的“弱學(xué)習(xí)器”,也可以是異質(zhì)的“弱學(xué)習(xí)器”。目前,同質(zhì)個體學(xué)習(xí)器的應(yīng)用最為廣泛,同質(zhì)個體學(xué)習(xí)器使用最多的模型是CART決策樹和神經(jīng)網(wǎng)絡(luò)。7.1.1 集成學(xué)習(xí)的概念7.1 引言集成學(xué)習(xí)主要包括三個部分:個體的生成方法個體學(xué)習(xí)器(基學(xué)習(xí)器)結(jié)論的合(集)成方法。集成學(xué)習(xí)需要很好地解決如下兩個問題。(1)如何通過有效地訓(xùn)練,獲得若干個基學(xué)習(xí)器?(2)如何選擇一個組合策略,將這些基學(xué)習(xí)器集合成為一個強學(xué)習(xí)器?7.1.2 集成學(xué)習(xí)的組成7.1 引言同質(zhì)個體學(xué)習(xí)器按照個體學(xué)習(xí)器之間是否存在依賴關(guān)系又可以分為兩類:個體學(xué)習(xí)器之間存在著強依賴關(guān)系其代表算法是Boosting算

3、法;個體學(xué)習(xí)器之間不存在強依賴關(guān)系,可以并行生成這些個體學(xué)習(xí)器,其代表算法是Bagging和隨機森林(Random Forest)算法。根據(jù)集成學(xué)習(xí)的用途不同,結(jié)論合成的方法也各不相同。集成的輸出通常由各個體學(xué)習(xí)器的輸出投票產(chǎn)生。通常采用絕對多數(shù)投票法或相對多數(shù)投票法。當集成學(xué)習(xí)用于回歸估計時,集成的輸出通常由各學(xué)習(xí)器的輸出通過簡單平均或加權(quán)平均產(chǎn)生。7.1.3 同質(zhì)個體學(xué)習(xí)器的分類及算法7.2 Voting 假設(shè)某機器學(xué)習(xí)模型有L個基學(xué)習(xí)器 ,用dj表示基學(xué)習(xí)器Mj在給定的任意輸入向量x上的估計值,即 (注:若輸入向量存在多種表示 ,也就是說每個基學(xué)習(xí)器的輸入各不相同,那么Mj在輸入xj上的

4、預(yù)測 ),那么最終的預(yù)測值可由各個基學(xué)習(xí)器的預(yù)測計算得出: 若每個基學(xué)習(xí)器有K個輸出,即基學(xué)習(xí)器Mj的輸出當它們組合時,得到預(yù)測值7.2 Voting 組合函數(shù)是投票法組合函數(shù)還可以是取平均值的簡單投票法(Simple Voting)、中位數(shù)(Median)、最大值(Maxmize)等,如圖7-1所示。圖7-1 多個基學(xué)習(xí)器通過投票方法組合而成的集成學(xué)習(xí)方式示意圖7.2 Voting對于回歸,可以使用簡單平均、加權(quán)平均或中位數(shù)來融合基回歸器的輸出。中位數(shù)對噪聲比平均值更加棒。 分類器組合函數(shù)規(guī)則組合函數(shù)說明平均和 相對多數(shù)表決,直觀加權(quán)和 考慮學(xué)習(xí)器的投票權(quán)重中位數(shù) 對離群點的魯棒性好最小值

5、悲觀估計最大值 樂觀估計乘積 每個學(xué)習(xí)器都有否決權(quán)7.2 Voting 假定dj是獨立同分布的,其期望值為E(dj),方差為Var(dj),那么當wj=1/L時,輸出的期望值和方差分別為:從上述推導(dǎo)過程可以看到,期望值沒有改變,因而偏倚也不會改變。但是方差隨著獨立投票數(shù)量的增加而下降。對于一般情況,有可以看出,如果學(xué)習(xí)器是正相關(guān)的,則方差增加。因此,在實踐中,需要使用不同算法和輸入特征來減少其正相關(guān)性。如果投票者不獨立,但是負相關(guān)的,那么進一步降低方差也是可能的。7.2 Votingsklearn提供了一種軟投票/多數(shù)規(guī)則分類器(Soft Voting/Majority Rule Classi

6、fier),其原型如下:class sklearn.ensemble.VotingClassifier(estimators, voting=hard, weights=None, n_jobs=1, flatten_transform=None) 主要參數(shù)如下estimators:指定的估計器,該估計器必須有.fit方法進行訓(xùn)練。voting:字符串,可選項為“soft”和“hard”,其默認值為“hard”。如果voting取值“hard”,那么使用多數(shù)規(guī)則表決預(yù)測的類標簽。否則,基于各個基學(xué)習(xí)器的預(yù)測概率之和預(yù)測類標簽。weights:數(shù)組,大小等于n_classifiers(基學(xué)習(xí)器的

7、數(shù)量),缺省值為None。權(quán)值序列表示預(yù)測類標簽出現(xiàn)(hard voting),或者平均化之前的類概率(soft voting)。示例from itertools import productimport numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.svm import SVCfro

8、m sklearn.ensemble import VotingClassifier# 加載鳶尾花數(shù)據(jù)集iris = datasets.load_iris()X = iris.data:, 0, 2y = iris.target7.2 Voting# 構(gòu)造三個基學(xué)習(xí)器和一個集成學(xué)習(xí)器clf1 = DecisionTreeClassifier(max_depth=4)clf2 = KNeighborsClassifier(n_neighbors=7)clf3 = SVC(kernel=rbf, probability=True)eclf = VotingClassifier(estimators

9、=(dt, clf1), (knn, clf2), (svc, clf3), voting=soft, weights=3, 2, 1)# 訓(xùn)練學(xué)習(xí)器clf1.fit(X, y)clf2.fit(X, y)clf3.fit(X, y)eclf.fit(X, y)7.2 Voting# 生成數(shù)據(jù)網(wǎng)格x_min, x_max = X:, 0.min() - 1, X:, 0.max() + 1y_min, y_max = X:, 1.min() - 1, X:, 1.max() + 1xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1), np.ara

10、nge(y_min, y_max, 0.1)# 繪圖f, axarr = plt.subplots(2, 2, sharex=col, sharey=row, figsize=(10, 8)for idx, clf, tt in zip(product(0, 1, 0, 1), clf1, clf2, clf3, eclf, Decision Tree (depth=4), KNN (k=7), Kernel SVM, Soft Voting): Z = clf.predict(np.c_xx.ravel(), yy.ravel() Z = Z.reshape(xx.shape)7.2 Vot

11、ing axarridx0, idx1.contourf(xx, yy, Z, alpha=0.4) axarridx0, idx1.scatter(X:, 0, X:, 1, c=y, s=20, edgecolor=k) axarridx0, idx1.set_title(tt) plt.show()7.2 Voting 首先構(gòu)造三個不同的基學(xué)習(xí)器:決策樹、k近鄰和支持向量機,然后用軟投票(soft voting)策略,將上述三個基學(xué)習(xí)器集成為一個新的學(xué)習(xí)器,使用sklearn 中的鳶尾花數(shù)據(jù)集訓(xùn)練上述各個學(xué)習(xí)器。7.2 Voting 運行結(jié)果如下7.3 Bagging7.3 Baggin

12、g 一個學(xué)習(xí)算法是穩(wěn)定的,如果該算法在相同訓(xùn)練數(shù)據(jù)集的再抽樣版本上多次運行導(dǎo)致具有高正相關(guān)性的學(xué)習(xí)器。決策樹和多層感知器是不穩(wěn)定的,最近鄰算法是穩(wěn)定的,但是精簡的最近鄰算法是不穩(wěn)定的。一個學(xué)習(xí)算法是不穩(wěn)定的,如果訓(xùn)練集的微小變化引起由其訓(xùn)練得到的學(xué)習(xí)器的很大差異,即學(xué)習(xí)算法具有高方差。Bagging的組合策略是:分類任務(wù)采取簡單投票法,即每個基學(xué)習(xí)器一票;回歸任務(wù)使用簡單平均法,即每個基學(xué)習(xí)器的預(yù)測值取平均值。sklearn提供了典型的Bagging分類器,其原型如下:class sklearn.ensemble.BaggingClassifier(base_estimator=None, n

13、_estimators=10, max_samples=1.0, max_features=1.0, bootstrap=True, bootstrap_features=False, oob_score=False, warm_start=False, n_jobs=1, random_state=None, verbose=0)source7.3 Bagging 主要參數(shù)base_estimator:對象,默認值為None。如果是None,則默認的基學(xué)習(xí)器是決策樹。n_estimator:整型,默認值為10。基學(xué)習(xí)器的數(shù)量。max_samples:整型或浮點型,默認值為1.0。從X中抽取指

14、定的樣本數(shù)來訓(xùn)練每個基學(xué)習(xí)器。如果是整型,抽取max_samples個樣本作為訓(xùn)練數(shù)據(jù)集;否則,抽取max_samples * X.shape0樣本作為訓(xùn)練數(shù)據(jù)集。max_features:整型或浮點型,默認值為1.0。從X中抽取指定的屬性數(shù)量來訓(xùn)練每個基學(xué)習(xí)器。如果是整型,抽取max_featuress個屬性;否則,抽取max_features * X.shape1屬性。warm_start:布爾值,默認值為False。當設(shè)置為True時,訓(xùn)練是在前一次集成學(xué)習(xí)的基礎(chǔ)上,繼續(xù)訓(xùn)練并添加更多基學(xué)習(xí)器到集成學(xué)習(xí)中來,否則,只是訓(xùn)練一個全新的集成學(xué)習(xí)。7.3 Bagging采取與前一節(jié)示例中一樣的

15、基學(xué)習(xí)器,分別構(gòu)造三個不同的基學(xué)習(xí)器以及它們相對應(yīng)的掛袋集成學(xué)習(xí)器,然后使用sklearn中的鳶尾花數(shù)據(jù)集訓(xùn)練上述各個學(xué)習(xí)器。 掛袋法比單個基學(xué)習(xí)器的效果稍好一點。 7.3 Bagging 隨機森林(Random Froest,RF)的基學(xué)習(xí)器是決策樹。對于一個輸入樣本,N棵決策樹就會有N個分類結(jié)果,隨機森林集成了所有分類投票結(jié)果,將投票次數(shù)最多的類別作為最終的輸出。(1)抽樣產(chǎn)生每棵決策樹的訓(xùn)練數(shù)據(jù)集。RF采用Bagging抽樣技術(shù)從原始訓(xùn)練數(shù)據(jù)集中產(chǎn)生N個訓(xùn)練子集。(2)構(gòu)建N棵決策樹(基學(xué)習(xí)器)。每一個訓(xùn)練子集生成一棵決策樹,從而產(chǎn)生N棵決策樹形成森林,每棵決策樹不需要剪枝處理。(3)生

16、成隨機森林,以簡單多數(shù)的原則決定該樣本是哪個類別。使用N棵決策樹對測試樣本進行分類,隨機森林將每棵子樹的結(jié)果匯總,以簡單多數(shù)的原則決定該樣本是哪個類別。 隨機森林的生成過程如下: 7.3 Bagging(4)從原始訓(xùn)練集中隨機產(chǎn)生N個訓(xùn)練子集用于隨機生成N顆決策樹。(5)在構(gòu)建具體的決策樹過程中隨機地選擇m個屬性,隨機森林的生成過程中這兩個隨機性,可以確保不會出現(xiàn)過擬合(over-fitting)。 sklearn提供了RF分類器,其原型如下: class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=gi

17、ni, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=auto, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)7.4 Boos

18、ting1990年,R. Schapire給出了肯定的答案,通過組合三個弱學(xué)習(xí)器實現(xiàn)了一個強學(xué)習(xí)器,促進了提升(Boosting)算法的極大發(fā)展。Boosting算法分為如下兩個階段。訓(xùn)練階段。給定一個大訓(xùn)練集X,隨機地將其劃分為3個子集X=X1,X2,X3。首先,使用X1訓(xùn)練的d1;接著,提取X2并將它作為d1的輸入,將d1錯誤分類的所有實例以及X2中被d1正確分類的一些實例一起作為d2的訓(xùn)練集;然后,提取X3并將它輸入給d1和d2,其中用d1和d2輸出不一致的實例作為d3的訓(xùn)練集。檢驗階段。給定一個實例,首先將其提供給d1和d2,如果二者輸出一致,這就是輸出結(jié)果,否則d3的輸出作為輸出結(jié)果

19、。7.4 Boosting7.4.1 AdaBoost盡管Boosting非常成功,但是需要一個非常大的訓(xùn)練樣本集,將樣本集一分為三。(很多場合不太現(xiàn)實)1996年,Yoav Freund和Robert Schapire提出了提升的一個變種,即自適應(yīng)提升(Adaptive Boosting,AdaBoost),它重復(fù)使用相同的訓(xùn)練集,而不再要求很大的數(shù)據(jù)集。AdaBoost算法的工作機制首先,訓(xùn)練集用初始權(quán)重訓(xùn)練出一個弱學(xué)習(xí)器1,根據(jù)弱學(xué)習(xí)的學(xué)習(xí)誤差率表現(xiàn)來更新訓(xùn)練樣本的權(quán)重,使得之前弱學(xué)習(xí)器1學(xué)習(xí)誤差率高的訓(xùn)練樣本點的權(quán)重變高,使得這些誤差率高的點在后面的弱學(xué)習(xí)器2中得到更多的重視。然后,基

20、于調(diào)整權(quán)重后的訓(xùn)練集來訓(xùn)練弱學(xué)習(xí)器2,如此重復(fù)進行,直到訓(xùn)練到指定的弱學(xué)習(xí)器數(shù)量。最后,將這些弱學(xué)習(xí)器通過集合策略進行整合,得到最終的強學(xué)習(xí)器。7.4 Boosting7.4.1 AdaBoostBoosting7.4.1 AdaBoostingBoosting7.4.1 AdaBoosting7.4 Boosting7.4.1 AdaBoost,標準的AdaBoost算法模型是二分類的加法模型,其中損失函數(shù)為指數(shù)函數(shù),學(xué)習(xí)方法為前向分步算法。在AdaBoost中,盡管不同的基學(xué)習(xí)器使用稍有差異的訓(xùn)練集,但是這種差異不像Bagging那樣完全依靠偶然性,而是它前一個基學(xué)習(xí)器誤差的函數(shù)。提升對一

21、個特定問題的實際性能顯然依賴于訓(xùn)練數(shù)據(jù)集和基學(xué)習(xí)器。為此,需要有足夠的訓(xùn)練數(shù)據(jù),并且學(xué)習(xí)器應(yīng)當是弱的但又不是太弱,而且提升對噪聲和離群點尤其敏感。 Sklearn提供的AdaBoost分類器實現(xiàn)了SAMME和SAMME.R算法,原型如下:class sklearn.ensemble.AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, algorithm=SAMME.R, random_state=None)7.4 Boosting SAMME和SAMME.R算法的主要參數(shù)base_estimat

22、or:對象,默認值為決策樹。該基礎(chǔ)分類器必須支持帶樣本權(quán)重的學(xué)習(xí)。n_estimators:整型,默認值為50。設(shè)定基分類器數(shù)量的上限值,如果訓(xùn)練集已經(jīng)完全訓(xùn)練好了,算法會提前終止。learning_rate:浮點型,默認值為1。用于減少每一步的步長,防止步長太大而跨過極值點。通常在learning_rate和n_estimators之間會有一個折中。algorithm:SAMME.R,SAMME,默認值為SAMME.R。 首先使用sklearn的make_Hastie_10_2生成12000個樣本的數(shù)據(jù)集,并將其分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集。然后,在基決策樹、決策樹、AdaBoost(SAMM

23、E)和AdaBoost(SAMME.R)上計算分類的錯誤率。 7.4 Boosting 從實驗結(jié)果看出,弱分類器(Decision Tree Stump)單獨分類的效果很差,錯誤率將近50%,強分類器(Decision Tree)的效果要明顯好于它。但是AdaBoost的效果要明顯好于這兩者。同時在AdaBoost中,Real AdaBoost的分類效果更好。7.4 Boosting 梯度提升(Gradient Boosting)是一種用于回歸和分類問題的機器學(xué)習(xí)方法,生成一個由弱預(yù)測模型(通常是決策樹)組成的集成預(yù)測模型(強學(xué)習(xí)器)。通過迭代選擇一個指向負梯度方向上的函數(shù)(弱假設(shè)),優(yōu)化函數(shù)

24、空間上的成本函數(shù),擬合一棵決策樹。在回歸問題中,這稱為梯度提升回歸樹GBRT;在分類問題中,這又被稱為提升決策樹GBDT。 7.4.2 Gradient Boosting7.4 Boosting7.4.2 Gradient BoostingBoosting7.4.2 Gradient BoostingBoosting7.4.2 Gradient Boosting7.4 Boosting7.4.2 Gradient Boosting GBDT可用于回歸問題,相對Logistic Regression僅能用于線性回歸,GBDT能用于線性回歸和非線性回歸,GBDT的適用面更廣。GBDT也可用于二分類

25、問題(設(shè)定閾值,大于閾值為正例,反之為負例)。 Sklearn提供的GBDT的實現(xiàn)類原型如下: class sklearn.ensemble.GradientBoostingClassifier(loss=deviance, learning_rate=0.1, n_estimators=100, subsample=1.0, criterion=friedman_mse, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_decrease=0.0,

26、min_impurity_split=None, init=None, random_state=None, max_features=None,verbose=0, max_leaf_nodes=None,warm_start=False,presort=auto)7.4 Boosting7.4.2 Gradient Boosting 主要參數(shù)如下:7.4 Boosting 運行效果如下: 針對GradientBoostingClassifier中的learning_rate參數(shù)的不同取值,分別構(gòu)造一顆梯度提升分類學(xué)習(xí)器,并在手寫體數(shù)字數(shù)據(jù)集上進行訓(xùn)練并測試。從圖中,可以看到,GBDT的預(yù)測

27、準確率對于學(xué)習(xí)率來說,總體上是平穩(wěn)的。7.5 綜合案例 集成學(xué)習(xí)是機器學(xué)習(xí)中的一種“集大成”的學(xué)習(xí)方法,下面給出一個示例程序,來比較幾種典型的機器學(xué)習(xí)算法在不同數(shù)據(jù)集上的性能差異。程序如下:import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.colors import ListedColormapfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScalerfrom sklearn

28、.datasets import make_moons, make_circles, make_classificationfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.svm import SVCfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.ensemble import RandomForestClassifier, AdaBoostClassifierfrom sklearn.ensemble import GradientBoosti

29、ngClassifierfrom sklearn.naive_bayes import GaussianNBfrom sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDAfrom sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis as QDA7.5 綜合案例h = .02 # 網(wǎng)格的步長# 分類的名稱列表,及其對應(yīng)的對象列表names = Nearest Neighbors, Linear SVM, RBF SVM, Dec

30、ision Tree,GBDT, Random Forest, AdaBoost, Naive Bayes, LDA, QDAclassifiers = KNeighborsClassifier(3), SVC(kernel=linear, C=0.025), SVC(gamma=2, C=1), DecisionTreeClassifier(max_depth=5), GradientBoostingClassifier(max_depth=5), RandomForestClassifier(max_depth=5, n_estimators=10, max_features=1), Ad

31、aBoostClassifier(), GaussianNB(), LDA(), QDA()7.5 綜合案例# 生成樣本數(shù)據(jù)集X, y = make_classification(n_features=2, n_redundant=0, n_informative=2, random_state=1, n_clusters_per_class=1)rng = np.random.RandomState(2)X += 2 * rng.uniform(size=X.shape)linearly_separable = (X, y)datasets = make_moons(noise=0.3, r

32、andom_state=0), make_circles(noise=0.2, factor=0.5, random_state=1), linearly_separable figure = plt.figure(figsize=(27, 9)i = 1# 依次處理每一個數(shù)據(jù)集,在每個數(shù)據(jù)集上分別用前面列舉的10種分類方法for ds in datasets: # 將每個數(shù)據(jù)集劃分為訓(xùn)練集和測試集 X, y = ds X = StandardScaler().fit_transform(X) X_train, X_test, y_train, y_test = train_test_spli

33、t(X, y, test_size=.4) x_min, x_max = X:, 0.min() - .5, X:, 0.max() + .5 y_min, y_max = X:, 1.min() - .5, X:, 1.max() + .5 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h) # 繪制原始數(shù)據(jù) cm = plt.cm.RdBu cm_bright = ListedColormap(#FF0000, #0000FF) ax = plt.subplot(len(datasets),

34、 len(classifiers) + 1, i) # 分別繪制訓(xùn)練數(shù)據(jù)集、測試數(shù)據(jù)集 ax.scatter(X_train:, 0, X_train:, 1, c=y_train, cmap=cm_bright) ax.scatter(X_test:, 0, X_test:, 1, c=y_test, cmap=cm_bright, alpha=0.6) ax.set_xlim(xx.min(), xx.max() ax.set_ylim(yy.min(), yy.max() ax.set_xticks() ax.set_yticks() i += 17.5 綜合案例7.5 綜合案例 # 迭代使用上述10種分類方法 for name, clf in zip(names, classifiers): ax = plt.subplot(len(datasets), len(classifiers) + 1, i) clf

溫馨提示

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

評論

0/150

提交評論