版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
人工智能和機器學(xué)習(xí)之分類算法:隨機森林:數(shù)據(jù)預(yù)處理與特征工程1人工智能和機器學(xué)習(xí)之分類算法:隨機森林1.1隨機森林簡介1.1.11隨機森林的基本概念隨機森林(RandomForest)是一種集成學(xué)習(xí)方法,由LeoBreiman在2001年提出。它通過構(gòu)建多個決策樹并綜合它們的預(yù)測結(jié)果來提高模型的準確性和穩(wěn)定性。隨機森林中的“隨機”體現(xiàn)在兩個方面:一是隨機選擇樣本,二是隨機選擇特征。這種隨機性使得隨機森林能夠有效減少過擬合,提高模型的泛化能力。1.1.22隨機森林的工作原理隨機森林的工作原理基于兩個關(guān)鍵概念:袋裝法(BootstrapAggregating,簡稱Bagging)和隨機特征選擇。袋裝法:從原始數(shù)據(jù)集中通過有放回抽樣方式生成多個子數(shù)據(jù)集,每個子數(shù)據(jù)集用于訓(xùn)練一個決策樹。這樣,每個決策樹都基于不同的數(shù)據(jù)子集,增加了模型的多樣性。隨機特征選擇:在構(gòu)建每個決策樹的節(jié)點時,不是從所有特征中選擇最佳分割特征,而是從所有特征中隨機選擇一個子集,然后從這個子集中選擇最佳分割特征。這進一步增加了模型的隨機性和多樣性。預(yù)測:對于分類任務(wù),隨機森林通過多數(shù)投票的方式?jīng)Q定最終的分類結(jié)果,即所有決策樹的預(yù)測結(jié)果中出現(xiàn)次數(shù)最多的類別作為最終預(yù)測。1.1.33隨機森林在分類任務(wù)中的應(yīng)用隨機森林在分類任務(wù)中表現(xiàn)出色,尤其在處理高維數(shù)據(jù)和具有大量特征的數(shù)據(jù)集時。下面通過一個具體的例子來展示如何使用隨機森林進行分類。示例:使用隨機森林進行鳶尾花分類首先,我們需要導(dǎo)入必要的庫和數(shù)據(jù)集:#導(dǎo)入所需庫
fromsklearn.datasetsimportload_iris
fromsklearn.ensembleimportRandomForestClassifier
fromsklearn.model_selectionimporttrain_test_split
fromsklearn.metricsimportaccuracy_score
#加載鳶尾花數(shù)據(jù)集
iris=load_iris()
X=iris.data
y=iris.target接下來,我們將數(shù)據(jù)集分為訓(xùn)練集和測試集:#劃分訓(xùn)練集和測試集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)然后,創(chuàng)建隨機森林分類器并訓(xùn)練模型:#創(chuàng)建隨機森林分類器
rf=RandomForestClassifier(n_estimators=100,random_state=42)
#訓(xùn)練模型
rf.fit(X_train,y_train)最后,使用模型進行預(yù)測并評估模型的準確性:#預(yù)測測試集
y_pred=rf.predict(X_test)
#計算準確率
accuracy=accuracy_score(y_test,y_pred)
print(f"模型的準確率為:{accuracy}")在這個例子中,我們使用了sklearn庫中的RandomForestClassifier類來構(gòu)建隨機森林模型。通過調(diào)整n_estimators參數(shù),我們可以控制隨機森林中決策樹的數(shù)量。模型訓(xùn)練完成后,我們使用測試集來評估模型的性能,準確率是一個常用的評估指標。隨機森林不僅在分類任務(wù)中表現(xiàn)優(yōu)秀,還能夠處理回歸任務(wù),同時它還具有特征重要性評估的能力,這在特征工程中非常有用。在接下來的章節(jié)中,我們將深入探討數(shù)據(jù)預(yù)處理和特征工程在隨機森林中的應(yīng)用。2數(shù)據(jù)預(yù)處理2.11數(shù)據(jù)清洗:處理缺失值和異常值數(shù)據(jù)清洗是數(shù)據(jù)預(yù)處理的第一步,主要涉及處理數(shù)據(jù)集中的缺失值和異常值。這一步驟對于確保模型訓(xùn)練的準確性和可靠性至關(guān)重要。2.1.1處理缺失值缺失值的處理方法包括刪除、填充和預(yù)測。在Python中,我們常用pandas庫來操作數(shù)據(jù)。示例:使用pandas填充缺失值importpandasaspd
importnumpyasnp
#創(chuàng)建一個包含缺失值的數(shù)據(jù)框
data={
'A':[1,2,np.nan,4],
'B':[5,np.nan,np.nan,8],
'C':[9,10,11,12]
}
df=pd.DataFrame(data)
#使用平均值填充缺失值
df.fillna(df.mean(),inplace=True)
#輸出處理后的數(shù)據(jù)框
print(df)2.1.2處理異常值異常值的檢測和處理可以通過統(tǒng)計方法或機器學(xué)習(xí)方法進行。這里我們介紹使用IQR(四分位數(shù)范圍)來檢測異常值。示例:使用IQR檢測并處理異常值importpandasaspd
importnumpyasnp
#創(chuàng)建一個包含異常值的數(shù)據(jù)框
data={
'A':[1,2,3,100,5],
'B':[5,6,7,8,9],
'C':[9,10,11,12,13]
}
df=pd.DataFrame(data)
#計算IQR
Q1=df.quantile(0.25)
Q3=df.quantile(0.75)
IQR=Q3-Q1
#檢測異常值
outliers=((df<(Q1-1.5*IQR))|(df>(Q3+1.5*IQR)))
#輸出異常值
print("異常值檢測結(jié)果:")
print(outliers)
#處理異常值,例如將異常值替換為中位數(shù)
df=df.apply(lambdax:x.median()ifx.isin(outliers[])elsex)
#輸出處理后的數(shù)據(jù)框
print("處理異常值后的數(shù)據(jù):")
print(df)2.22數(shù)據(jù)轉(zhuǎn)換:編碼和標準化數(shù)據(jù)轉(zhuǎn)換包括將分類數(shù)據(jù)編碼為數(shù)值數(shù)據(jù),以及對數(shù)值數(shù)據(jù)進行標準化或歸一化。2.2.1編碼分類數(shù)據(jù)對于分類數(shù)據(jù),我們通常使用One-Hot編碼或Label編碼。示例:使用pandas進行One-Hot編碼importpandasaspd
#創(chuàng)建一個包含分類數(shù)據(jù)的數(shù)據(jù)框
data={
'A':['cat','dog','cat','bird'],
'B':['red','blue','green','red']
}
df=pd.DataFrame(data)
#使用One-Hot編碼
df_encoded=pd.get_dummies(df,columns=['A','B'])
#輸出編碼后的數(shù)據(jù)框
print(df_encoded)2.2.2標準化數(shù)值數(shù)據(jù)標準化數(shù)據(jù)可以避免特征之間的量綱差異影響模型的訓(xùn)練結(jié)果。示例:使用scikit-learn進行數(shù)據(jù)標準化fromsklearn.preprocessingimportStandardScaler
importpandasaspd
importnumpyasnp
#創(chuàng)建一個包含數(shù)值數(shù)據(jù)的數(shù)據(jù)框
data={
'A':[1,2,3,4,5],
'B':[10,20,30,40,50],
'C':[100,200,300,400,500]
}
df=pd.DataFrame(data)
#創(chuàng)建標準化器
scaler=StandardScaler()
#對數(shù)據(jù)進行標準化
df_scaled=pd.DataFrame(scaler.fit_transform(df),columns=df.columns)
#輸出標準化后的數(shù)據(jù)框
print(df_scaled)2.33數(shù)據(jù)劃分:訓(xùn)練集與測試集的分離數(shù)據(jù)劃分是將數(shù)據(jù)集分為訓(xùn)練集和測試集,以便評估模型的性能。2.3.1示例:使用scikit-learn進行數(shù)據(jù)劃分fromsklearn.model_selectionimporttrain_test_split
importpandasaspd
#創(chuàng)建一個數(shù)據(jù)框
data={
'A':[1,2,3,4,5],
'B':[10,20,30,40,50],
'C':[100,200,300,400,500],
'target':[0,1,0,1,0]
}
df=pd.DataFrame(data)
#分離特征和目標變量
X=df.drop('target',axis=1)
y=df['target']
#劃分數(shù)據(jù)集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#輸出劃分后的數(shù)據(jù)集大小
print("訓(xùn)練集大?。?,X_train.shape)
print("測試集大?。?,X_test.shape)以上示例展示了如何使用Python和相關(guān)庫進行數(shù)據(jù)預(yù)處理,包括數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)劃分,為隨機森林等機器學(xué)習(xí)算法的訓(xùn)練做好準備。3特征工程基礎(chǔ)3.11特征選擇:相關(guān)性分析與信息增益3.1.1相關(guān)性分析相關(guān)性分析是一種統(tǒng)計方法,用于衡量兩個變量之間的關(guān)系強度。在特征工程中,我們通常使用相關(guān)性分析來識別哪些特征與目標變量(分類標簽)之間存在較強的相關(guān)性,從而決定哪些特征應(yīng)該保留,哪些可以剔除。在Python中,我們可以使用Pandas庫的corr()函數(shù)來計算特征之間的皮爾遜相關(guān)系數(shù)。示例代碼importpandasaspd
importnumpyasnp
fromsklearn.datasetsimportload_iris
#加載數(shù)據(jù)集
iris=load_iris()
df=pd.DataFrame(data=np.c_[iris['data'],iris['target']],
columns=iris['feature_names']+['target'])
#計算相關(guān)性矩陣
correlation_matrix=df.corr()
#顯示相關(guān)性矩陣
print(correlation_matrix['target'].sort_values(ascending=False))3.1.2信息增益信息增益是決策樹算法中用于特征選擇的一種方法,它衡量了特征對分類結(jié)果的貢獻度。在隨機森林中,信息增益同樣可以用來評估特征的重要性。我們可以使用sklearn庫中的DecisionTreeClassifier來計算信息增益。示例代碼fromsklearn.treeimportDecisionTreeClassifier
fromsklearn.model_selectionimporttrain_test_split
fromsklearn.metricsimportaccuracy_score
#劃分數(shù)據(jù)集
X_train,X_test,y_train,y_test=train_test_split(iris.data,iris.target,test_size=0.3,random_state=42)
#創(chuàng)建決策樹分類器
clf=DecisionTreeClassifier(criterion='entropy',random_state=42)
#訓(xùn)練模型
clf.fit(X_train,y_train)
#計算特征重要性(可以視為信息增益)
feature_importances=clf.feature_importances_
#打印特征重要性
forfeature,importanceinzip(iris.feature_names,feature_importances):
print(f"{feature}:{importance}")3.22特征構(gòu)建:組合與衍生新特征特征構(gòu)建是特征工程中的一個重要步驟,它涉及從現(xiàn)有特征中創(chuàng)建新的特征,以提高模型的預(yù)測能力。這可以通過組合特征、衍生新特征或使用領(lǐng)域知識來實現(xiàn)。3.2.1示例代碼#假設(shè)我們有一個包含身高、體重和年齡的數(shù)據(jù)集
data={
'Height':[170,180,160,175,185],
'Weight':[65,80,55,70,90],
'Age':[25,30,20,28,35]
}
df=pd.DataFrame(data)
#創(chuàng)建新特征:BMI(身體質(zhì)量指數(shù))
df['BMI']=df['Weight']/((df['Height']/100)**2)
#顯示新數(shù)據(jù)集
print(df)3.33特征降維:主成分分析與特征重要性評估特征降維是減少數(shù)據(jù)集的維度,同時盡量保留數(shù)據(jù)的有用信息。主成分分析(PCA)是一種常用的降維技術(shù),它通過線性變換將原始特征轉(zhuǎn)換為一組新的正交特征,即主成分。3.3.1示例代碼fromsklearn.decompositionimportPCA
#使用PCA進行特征降維
pca=PCA(n_components=2)
X_pca=pca.fit_transform(iris.data)
#顯示降維后的數(shù)據(jù)
print(X_pca)特征重要性評估是隨機森林的一個優(yōu)勢,它可以幫助我們識別哪些特征對模型的預(yù)測能力貢獻最大。這在特征降維時非常有用,因為我們可以選擇保留那些最重要的特征。3.3.2示例代碼fromsklearn.ensembleimportRandomForestClassifier
#創(chuàng)建隨機森林分類器
rf=RandomForestClassifier(n_estimators=100,random_state=42)
#訓(xùn)練模型
rf.fit(X_train,y_train)
#計算特征重要性
feature_importances=rf.feature_importances_
#打印特征重要性
forfeature,importanceinzip(iris.feature_names,feature_importances):
print(f"{feature}:{importance}")通過以上步驟,我們可以有效地進行特征選擇、構(gòu)建和降維,從而優(yōu)化隨機森林模型的性能。4隨機森林中的特征工程4.11隨機森林特征選擇:基于特征重要性隨機森林算法在訓(xùn)練過程中,每個決策樹都會計算出各個特征的重要性。特征重要性是根據(jù)特征在樹中分裂節(jié)點時的貢獻度來評估的,通常使用的是基尼不純度或信息增益。隨機森林最終的特征重要性是所有樹中特征重要性的平均值?;谶@一特性,我們可以進行特征選擇,移除那些重要性較低的特征,從而簡化模型,提高效率。4.1.1示例代碼fromsklearn.datasetsimportload_iris
fromsklearn.ensembleimportRandomForestClassifier
fromsklearn.model_selectionimporttrain_test_split
#加載數(shù)據(jù)
data=load_iris()
X=data.data
y=data.target
#劃分數(shù)據(jù)集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)
#創(chuàng)建隨機森林分類器
clf=RandomForestClassifier(n_estimators=100,random_state=42)
#訓(xùn)練模型
clf.fit(X_train,y_train)
#獲取特征重要性
importances=clf.feature_importances_
#打印特征重要性
forfeature,importanceinzip(data.feature_names,importances):
print(f"{feature}:{importance}")
#基于特征重要性選擇特征
threshold=0.05
selected_features=[featureforfeature,importanceinzip(data.feature_names,importances)ifimportance>threshold]
print(f"Selectedfeatures:{selected_features}")4.1.2解釋在上述代碼中,我們首先加載了鳶尾花數(shù)據(jù)集,并使用隨機森林分類器進行訓(xùn)練。訓(xùn)練完成后,我們可以通過feature_importances_屬性獲取每個特征的重要性。然后,我們設(shè)定一個閾值(例如0.05),并選擇那些重要性高于閾值的特征進行后續(xù)的模型訓(xùn)練。4.22隨機森林特征構(gòu)建:自動特征組合隨機森林在構(gòu)建決策樹時,會自動地對特征進行組合,以尋找最佳的分裂點。這種自動特征組合的能力,使得隨機森林在處理高維數(shù)據(jù)時非常有效,因為它可以發(fā)現(xiàn)不同特征之間的復(fù)雜關(guān)系,而無需人工進行特征組合。4.2.1示例代碼fromsklearn.datasetsimportmake_classification
fromsklearn.ensembleimportRandomForestClassifier
fromsklearn.model_selectionimporttrain_test_split
#生成高維數(shù)據(jù)
X,y=make_classification(n_samples=1000,n_features=20,n_informative=10,n_redundant=5,random_state=42)
#劃分數(shù)據(jù)集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)
#創(chuàng)建隨機森林分類器
clf=RandomForestClassifier(n_estimators=100,random_state=42)
#訓(xùn)練模型
clf.fit(X_train,y_train)
#預(yù)測
predictions=clf.predict(X_test)
#打印預(yù)測結(jié)果
print(predictions)4.2.2解釋在這個例子中,我們使用make_classification函數(shù)生成了一個具有20個特征的數(shù)據(jù)集,其中10個特征是信息性的,5個特征是冗余的。隨機森林分類器在訓(xùn)練過程中,會自動地對這些特征進行組合,以找到最佳的分裂點,從而提高模型的預(yù)測能力。4.33隨機森林特征降維:集成學(xué)習(xí)的優(yōu)勢隨機森林的集成學(xué)習(xí)特性,使得它在特征降維方面具有優(yōu)勢。通過集成多個決策樹,隨機森林可以識別出哪些特征是真正重要的,哪些特征是冗余的。因此,我們可以使用隨機森林來識別重要特征,然后基于這些特征構(gòu)建新的模型,從而實現(xiàn)特征降維。4.3.1示例代碼fromsklearn.datasetsimportload_iris
fromsklearn.ensembleimportRandomForestClassifier
fromsklearn.decompositionimportPCA
fromsklearn.model_selectionimporttrain_test_split
#加載數(shù)據(jù)
data=load_iris()
X=data.data
y=data.target
#劃分數(shù)據(jù)集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)
#創(chuàng)建隨機森林分類器
clf=RandomForestClassifier(n_estimators=100,random_state=42)
#訓(xùn)練模型
clf.fit(X_train,y_train)
#獲取特征重要性
importances=clf.feature_importances_
#基于特征重要性選擇特征
threshold=0.05
selected_features=[ifori,importanceinenumerate(importances)ifimportance>threshold]
#特征降維
X_train_reduced=X_train[:,selected_features]
X_test_reduced=X_test[:,selected_features]
#使用PCA進一步降維
pca=PCA(n_components=2)
X_train_pca=pca.fit_transform(X_train_reduced)
X_test_pca=pca.transform(X_test_reduced)
#創(chuàng)建新的隨機森林分類器
new_clf=RandomForestClassifier(n_estimators=100,random_state=42)
#訓(xùn)練新的模型
new_clf.fit(X_train_pca,y_train)
#預(yù)測
predictions=new_clf.predict(X_test_pca)
#打印預(yù)測結(jié)果
print(predictions)4.3.2解釋在這個例子中,我們首先使用隨機森林識別出重要特征,然后基于這些特征構(gòu)建新的數(shù)據(jù)集。接著,我們使用PCA進一步降維,將數(shù)據(jù)集的維度從4維降到了2維。最后,我們基于降維后的數(shù)據(jù)集,創(chuàng)建并訓(xùn)練了一個新的隨機森林分類器,進行預(yù)測。通過這種方式,我們不僅減少了特征的數(shù)量,還提高了模型的預(yù)測能力。5隨機森林模型訓(xùn)練與評估5.11模型訓(xùn)練:使用預(yù)處理后的數(shù)據(jù)在進行隨機森林模型訓(xùn)練之前,我們已經(jīng)完成了數(shù)據(jù)的預(yù)處理,包括缺失值處理、數(shù)據(jù)標準化、類別特征編碼等步驟?,F(xiàn)在,我們將使用預(yù)處理后的數(shù)據(jù)來訓(xùn)練隨機森林模型。5.1.1示例代碼假設(shè)我們使用的是scikit-learn庫中的RandomForestClassifier類,以下是一個使用預(yù)處理數(shù)據(jù)訓(xùn)練模型的示例:#導(dǎo)入必要的庫
fromsklearn.ensembleimportRandomForestClassifier
fromsklearn.model_selectionimporttrain_test_split
fromsklearn.metricsimportaccuracy_score,recall_score,f1_score
#假設(shè)X是特征數(shù)據(jù),y是目標變量
#X,y=數(shù)據(jù)預(yù)處理后的特征和目標變量
#劃分訓(xùn)練集和測試集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#創(chuàng)建隨機森林分類器實例
rf=RandomForestClassifier(n_estimators=100,random_state=42)
#使用訓(xùn)練數(shù)據(jù)擬合模型
rf.fit(X_train,y_train)
#預(yù)測測試集
y_pred=rf.predict(X_test)5.1.2代碼解釋導(dǎo)入庫:我們導(dǎo)入了RandomForestClassifier用于創(chuàng)建隨機森林模型,train_test_split用于數(shù)據(jù)集的劃分,以及accuracy_score、recall_score和f1_score用于模型評估。數(shù)據(jù)集劃分:使用train_test_split函數(shù)將數(shù)據(jù)集劃分為訓(xùn)練集和測試集,其中test_size=0.2表示測試集占總數(shù)據(jù)集的20%。模型創(chuàng)建:創(chuàng)建一個隨機森林分類器實例,設(shè)置n_estimators=100表示使用100棵樹。模型訓(xùn)練:使用fit方法訓(xùn)練模型。模型預(yù)測:使用訓(xùn)練好的模型對測試集進行預(yù)測。5.22模型評估:準確率、召回率與F1分數(shù)模型訓(xùn)練完成后,我們需要評估模型的性能。常用的評估指標包括準確率、召回率和F1分數(shù)。5.2.1示例代碼使用scikit-learn庫中的評估函數(shù),我們可以計算模型的準確率、召回率和F1分數(shù):#計算準確率
accuracy=accuracy_score(y_test,y_pred)
print(f"準確率:{accuracy:.2f}")
#計算召回率
recall=recall_score(y_test,y_pred,average='weighted')
print(f"召回率:{recall:.2f}")
#計算F1分數(shù)
f1=f1_score(y_test,y_pred,average='weighted')
print(f"F1分數(shù):{f1:.2f}")5.2.2代碼解釋準確率:accuracy_score函數(shù)計算預(yù)測正確的樣本數(shù)占總樣本數(shù)的比例。召回率:recall_score函數(shù)計算模型正確預(yù)測的正類樣本數(shù)占實際正類樣本數(shù)的比例。這里使用average='weighted'來計算加權(quán)平均召回率,適用于多分類問題。F1分數(shù):f1_score函數(shù)計算準確率和召回率的調(diào)和平均值,同樣使用average='weighted'來計算加權(quán)平均F1分數(shù)。5.33模型優(yōu)化:調(diào)整超參數(shù)與交叉驗證隨機森林模型的性能可以通過調(diào)整超參數(shù)來優(yōu)化,常見的超參數(shù)包括n_estimators(樹的數(shù)量)、max_depth(樹的最大深度)等。此外,使用交叉驗證可以更準確地評估模型的性能。5.3.1示例代碼使用GridSearchCV進行超參數(shù)優(yōu)化和交叉驗證:fromsklearn.model_selectionimportGridSearchCV
#定義超參數(shù)網(wǎng)格
param_grid={
'n_estimators':[100,200,300],
'max_depth':[None,10,20,30],
'min_samples_split':[2,5,10],
'min_samples_leaf':[1,2,4]
}
#創(chuàng)建GridSearchCV實例
grid_search=GridSearchCV(estimator=rf,param_grid=param_grid,cv=5,scoring='accuracy')
#擬合GridSearchCV
grid_search.fit(X_train,y_train)
#獲取最佳參數(shù)
best_params=grid_search.best_params_
print(f"最佳參數(shù):{best_params}")
#使用最佳參數(shù)重新訓(xùn)練模型
rf_optimized=RandomForestClassifier(**best_params,random_state=42)
rf_optimized.fit(X_train,y_train)
#預(yù)測并評估優(yōu)化后的模型
y_pred_optimized=rf_optimized.predict(X_test)
accuracy_optimized=accuracy_score(y_test,y_pred_optimized)
print(f"優(yōu)化后的準確率:{accuracy_optimized:.2f}")5.3.2代碼解釋定義超參數(shù)網(wǎng)格:創(chuàng)建一個字典,包含要優(yōu)化的超參數(shù)及其可能的值。創(chuàng)建GridSearchCV實例:使用GridSearchCV類,設(shè)置cv=5表示使用5折交叉驗證,scoring='accuracy'表示使用準確率作為評估指標。擬合GridSearchCV:使用訓(xùn)練數(shù)據(jù)擬合GridSearchCV,它會自動嘗試所有超參數(shù)組合并選擇最佳參數(shù)。獲取最佳參數(shù):通過best_params_屬性獲取最佳超參數(shù)組合。使用最佳參數(shù)重新訓(xùn)練模型:使用最佳參數(shù)創(chuàng)建新的隨機森林模型,并重新訓(xùn)練。評估優(yōu)化后的模型:使用測試集評估優(yōu)化后的模型性能。通過以上步驟,我們可以有效地訓(xùn)練和評估隨機森林模型,并通過超參數(shù)優(yōu)化和交叉驗證來提高模型的性能。6實戰(zhàn)案例分析6.11案例介紹:手寫數(shù)字識別手寫數(shù)字識別是機器學(xué)習(xí)領(lǐng)域中的一個經(jīng)典問題,通常使用MNIST數(shù)據(jù)集進行訓(xùn)練和測試。MNIST數(shù)據(jù)集包含60,000個訓(xùn)練樣本和10,000個測試樣本,每個樣本是一個28x28像素的灰度圖像,代表0到9的數(shù)字。本案例將使用隨機森林算法對手寫數(shù)字進行分類。6.22數(shù)據(jù)預(yù)處理與特征工程實戰(zhàn)6.2.1數(shù)據(jù)加載與預(yù)覽首先,我們需要加載MNIST數(shù)據(jù)集,并對數(shù)據(jù)進行初步的預(yù)覽和理解。#導(dǎo)入必要的庫
importnumpyasnp
fromsklearn.datasetsimportfetch_openml
fromsklearn.model_selectionimporttrain_test_split
#加載MNIST數(shù)據(jù)集
mnist=fetch_openml('mnist_784',version=1)
X,y=mnist['data'],mnist['target']
#將數(shù)據(jù)集分為訓(xùn)練集和測試集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)
#預(yù)覽數(shù)據(jù)
print("訓(xùn)練集樣本數(shù)量:",X_train.shape)
print("測試集樣本數(shù)量:",X_test.shape)6.2.2數(shù)據(jù)預(yù)處理數(shù)據(jù)預(yù)處理是機器學(xué)習(xí)中非常關(guān)鍵的一步,它包括數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)標準化等步驟。對于MNIST數(shù)據(jù)集,我們主要進行以下預(yù)處理:數(shù)
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國智能洗車行業(yè)深度分析、投資前景、趨勢預(yù)測報告(智研咨詢)
- 《我與祖國共奮進》主題班會設(shè)計方案
- 全區(qū)政府系統(tǒng)忠誠型創(chuàng)新型擔(dān)當(dāng)型服務(wù)型過硬型政府建設(shè)加快推動高質(zhì)量跨越式發(fā)展工作方案
- 流動人口均等化服務(wù)方案
- 三類醫(yī)療保健技術(shù)醫(yī)療保健風(fēng)險管理方案
- 殘聯(lián)治庸方案
- 酒店移動語音接入解決方案
- 大學(xué)生禮賓培訓(xùn)方案
- 農(nóng)村公路安全隱患排查工作方案
- 世界環(huán)保日宣傳活動方案
- 電療行業(yè)發(fā)展現(xiàn)狀分析
- 園林消防安全培訓(xùn)
- 實驗診斷學(xué)《糞便檢查》課件
- 智能采礦導(dǎo)論完整整套教學(xué)課件
- 勞工與道德規(guī)范風(fēng)險評估分析表
- 學(xué)習(xí)貫徹《事業(yè)單位工作人員處分規(guī)定》心得體會發(fā)言
- 小學(xué)班主任帶班育人方略5000字十四篇
- 結(jié)核病講義醫(yī)學(xué)知識培訓(xùn)培訓(xùn)課件
- 人教版四年級數(shù)學(xué)上冊【分層作業(yè)】2.1 公頃和平方千米(同步練習(xí)) 四年級上冊數(shù)學(xué)同步課時練 (人教版含答案)
- 學(xué)習(xí)英模事跡,傳承紅色基因
- 鄭州大學(xué)普通本科學(xué)生學(xué)籍異動審批表
評論
0/150
提交評論