機(jī)器學(xué)習(xí):監(jiān)督學(xué)習(xí):機(jī)器學(xué)習(xí)導(dǎo)論_第1頁
機(jī)器學(xué)習(xí):監(jiān)督學(xué)習(xí):機(jī)器學(xué)習(xí)導(dǎo)論_第2頁
機(jī)器學(xué)習(xí):監(jiān)督學(xué)習(xí):機(jī)器學(xué)習(xí)導(dǎo)論_第3頁
機(jī)器學(xué)習(xí):監(jiān)督學(xué)習(xí):機(jī)器學(xué)習(xí)導(dǎo)論_第4頁
機(jī)器學(xué)習(xí):監(jiān)督學(xué)習(xí):機(jī)器學(xué)習(xí)導(dǎo)論_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

機(jī)器學(xué)習(xí):監(jiān)督學(xué)習(xí):機(jī)器學(xué)習(xí)導(dǎo)論1機(jī)器學(xué)習(xí)基礎(chǔ)1.1什么是機(jī)器學(xué)習(xí)1.1.1機(jī)器學(xué)習(xí)的定義機(jī)器學(xué)習(xí)(MachineLearning)是人工智能(AI)的一個分支,它使計(jì)算機(jī)能夠在沒有明確編程的情況下從數(shù)據(jù)中學(xué)習(xí)并做出預(yù)測或決策。機(jī)器學(xué)習(xí)的核心在于構(gòu)建算法,這些算法可以從數(shù)據(jù)中自動“學(xué)習(xí)”模式和特征,然后利用這些學(xué)習(xí)到的知識對新的數(shù)據(jù)進(jìn)行分析和預(yù)測。1.1.2機(jī)器學(xué)習(xí)的應(yīng)用領(lǐng)域圖像識別:如人臉識別、車牌識別。自然語言處理:如語音識別、機(jī)器翻譯。推薦系統(tǒng):如電影推薦、商品推薦。醫(yī)療診斷:如疾病預(yù)測、病理分析。金融分析:如信用評分、市場預(yù)測。1.2監(jiān)督學(xué)習(xí)概述1.2.1監(jiān)督學(xué)習(xí)的定義監(jiān)督學(xué)習(xí)是一種機(jī)器學(xué)習(xí)方法,其中算法通過學(xué)習(xí)帶有標(biāo)簽的訓(xùn)練數(shù)據(jù)來預(yù)測新數(shù)據(jù)的標(biāo)簽。訓(xùn)練數(shù)據(jù)包括輸入特征和對應(yīng)的輸出標(biāo)簽,算法的目標(biāo)是找到輸入特征與輸出標(biāo)簽之間的關(guān)系,從而能夠?qū)ξ粗獢?shù)據(jù)進(jìn)行準(zhǔn)確預(yù)測。1.2.2監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí)的區(qū)別監(jiān)督學(xué)習(xí):需要有標(biāo)簽的訓(xùn)練數(shù)據(jù),目標(biāo)是預(yù)測新數(shù)據(jù)的標(biāo)簽。無監(jiān)督學(xué)習(xí):使用無標(biāo)簽數(shù)據(jù),目標(biāo)是發(fā)現(xiàn)數(shù)據(jù)中的結(jié)構(gòu)或模式,如聚類。1.3示例:線性回歸線性回歸是一種基本的監(jiān)督學(xué)習(xí)算法,用于預(yù)測連續(xù)值的輸出。下面是一個使用Python和scikit-learn庫實(shí)現(xiàn)線性回歸的例子。#導(dǎo)入必要的庫

importnumpyasnp

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.linear_modelimportLinearRegression

fromsklearn.metricsimportmean_squared_error

#創(chuàng)建數(shù)據(jù)集

#假設(shè)我們有房價(jià)預(yù)測的數(shù)據(jù),其中特征是房屋的面積,標(biāo)簽是房屋的價(jià)格

np.random.seed(0)

X=np.random.rand(100,1)*1000#生成100個隨機(jī)面積,范圍在0到1000之間

y=2*X+1+np.random.randn(100,1)*10#生成價(jià)格,基于面積的線性關(guān)系,加上一些隨機(jī)噪聲

#劃分?jǐn)?shù)據(jù)集為訓(xùn)練集和測試集

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)

#創(chuàng)建線性回歸模型

model=LinearRegression()

#訓(xùn)練模型

model.fit(X_train,y_train)

#預(yù)測

y_pred=model.predict(X_test)

#計(jì)算預(yù)測誤差

mse=mean_squared_error(y_test,y_pred)

print(f"MeanSquaredError:{mse}")

#解釋模型

print(f"模型的斜率:{model.coef_}")

print(f"模型的截距:{ercept_}")在這個例子中,我們首先生成了一個簡單的數(shù)據(jù)集,其中包含房屋面積和價(jià)格。然后,我們使用train_test_split函數(shù)將數(shù)據(jù)集劃分為訓(xùn)練集和測試集。接下來,我們創(chuàng)建了一個LinearRegression模型,并使用訓(xùn)練集數(shù)據(jù)對其進(jìn)行訓(xùn)練。最后,我們使用測試集數(shù)據(jù)評估模型的性能,并輸出模型的斜率和截距,這些參數(shù)可以幫助我們理解模型是如何從數(shù)據(jù)中學(xué)習(xí)的。監(jiān)督學(xué)習(xí)是機(jī)器學(xué)習(xí)中最常見的類型之一,它在許多實(shí)際應(yīng)用中都發(fā)揮著重要作用,如預(yù)測分析、分類任務(wù)等。通過理解監(jiān)督學(xué)習(xí)的基本概念和實(shí)現(xiàn),我們可以更好地應(yīng)用機(jī)器學(xué)習(xí)技術(shù)解決實(shí)際問題。2監(jiān)督學(xué)習(xí)模型2.1線性回歸2.1.1線性回歸原理線性回歸是一種用于預(yù)測連續(xù)值輸出的監(jiān)督學(xué)習(xí)算法。它假設(shè)輸入特征與輸出之間存在線性關(guān)系,通過擬合最佳線性方程來預(yù)測輸出。線性回歸模型可以表示為:y其中,y是預(yù)測的目標(biāo)值,x1,x2.1.2最小二乘法與梯度下降最小二乘法是一種用于估計(jì)線性回歸模型參數(shù)的方法,目標(biāo)是最小化預(yù)測值與實(shí)際值之間的平方誤差之和。梯度下降則是一種迭代優(yōu)化算法,用于最小化損失函數(shù),找到參數(shù)的最優(yōu)值。示例:使用梯度下降法進(jìn)行線性回歸importnumpyasnp

importmatplotlib.pyplotasplt

#生成模擬數(shù)據(jù)

np.random.seed(0)

X=2*np.random.rand(100,1)

y=4+3*X+np.random.randn(100,1)

#梯度下降函數(shù)

defgradient_descent(X,y,theta,alpha,num_iters):

m=len(y)

J_history=np.zeros(num_iters)

foriinrange(num_iters):

predictions=X.dot(theta)

error=np.dot(X.transpose(),(predictions-y))

theta=theta-alpha*(1/m)*error

J_history[i]=compute_cost(X,y,theta)

returntheta,J_history

#計(jì)算損失函數(shù)

defcompute_cost(X,y,theta):

m=len(y)

predictions=X.dot(theta)

square_err=(predictions-y)**2

return1/(2*m)*np.sum(square_err)

#初始化參數(shù)

theta=np.random.randn(2,1)

alpha=0.01

num_iters=1000

#添加偏置項(xiàng)

X_b=np.c_[np.ones((100,1)),X]

#運(yùn)行梯度下降

theta,J_history=gradient_descent(X_b,y,theta,alpha,num_iters)

#繪制結(jié)果

plt.scatter(X,y)

X_new=np.array([[0],[2]])

X_new_b=np.c_[np.ones((2,1)),X_new]

y_predict=X_new_b.dot(theta)

plt.plot(X_new,y_predict,"r-")

plt.show()2.2邏輯回歸2.2.1邏輯回歸原理邏輯回歸用于分類問題,尤其是二分類問題。它使用Sigmoid函數(shù)將線性回歸的輸出轉(zhuǎn)換為概率值,預(yù)測事件發(fā)生的可能性。h2.2.2最大似然估計(jì)與梯度下降最大似然估計(jì)用于估計(jì)邏輯回歸模型的參數(shù),通過最大化似然函數(shù)來找到參數(shù)的最優(yōu)值。梯度下降同樣可以用于優(yōu)化邏輯回歸的參數(shù)。示例:使用梯度下降法進(jìn)行邏輯回歸importnumpyasnp

fromsklearnimportdatasets

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.preprocessingimportStandardScaler

#加載數(shù)據(jù)集

iris=datasets.load_iris()

X=iris.data[:,[2,3]]

y=iris.target

#數(shù)據(jù)預(yù)處理

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=1,stratify=y)

sc=StandardScaler()

sc.fit(X_train)

X_train_std=sc.transform(X_train)

X_test_std=sc.transform(X_test)

#梯度下降函數(shù)

defsigmoid(z):

return1.0/(1.0+np.exp(-z))

defcost_1(z):

return-np.log(sigmoid(z))

defcost_0(z):

return-np.log(1-sigmoid(z))

deflogistic_cost(y,y_pred):

returnnp.mean(cost_1(y_pred)*y+cost_0(y_pred)*(1-y))

deflogistic_regression(X,y,theta,alpha,num_iters):

m=len(y)

J_history=np.zeros(num_iters)

foriinrange(num_iters):

z=np.dot(X,theta)

h=sigmoid(z)

gradient=np.dot(X.T,(h-y))/m

theta=theta-alpha*gradient

J_history[i]=logistic_cost(y,h)

returntheta,J_history

#初始化參數(shù)

theta=np.zeros(X_train_std.shape[1])

alpha=0.001

num_iters=1000

#運(yùn)行邏輯回歸

theta,J_history=logistic_regression(X_train_std,y_train,theta,alpha,num_iters)

#繪制決策邊界

defplot_decision_regions(X,y,classifier,resolution=0.02):

markers=('s','x','o','^','v')

colors=('red','blue','lightgreen','gray','cyan')

cmap=ListedColormap(colors[:len(np.unique(y))])

x1_min,x1_max=X[:,0].min()-1,X[:,0].max()+1

x2_min,x2_max=X[:,1].min()-1,X[:,1].max()+1

xx1,xx2=np.meshgrid(np.arange(x1_min,x1_max,resolution),

np.arange(x2_min,x2_max,resolution))

Z=classifier.predict(np.array([xx1.ravel(),xx2.ravel()]).T)

Z=Z.reshape(xx1.shape)

plt.contourf(xx1,xx2,Z,alpha=0.4,cmap=cmap)

plt.xlim(xx1.min(),xx1.max())

plt.ylim(xx2.min(),xx2.max())

foridx,clinenumerate(np.unique(y)):

plt.scatter(x=X[y==cl,0],y=X[y==cl,1],alpha=0.8,c=cmap(idx),marker=markers[idx],label=cl)

plot_decision_regions(X_train_std,y_train,classifier=LogisticRegression(theta=theta))

plt.xlabel('petallength[standardized]')

plt.ylabel('petalwidth[standardized]')

plt.legend(loc='upperleft')

plt.show()2.3決策樹2.3.1決策樹原理決策樹是一種樹形結(jié)構(gòu)的分類和回歸算法,通過遞歸地選擇最佳特征進(jìn)行分割,構(gòu)建一棵樹模型。每個內(nèi)部節(jié)點(diǎn)表示一個特征上的測試,每個分支表示一個測試結(jié)果,每個葉節(jié)點(diǎn)表示一個類別或輸出值。2.3.2ID3算法與C4.5算法ID3算法使用信息增益作為特征選擇的依據(jù),而C4.5算法則使用信息增益比。C4.5算法還處理了連續(xù)特征和缺失值,是ID3算法的改進(jìn)版本。2.4支持向量機(jī)2.4.1支持向量機(jī)原理支持向量機(jī)(SVM)是一種用于分類和回歸的監(jiān)督學(xué)習(xí)算法,通過尋找一個超平面來最大化不同類別之間的間隔。硬間隔SVM用于線性可分的數(shù)據(jù),而軟間隔SVM則允許一定程度的分類錯誤,適用于非線性可分的數(shù)據(jù)。2.4.2硬間隔與軟間隔硬間隔SVM要求所有樣本點(diǎn)都嚴(yán)格滿足分類條件,即所有樣本點(diǎn)都位于分類超平面的正確一側(cè)。軟間隔SVM通過引入松弛變量,允許一些樣本點(diǎn)位于錯誤的一側(cè),從而處理非線性可分的數(shù)據(jù)。示例:使用軟間隔SVM進(jìn)行分類importnumpyasnp

importmatplotlib.pyplotasplt

fromsklearnimportsvm

#生成模擬數(shù)據(jù)

np.random.seed(0)

X=np.r_[np.random.randn(20,2)-[2,2],np.random.randn(20,2)+[2,2]]

Y=[0]*20+[1]*20

#創(chuàng)建SVM分類器

clf=svm.SVC(kernel='linear',C=1.0)

#訓(xùn)練模型

clf.fit(X,Y)

#繪制決策邊界

defmake_meshgrid(x,y,h=.02):

x_min,x_max=x.min()-1,x.max()+1

y_min,y_max=y.min()-1,y.max()+1

xx,yy=np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h))

returnxx,yy

defplot_contours(ax,clf,xx,yy,**params):

Z=clf.predict(np.c_[xx.ravel(),yy.ravel()])

Z=Z.reshape(xx.shape)

out=ax.contourf(xx,yy,Z,**params)

returnout

#繪制決策邊界

X0,X1=X[:,0],X[:,1]

xx,yy=make_meshgrid(X0,X1)

plot_contours(plt,clf,xx,yy,cmap=plt.cm.coolwarm,alpha=0.8)

plt.scatter(X0,X1,c=Y,cmap=plt.cm.coolwarm,s=20,edgecolors='k')

plt.show()以上示例展示了如何使用Python的scikit-learn庫中的SVM分類器進(jìn)行分類,并繪制決策邊界。通過調(diào)整C參數(shù),可以控制模型的復(fù)雜度,C越小,模型越傾向于軟間隔。3模型評估與選擇3.1模型評估指標(biāo)3.1.1準(zhǔn)確率準(zhǔn)確率(Accuracy)是分類模型中最直觀的評估指標(biāo),它衡量的是模型正確分類的樣本數(shù)占總樣本數(shù)的比例。準(zhǔn)確率高意味著模型在多數(shù)情況下能夠做出正確的預(yù)測,但并不總是意味著模型性能好,特別是在類別不平衡的數(shù)據(jù)集上。示例代碼假設(shè)我們有一個二分類問題,使用邏輯回歸模型進(jìn)行預(yù)測:fromsklearn.datasetsimportmake_classification

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.linear_modelimportLogisticRegression

fromsklearn.metricsimportaccuracy_score

#生成數(shù)據(jù)集

X,y=make_classification(n_samples=1000,n_features=20,n_informative=2,n_redundant=10,random_state=42)

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)

#訓(xùn)練模型

model=LogisticRegression()

model.fit(X_train,y_train)

#預(yù)測

y_pred=model.predict(X_test)

#計(jì)算準(zhǔn)確率

accuracy=accuracy_score(y_test,y_pred)

print(f'準(zhǔn)確率:{accuracy}')3.1.2精確率與召回率精確率(Precision)和召回率(Recall)是評估分類模型性能的兩個重要指標(biāo),特別是在處理不平衡數(shù)據(jù)集時(shí)。精確率衡量的是預(yù)測為正類的樣本中,實(shí)際為正類的比例。召回率衡量的是實(shí)際為正類的樣本中,被模型正確預(yù)測為正類的比例。示例代碼使用相同的邏輯回歸模型,我們可以計(jì)算精確率和召回率:fromsklearn.metricsimportprecision_score,recall_score

#計(jì)算精確率和召回率

precision=precision_score(y_test,y_pred)

recall=recall_score(y_test,y_pred)

print(f'精確率:{precision}')

print(f'召回率:{recall}')3.1.3F1分?jǐn)?shù)F1分?jǐn)?shù)是精確率和召回率的調(diào)和平均數(shù),它提供了一個單一的指標(biāo)來評估模型的性能。F1分?jǐn)?shù)高意味著模型在精確率和召回率上都有較好的表現(xiàn)。示例代碼繼續(xù)使用邏輯回歸模型,我們可以計(jì)算F1分?jǐn)?shù):fromsklearn.metricsimportf1_score

#計(jì)算F1分?jǐn)?shù)

f1=f1_score(y_test,y_pred)

print(f'F1分?jǐn)?shù):{f1}')3.2交叉驗(yàn)證3.2.1K折交叉驗(yàn)證K折交叉驗(yàn)證(K-FoldCrossValidation)是一種評估模型性能的方法,它將數(shù)據(jù)集分為K個子集,每次將其中一個子集作為測試集,其余子集作為訓(xùn)練集,進(jìn)行K次訓(xùn)練和測試,最后將K次的評估結(jié)果平均,以減少評估的方差。示例代碼使用sklearn的KFold進(jìn)行K折交叉驗(yàn)證:fromsklearn.model_selectionimportKFold,cross_val_score

#定義K折交叉驗(yàn)證

kfold=KFold(n_splits=5,shuffle=True,random_state=42)

#使用cross_val_score計(jì)算交叉驗(yàn)證得分

scores=cross_val_score(model,X,y,cv=kfold)

print(f'交叉驗(yàn)證得分:{scores.mean()}')3.2.2留一交叉驗(yàn)證留一交叉驗(yàn)證(Leave-One-OutCrossValidation)是K折交叉驗(yàn)證的一個特例,其中K等于樣本數(shù)。這意味著每次只有一個樣本作為測試集,其余樣本作為訓(xùn)練集,進(jìn)行多次訓(xùn)練和測試,直到每個樣本都被用作一次測試。示例代碼使用sklearn的LeaveOneOut進(jìn)行留一交叉驗(yàn)證:fromsklearn.model_selectionimportLeaveOneOut

#定義留一交叉驗(yàn)證

loo=LeaveOneOut()

#使用cross_val_score計(jì)算交叉驗(yàn)證得分

scores=cross_val_score(model,X,y,cv=loo)

print(f'留一交叉驗(yàn)證得分:{scores.mean()}')3.3模型選擇3.3.1過擬合與欠擬合過擬合(Overfitting)和欠擬合(Underfitting)是模型選擇時(shí)需要避免的兩個極端。過擬合意味著模型在訓(xùn)練數(shù)據(jù)上表現(xiàn)很好,但在未見過的數(shù)據(jù)上表現(xiàn)較差。欠擬合則意味著模型在訓(xùn)練數(shù)據(jù)上表現(xiàn)就不好,可能是因?yàn)槟P吞唵?,無法捕捉數(shù)據(jù)的復(fù)雜性。示例代碼通過調(diào)整模型的復(fù)雜度,我們可以觀察過擬合和欠擬合的現(xiàn)象:#創(chuàng)建不同復(fù)雜度的模型

models=[LogisticRegression(penalty='none'),LogisticRegression(penalty='l2',C=0.01)]

#計(jì)算訓(xùn)練集和測試集上的得分

formodelinmodels:

model.fit(X_train,y_train)

train_score=model.score(X_train,y_train)

test_score=model.score(X_test,y_test)

print(f'訓(xùn)練集得分:{train_score},測試集得分:{test_score}')3.3.2正則化技術(shù)正則化技術(shù)(Regularization)是一種防止過擬合的方法,它通過在損失函數(shù)中添加一個懲罰項(xiàng),來限制模型的復(fù)雜度。常見的正則化技術(shù)有L1正則化和L2正則化。示例代碼使用L2正則化技術(shù)調(diào)整模型復(fù)雜度:#使用L2正則化的邏輯回歸模型

model=LogisticRegression(penalty='l2',C=0.1)

model.fit(X_train,y_train)

#計(jì)算訓(xùn)練集和測試集上的得分

train_score=model.score(X_train,y_train)

test_score=model.score(X_test,y_test)

print(f'訓(xùn)練集得分:{train_score},測試集得分:{test_score}')通過上述代碼示例,我們可以看到如何在監(jiān)督學(xué)習(xí)中使用不同的評估指標(biāo)和交叉驗(yàn)證技術(shù),以及如何通過正則化技術(shù)來調(diào)整模型的復(fù)雜度,避免過擬合和欠擬合的問題。4監(jiān)督學(xué)習(xí)實(shí)戰(zhàn)4.1數(shù)據(jù)預(yù)處理4.1.1數(shù)據(jù)清洗數(shù)據(jù)清洗是監(jiān)督學(xué)習(xí)中至關(guān)重要的第一步,它涉及處理數(shù)據(jù)集中的缺失值、異常值和重復(fù)值。下面是一個使用Python和Pandas庫進(jìn)行數(shù)據(jù)清洗的例子。importpandasaspd

importnumpyasnp

#創(chuàng)建一個包含缺失值和異常值的示例數(shù)據(jù)集

data={'年齡':[25,30,np.nan,45,50,150],

'收入':[50000,60000,70000,80000,np.nan,90000],

'性別':['男','女','男','女','男','女']}

df=pd.DataFrame(data)

#處理缺失值

df['年齡'].fillna(df['年齡'].mean(),inplace=True)

df['收入'].fillna(df['收入'].median(),inplace=True)

#處理異常值

df=df[df['年齡']<100]

#輸出清洗后的數(shù)據(jù)

print(df)4.1.2特征選擇與工程特征選擇幫助我們識別哪些特征對模型預(yù)測最有價(jià)值,而特征工程則涉及創(chuàng)建新的特征或轉(zhuǎn)換現(xiàn)有特征以提高模型性能。以下是一個特征選擇和工程的例子。fromsklearn.datasetsimportload_iris

fromsklearn.feature_selectionimportSelectKBest,f_classif

fromsklearn.preprocessingimportStandardScaler

#加載Iris數(shù)據(jù)集

iris=load_iris()

X,y=iris.data,iris.target

#特征選擇

selector=SelectKBest(score_func=f_classif,k=2)

X_new=selector.fit_transform(X,y)

#特征工程:標(biāo)準(zhǔn)化

scaler=StandardScaler()

X_scaled=scaler.fit_transform(X_new)

#輸出處理后的特征

print(X_scaled)4.2模型訓(xùn)練與調(diào)優(yōu)4.2.1超參數(shù)調(diào)優(yōu)超參數(shù)調(diào)優(yōu)是通過調(diào)整模型的超參數(shù)來優(yōu)化模型性能的過程。以下是一個使用隨機(jī)森林分類器進(jìn)行超參數(shù)調(diào)優(yōu)的例子。fromsklearn.ensembleimportRandomForestClassifier

fromsklearn.model_selectionimportGridSearchCV

#創(chuàng)建隨機(jī)森林分類器實(shí)例

clf=RandomForestClassifier()

#定義要調(diào)優(yōu)的超參數(shù)

param_grid={

'n_estimators':[10,50,100],

'max_depth':[None,10,20],

'min_samples_split':[2,5,10]

}

#使用GridSearchCV進(jìn)行超參數(shù)調(diào)優(yōu)

grid_search=GridS

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論