數(shù)據(jù)挖掘:分類與回歸:數(shù)據(jù)挖掘?qū)д揰第1頁
數(shù)據(jù)挖掘:分類與回歸:數(shù)據(jù)挖掘?qū)д揰第2頁
數(shù)據(jù)挖掘:分類與回歸:數(shù)據(jù)挖掘?qū)д揰第3頁
數(shù)據(jù)挖掘:分類與回歸:數(shù)據(jù)挖掘?qū)д揰第4頁
數(shù)據(jù)挖掘:分類與回歸:數(shù)據(jù)挖掘?qū)д揰第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)挖掘:分類與回歸:數(shù)據(jù)挖掘?qū)д?數(shù)據(jù)挖掘基礎(chǔ)1.1數(shù)據(jù)挖掘的定義與應(yīng)用數(shù)據(jù)挖掘(DataMining)是一種從大量數(shù)據(jù)中提取有用信息的過程,通過使用統(tǒng)計學(xué)、機器學(xué)習(xí)和數(shù)據(jù)庫技術(shù),自動或半自動地發(fā)現(xiàn)數(shù)據(jù)中的模式、關(guān)聯(lián)和趨勢。數(shù)據(jù)挖掘的應(yīng)用廣泛,包括但不限于:市場分析與管理:如客戶細分、市場籃子分析、交叉銷售、市場趨勢分析。風(fēng)險分析與管理:如信用風(fēng)險評估、欺詐檢測。生產(chǎn)與質(zhì)量控制:如預(yù)測設(shè)備故障、優(yōu)化生產(chǎn)流程。生物醫(yī)學(xué)與健康:如疾病預(yù)測、基因序列分析。Web與文本挖掘:如網(wǎng)頁內(nèi)容分析、情感分析、主題建模。1.1.1示例:市場籃子分析市場籃子分析是一種典型的數(shù)據(jù)挖掘應(yīng)用,用于發(fā)現(xiàn)商品之間的關(guān)聯(lián)規(guī)則。例如,通過分析超市的銷售數(shù)據(jù),可以找出哪些商品經(jīng)常一起被購買,從而制定更有效的營銷策略。數(shù)據(jù)樣例假設(shè)我們有以下超市銷售數(shù)據(jù):交易ID商品1{牛奶,面包,黃油}2{牛奶,面包}3{面包,黃油}4{牛奶,黃油}5{面包}代碼示例使用Python的mlxtend庫進行關(guān)聯(lián)規(guī)則分析:frommlxtend.preprocessingimportTransactionEncoder

frommlxtend.frequent_patternsimportapriori,association_rules

#定義交易數(shù)據(jù)

dataset=[['牛奶','面包','黃油'],

['牛奶','面包'],

['面包','黃油'],

['牛奶','黃油'],

['面包']]

#使用TransactionEncoder編碼數(shù)據(jù)

te=TransactionEncoder()

te_ary=te.fit(dataset).transform(dataset)

df=pd.DataFrame(te_ary,columns=te.columns_)

#應(yīng)用Apriori算法找出頻繁項集

frequent_itemsets=apriori(df,min_support=0.4,use_colnames=True)

print(frequent_itemsets)

#生成關(guān)聯(lián)規(guī)則

rules=association_rules(frequent_itemsets,metric="confidence",min_threshold=0.7)

print(rules)1.1.2解釋在上述代碼中,我們首先定義了交易數(shù)據(jù),然后使用TransactionEncoder將其轉(zhuǎn)換為適合Apriori算法的格式。Apriori算法用于找出頻繁項集,即支持度大于設(shè)定閾值的項集組合。最后,我們生成關(guān)聯(lián)規(guī)則,這些規(guī)則表示了商品之間的關(guān)聯(lián)性,例如“如果購買了牛奶,那么也很可能購買面包”。1.2數(shù)據(jù)挖掘的流程與技術(shù)數(shù)據(jù)挖掘的流程通常包括以下步驟:數(shù)據(jù)準(zhǔn)備:數(shù)據(jù)清洗、數(shù)據(jù)集成、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)歸約。數(shù)據(jù)挖掘:應(yīng)用分類、回歸、聚類、關(guān)聯(lián)規(guī)則等算法。模式評估:評估挖掘出的模式或模型的有效性。知識表示:將評估后的模式以易于理解的形式表示出來。1.2.1技術(shù)與算法數(shù)據(jù)挖掘中常用的技術(shù)與算法包括:分類:如決策樹、支持向量機、K近鄰算法?;貧w:如線性回歸、邏輯回歸。聚類:如K-means、層次聚類。關(guān)聯(lián)規(guī)則學(xué)習(xí):如Apriori算法、Eclat算法。示例:決策樹分類決策樹是一種用于分類和回歸的常用算法,它通過樹狀結(jié)構(gòu)表示決策規(guī)則。數(shù)據(jù)樣例假設(shè)我們有以下關(guān)于天氣與是否進行戶外活動的數(shù)據(jù):天氣溫度濕度風(fēng)力是否活動晴熱高弱否晴熱高強否陰熱高弱是雨溫高弱是雨冷正常弱是雨冷正常強否代碼示例使用Python的sklearn庫構(gòu)建決策樹分類器:fromsklearn.treeimportDecisionTreeClassifier

fromsklearnimporttree

importpandasaspd

#定義數(shù)據(jù)

data={'天氣':['晴','晴','陰','雨','雨','雨'],

'溫度':['熱','熱','熱','溫','冷','冷'],

'濕度':['高','高','高','高','正常','正常'],

'風(fēng)力':['弱','強','弱','弱','弱','強'],

'是否活動':['否','否','是','是','是','否']}

df=pd.DataFrame(data)

#將分類數(shù)據(jù)轉(zhuǎn)換為數(shù)值

df['天氣']=df['天氣'].map({'晴':0,'陰':1,'雨':2})

df['溫度']=df['溫度'].map({'冷':0,'溫':1,'熱':2})

df['濕度']=df['濕度'].map({'正常':0,'高':1})

df['風(fēng)力']=df['風(fēng)力'].map({'弱':0,'強':1})

df['是否活動']=df['是否活動'].map({'否':0,'是':1})

#定義特征和目標(biāo)變量

features=df[['天氣','溫度','濕度','風(fēng)力']]

target=df['是否活動']

#構(gòu)建決策樹分類器

clf=DecisionTreeClassifier()

clf=clf.fit(features,target)

#可視化決策樹

importgraphviz

dot_data=tree.export_graphviz(clf,out_file=None,

feature_names=['天氣','溫度','濕度','風(fēng)力'],

class_names=['否','是'],

filled=True,rounded=True,

special_characters=True)

graph=graphviz.Source(dot_data)

graph1.2.2解釋在本例中,我們首先定義了天氣與戶外活動的數(shù)據(jù),然后將分類數(shù)據(jù)轉(zhuǎn)換為數(shù)值,以便于機器學(xué)習(xí)算法處理。接著,我們使用DecisionTreeClassifier構(gòu)建決策樹模型,并通過fit方法訓(xùn)練模型。最后,我們使用graphviz庫可視化決策樹,以便于理解模型的決策規(guī)則。例如,決策樹可能會告訴我們,如果天氣是陰天,那么進行戶外活動的可能性較大。2數(shù)據(jù)預(yù)處理數(shù)據(jù)預(yù)處理是數(shù)據(jù)挖掘過程中的關(guān)鍵步驟,它包括數(shù)據(jù)清洗、數(shù)據(jù)集成與變換、數(shù)據(jù)歸約等環(huán)節(jié),旨在提高數(shù)據(jù)質(zhì)量,為后續(xù)的分析和建模奠定基礎(chǔ)。2.1數(shù)據(jù)清洗數(shù)據(jù)清洗涉及識別和糾正數(shù)據(jù)集中的錯誤、不一致和缺失值。這一步驟對于確保模型的準(zhǔn)確性和可靠性至關(guān)重要。2.1.1示例:處理缺失值假設(shè)我們有一個包含用戶年齡信息的數(shù)據(jù)集,其中一些記錄的年齡字段為空。importpandasaspd

importnumpyasnp

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

data={'Name':['Alice','Bob','Charlie','David','Eve'],

'Age':[25,np.nan,30,np.nan,35]}

df=pd.DataFrame(data)

#使用中位數(shù)填充缺失值

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

#輸出處理后的數(shù)據(jù)集

print(df)2.1.2說明在上述代碼中,我們首先導(dǎo)入了pandas和numpy庫。然后,創(chuàng)建了一個包含缺失值的示例數(shù)據(jù)集。使用fillna函數(shù),我們用年齡列的中位數(shù)填充了缺失值。最后,輸出了處理后的數(shù)據(jù)集,確保所有年齡字段都已填充。2.2數(shù)據(jù)集成與變換數(shù)據(jù)集成涉及將來自多個數(shù)據(jù)源的數(shù)據(jù)合并到一個統(tǒng)一的視圖中。數(shù)據(jù)變換則是在數(shù)據(jù)集成后,將數(shù)據(jù)轉(zhuǎn)換為適合挖掘的形式。2.2.1示例:數(shù)據(jù)集成與標(biāo)準(zhǔn)化假設(shè)我們有兩個數(shù)據(jù)集,一個包含用戶的基本信息,另一個包含用戶的購物記錄。我們需要將這兩個數(shù)據(jù)集合并,并對數(shù)值型特征進行標(biāo)準(zhǔn)化處理。#創(chuàng)建用戶基本信息數(shù)據(jù)集

user_data={'UserID':[1,2,3,4,5],

'Gender':['F','M','F','M','F'],

'Age':[25,30,35,40,45]}

user_df=pd.DataFrame(user_data)

#創(chuàng)建用戶購物記錄數(shù)據(jù)集

shopping_data={'UserID':[1,2,3,4,5],

'PurchaseAmount':[100,200,150,250,300]}

shopping_df=pd.DataFrame(shopping_data)

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

merged_df=pd.merge(user_df,shopping_df,on='UserID')

#數(shù)據(jù)變換:標(biāo)準(zhǔn)化處理

fromsklearn.preprocessingimportStandardScaler

scaler=StandardScaler()

merged_df['Age']=scaler.fit_transform(merged_df[['Age']])

merged_df['PurchaseAmount']=scaler.fit_transform(merged_df[['PurchaseAmount']])

#輸出處理后的數(shù)據(jù)集

print(merged_df)2.2.2說明在這個例子中,我們首先創(chuàng)建了兩個數(shù)據(jù)集,一個包含用戶的基本信息,另一個包含用戶的購物記錄。使用pd.merge函數(shù),我們基于UserID字段將兩個數(shù)據(jù)集合并。然后,我們使用StandardScaler從sklearn.preprocessing庫對年齡和購物金額字段進行了標(biāo)準(zhǔn)化處理,確保了數(shù)值型特征的尺度一致性。2.3數(shù)據(jù)歸約數(shù)據(jù)歸約是減少數(shù)據(jù)量的過程,同時保持?jǐn)?shù)據(jù)的完整性,以提高數(shù)據(jù)處理的效率。2.3.1示例:主成分分析(PCA)進行數(shù)據(jù)歸約假設(shè)我們有一個包含多個特征的數(shù)據(jù)集,我們想要減少特征數(shù)量,同時保留數(shù)據(jù)的大部分信息。#創(chuàng)建示例數(shù)據(jù)集

data={'Feature1':[1,2,3,4,5],

'Feature2':[5,4,3,2,1],

'Feature3':[10,20,30,40,50]}

df=pd.DataFrame(data)

#數(shù)據(jù)歸約:使用PCA

fromsklearn.decompositionimportPCA

pca=PCA(n_components=2)

reduced_data=pca.fit_transform(df)

#創(chuàng)建歸約后的數(shù)據(jù)集

reduced_df=pd.DataFrame(reduced_data,columns=['PC1','PC2'])

#輸出歸約后的數(shù)據(jù)集

print(reduced_df)2.3.2說明在這個例子中,我們首先創(chuàng)建了一個包含三個特征的示例數(shù)據(jù)集。然后,我們使用PCA從sklearn.decomposition庫對數(shù)據(jù)進行了歸約,將特征數(shù)量減少到兩個主成分。最后,我們創(chuàng)建了一個新的數(shù)據(jù)框,包含了歸約后的數(shù)據(jù),并輸出了這個數(shù)據(jù)框,展示了數(shù)據(jù)歸約的效果。通過以上步驟,我們可以確保數(shù)據(jù)的質(zhì)量和效率,為后續(xù)的數(shù)據(jù)挖掘任務(wù)提供更加可靠和易于處理的數(shù)據(jù)集。3數(shù)據(jù)挖掘:分類技術(shù)3.1決策樹分類決策樹是一種基本的分類與回歸方法,其核心思想是通過特征的值進行判斷,從而將數(shù)據(jù)集分割成不同的子集,最終達到分類的目的。決策樹的構(gòu)建過程是一個遞歸地選擇最優(yōu)特征并劃分?jǐn)?shù)據(jù)集的過程。3.1.1原理決策樹的構(gòu)建通常包括特征選擇、決策樹生成和決策樹剪枝三個步驟。特征選擇是決策樹構(gòu)建的關(guān)鍵,常用的特征選擇方法有信息增益、信息增益比和基尼指數(shù)等。決策樹生成是根據(jù)特征選擇的結(jié)果,遞歸地生成決策樹。決策樹剪枝是為了防止過擬合,提高決策樹的泛化能力。3.1.2代碼示例使用Python的sklearn庫構(gòu)建決策樹分類器:fromsklearn.datasetsimportload_iris

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.treeimportDecisionTreeClassifier

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

iris=load_iris()

X=iris.data

y=iris.target

#劃分訓(xùn)練集和測試集

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

#創(chuàng)建決策樹分類器

clf=DecisionTreeClassifier()

#訓(xùn)練模型

clf.fit(X_train,y_train)

#預(yù)測

predictions=clf.predict(X_test)

#輸出預(yù)測結(jié)果

print(predictions)3.1.3數(shù)據(jù)樣例在上述代碼中,我們使用了sklearn庫中的iris數(shù)據(jù)集,這是一個經(jīng)典的多類分類數(shù)據(jù)集,包含150個樣本,每個樣本有4個特征(萼片長度、萼片寬度、花瓣長度、花瓣寬度)和一個標(biāo)簽(鳶尾花的種類)。3.2邏輯回歸邏輯回歸是一種廣泛使用的分類算法,盡管其名稱中包含“回歸”一詞,但它主要用于解決二分類問題。邏輯回歸通過使用Sigmoid函數(shù)將線性回歸的輸出轉(zhuǎn)換為概率值,從而實現(xiàn)分類。3.2.1原理邏輯回歸模型的核心是Sigmoid函數(shù),其數(shù)學(xué)表達式為:P其中,z=wTx+b,3.2.2代碼示例使用Python的sklearn庫構(gòu)建邏輯回歸分類器:fromsklearn.datasetsimportmake_classification

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.linear_modelimportLogisticRegression

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

X,y=make_classification(n_samples=100,n_features=4,n_classes=2,random_state=42)

#劃分訓(xùn)練集和測試集

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

#創(chuàng)建邏輯回歸分類器

clf=LogisticRegression()

#訓(xùn)練模型

clf.fit(X_train,y_train)

#預(yù)測

predictions=clf.predict(X_test)

#輸出預(yù)測結(jié)果

print(predictions)3.2.3數(shù)據(jù)樣例在上述代碼中,我們使用了sklearn庫中的make_classification函數(shù)生成了模擬數(shù)據(jù),包含100個樣本,每個樣本有4個特征和一個二分類標(biāo)簽。3.3支持向量機支持向量機(SVM)是一種有監(jiān)督的學(xué)習(xí)模型,用于分類和回歸分析。SVM通過尋找一個超平面,使得兩類樣本在該超平面兩側(cè)的間隔最大化,從而實現(xiàn)分類。3.3.1原理SVM的核心是最大間隔分類,即找到一個超平面,使得兩類樣本在該超平面兩側(cè)的間隔最大化。對于線性不可分的問題,SVM通過引入核函數(shù),將數(shù)據(jù)映射到高維空間,從而在高維空間中找到一個線性可分的超平面。3.3.2代碼示例使用Python的sklearn庫構(gòu)建支持向量機分類器:fromsklearn.datasetsimportmake_blobs

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.svmimportSVC

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

X,y=make_blobs(n_samples=100,centers=2,n_features=2,random_state=42)

#劃分訓(xùn)練集和測試集

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

#創(chuàng)建支持向量機分類器

clf=SVC(kernel='linear')

#訓(xùn)練模型

clf.fit(X_train,y_train)

#預(yù)測

predictions=clf.predict(X_test)

#輸出預(yù)測結(jié)果

print(predictions)3.3.3數(shù)據(jù)樣例在上述代碼中,我們使用了sklearn庫中的make_blobs函數(shù)生成了模擬數(shù)據(jù),包含100個樣本,每個樣本有2個特征,數(shù)據(jù)被分為2類。4數(shù)據(jù)挖掘:回歸技術(shù)4.1線性回歸線性回歸是一種基本的統(tǒng)計預(yù)測方法,用于建立一個或多個自變量與一個連續(xù)型因變量之間的線性關(guān)系。其目標(biāo)是找到一個線性方程,使得預(yù)測值與實際值之間的差異最小。4.1.1原理線性回歸模型假設(shè)因變量y與自變量x之間的關(guān)系可以表示為:y其中,β0是截距,β1是斜率,4.1.2代碼示例假設(shè)我們有一組數(shù)據(jù),表示房屋面積與價格的關(guān)系,我們使用Python的scikit-learn庫進行線性回歸分析。importnumpyasnp

importmatplotlib.pyplotasplt

fromsklearn.linear_modelimportLinearRegression

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.metricsimportmean_squared_error

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

np.random.seed(0)

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

y=2*X.squeeze()+300+np.random.randn(100)*50

#劃分訓(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)

#計算均方誤差

mse=mean_squared_error(y_test,y_pred)

print(f'MeanSquaredError:{mse}')

#繪制結(jié)果

plt.scatter(X_test,y_test,color='black')

plt.plot(X_test,y_pred,color='blue',linewidth=3)

plt.title('LinearRegression')

plt.xlabel('Area(sqft)')

plt.ylabel('Price($)')

plt.show()4.1.3解釋在這個例子中,我們首先生成了100個隨機的房屋面積數(shù)據(jù)點,并根據(jù)一個線性方程加上隨機噪聲生成了價格數(shù)據(jù)。然后,我們使用train_test_split函數(shù)將數(shù)據(jù)分為訓(xùn)練集和測試集。接著,我們創(chuàng)建了一個LinearRegression模型,并使用訓(xùn)練集數(shù)據(jù)進行訓(xùn)練。模型訓(xùn)練完成后,我們使用測試集數(shù)據(jù)進行預(yù)測,并計算預(yù)測值與實際值之間的均方誤差(MSE)來評估模型的性能。最后,我們繪制了實際價格與預(yù)測價格的散點圖,以直觀地展示模型的擬合效果。4.2多元回歸多元回歸是線性回歸的擴展,它考慮了多個自變量對因變量的影響。多元回歸模型可以表示為:y4.2.1代碼示例假設(shè)我們有一組數(shù)據(jù),表示房屋價格與面積、臥室數(shù)量之間的關(guān)系,我們使用scikit-learn庫進行多元回歸分析。importnumpyasnp

importpandasaspd

fromsklearn.linear_modelimportLinearRegression

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.metricsimportmean_squared_error

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

np.random.seed(0)

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

y=2*X[:,0]+3*X[:,1]+500+np.random.randn(100)*50

#將數(shù)據(jù)轉(zhuǎn)換為DataFrame

df=pd.DataFrame(X,columns=['Area','Bedrooms'])

df['Price']=y

#劃分訓(xùn)練集和測試集

X_train,X_test,y_train,y_test=train_test_split(df[['Area','Bedrooms']],df['Price'],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)

#計算均方誤差

mse=mean_squared_error(y_test,y_pred)

print(f'MeanSquaredError:{mse}')4.2.2解釋在這個例子中,我們生成了100個隨機的房屋面積和臥室數(shù)量數(shù)據(jù)點,并根據(jù)一個多元線性方程加上隨機噪聲生成了價格數(shù)據(jù)。然后,我們使用train_test_split函數(shù)將數(shù)據(jù)分為訓(xùn)練集和測試集。接著,我們創(chuàng)建了一個LinearRegression模型,并使用訓(xùn)練集數(shù)據(jù)進行訓(xùn)練。模型訓(xùn)練完成后,我們使用測試集數(shù)據(jù)進行預(yù)測,并計算預(yù)測值與實際值之間的均方誤差(MSE)來評估模型的性能。4.3嶺回歸嶺回歸是一種線性回歸的變體,它通過在損失函數(shù)中加入一個正則化項來解決多重共線性和過擬合問題。嶺回歸模型可以表示為:y但是,損失函數(shù)變?yōu)椋篖其中,λ是正則化參數(shù),用于控制模型復(fù)雜度。4.3.1代碼示例使用scikit-learn庫中的Ridge模型進行嶺回歸分析。importnumpyasnp

importpandasaspd

fromsklearn.linear_modelimportRidge

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.metricsimportmean_squared_error

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

np.random.seed(0)

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

y=2*X[:,0]+3*X[:,1]+500+np.random.randn(100)*50

#將數(shù)據(jù)轉(zhuǎn)換為DataFrame

df=pd.DataFrame(X,columns=['Area','Bedrooms'])

df['Price']=y

#劃分訓(xùn)練集和測試集

X_train,X_test,y_train,y_test=train_test_split(df[['Area','Bedrooms']],df['Price'],test_size=0.2,random_state=42)

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

model=Ridge(alpha=1.0)

#訓(xùn)練模型

model.fit(X_train,y_train)

#預(yù)測

y_pred=model.predict(X_test)

#計算均方誤差

mse=mean_squared_error(y_test,y_pred)

print(f'MeanSquaredError:{mse}')4.3.2解釋在這個例子中,我們使用了與多元回歸相同的模擬數(shù)據(jù)。但是,我們使用了Ridge模型來進行嶺回歸分析。alpha參數(shù)是正則化參數(shù)λ,用于控制模型復(fù)雜度,防止過擬合。我們同樣將數(shù)據(jù)分為訓(xùn)練集和測試集,訓(xùn)練模型,進行預(yù)測,并計算均方誤差(MSE)來評估模型的性能。通過調(diào)整alpha參數(shù),我們可以控制模型的復(fù)雜度,找到一個既能擬合數(shù)據(jù)又不過度擬合的模型。5模型評估與選擇5.1模型評估指標(biāo)在數(shù)據(jù)挖掘中,分類和回歸模型的性能評估至關(guān)重要。不同的評估指標(biāo)適用于不同的模型類型和業(yè)務(wù)需求。以下是一些常用的模型評估指標(biāo):5.1.1分類模型評估指標(biāo)準(zhǔn)確率(Accuracy)準(zhǔn)確率是最直觀的評估指標(biāo),它衡量分類器正確分類的樣本數(shù)占總樣本數(shù)的比例。然而,當(dāng)數(shù)據(jù)集不平衡時,準(zhǔn)確率可能不是最佳選擇。#示例代碼:計算準(zhǔn)確率

fromsklearn.metricsimportaccuracy_score

y_true=[0,1,0,1,1,0]#真實標(biāo)簽

y_pred=[0,1,1,1,0,0]#預(yù)測標(biāo)簽

accuracy=accuracy_score(y_true,y_pred)

print(f'Accuracy:{accuracy}')精確率(Precision)和召回率(Recall)精確率衡量預(yù)測為正類的樣本中實際為正類的比例,召回率衡量實際為正類的樣本中被正確預(yù)測為正類的比例。這兩個指標(biāo)在處理不平衡數(shù)據(jù)集時尤為重要。#示例代碼:計算精確率和召回率

fromsklearn.metricsimportprecision_score,recall_score

precision=precision_score(y_true,y_pred,pos_label=1)

recall=recall_score(y_true,y_pred,pos_label=1)

print(f'Precision:{precision}')

print(f'Recall:{recall}')F1分?jǐn)?shù)(F1Score)F1分?jǐn)?shù)是精確率和召回率的調(diào)和平均數(shù),適用于需要平衡精確率和召回率的場景。#示例代碼:計算F1分?jǐn)?shù)

fromsklearn.metricsimportf1_score

f1=f1_score(y_true,y_pred,pos_label=1)

print(f'F1Score:{f1}')混淆矩陣(ConfusionMatrix)混淆矩陣提供了更詳細的分類結(jié)果信息,包括真正例(TP)、假正例(FP)、真反例(TN)和假反例(FN)。#示例代碼:生成混淆矩陣

fromsklearn.metricsimportconfusion_matrix

cm=confusion_matrix(y_true,y_pred)

print(f'ConfusionMatrix:\n{cm}')5.1.2回歸模型評估指標(biāo)均方誤差(MeanSquaredError,MSE)MSE衡量預(yù)測值與真實值之間的平均平方差,值越小表示模型預(yù)測效果越好。#示例代碼:計算MSE

fromsklearn.metricsimportmean_squared_error

y_true=[3,-0.5,2,7]

y_pred=[2.5,0.0,2,8]

mse=mean_squared_error(y_true,y_pred)

print(f'MSE:{mse}')均方根誤差(RootMeanSquaredError,RMSE)RMSE是MSE的平方根,它以與真實值相同的單位表示誤差,更直觀地反映模型的預(yù)測誤差。#示例代碼:計算RMSE

importnumpyasnp

rmse=np.sqrt(mean_squared_error(y_true,y_pred))

print(f'RMSE:{rmse}')平均絕對誤差(MeanAbsoluteError,MAE)MAE衡量預(yù)測值與真實值之間的平均絕對差,它對異常值不敏感。#示例代碼:計算MAE

fromsklearn.metricsimportmean_absolute_error

mae=mean_absolute_error(y_true,y_pred)

print(f'MAE:{mae}')R方(R-squared)R方衡量模型解釋的方差占總方差的比例,值越接近1表示模型擬合效果越好。#示例代碼:計算R方

fromsklearn.metricsimportr2_score

r2=r2_score(y_true,y_pred)

print(f'R-squared:{r2}')5.2交叉驗證交叉驗證是一種評估模型性能的統(tǒng)計學(xué)方法,通過將數(shù)據(jù)集劃分為多個子集,然后在不同的子集上重復(fù)訓(xùn)練和測試模型,以減少評估結(jié)果的方差。最常見的形式是k折交叉驗證。5.2.1示例:k折交叉驗證#示例代碼:使用k折交叉驗證評估模型

fromsklearn.model_selectionimportcross_val_score

fromsklearn.linear_modelimportLogisticRegression

#創(chuàng)建模型

model=LogisticRegression()

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

X=[[0],[1],[2],[3]]

y=[0,0,1,1]

#使用5折交叉驗證評估模型

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

print(f'Cross-validationscores:{scores}')

print(f'Averagescore:{np.mean(scores)}')5.3模型選擇策略在數(shù)據(jù)挖掘中,選擇最佳模型通常涉及模型性能的比較和模型復(fù)雜度的權(quán)衡。以下是一些模型選擇的策略:基于評估指標(biāo)的選擇根據(jù)模型在驗證集或交叉驗證中的評估指標(biāo)選擇最佳模型。正則化(Regularization)正則化技術(shù)如Lasso和Ridge回歸可以幫助減少模型的復(fù)雜度,防止過擬合。網(wǎng)格搜索(GridSearch)網(wǎng)格搜索是一種系統(tǒng)地遍歷所有可能的參數(shù)組合,以找到最佳參數(shù)設(shè)置的方法。#示例代碼:使用網(wǎng)格搜索選擇最佳參數(shù)

fromsklearn.model_selectionimportGridSearchCV

#定義參數(shù)網(wǎng)格

param_grid={'C':[0.1,1,10,100],'penalty':['l1','l2']}

#創(chuàng)建模型

model=LogisticRegression()

#創(chuàng)建網(wǎng)格搜索對象

grid_search=GridSearchCV(model,param_grid,cv=5)

#擬合數(shù)據(jù)

grid_search.fit(X,y)

#輸出最佳參數(shù)

print(f'Bestparameters:{grid_search.best_params_}')隨機搜索(RandomSearch)隨機搜索在參數(shù)空間中隨機選擇參數(shù)組合進行評估,相比于網(wǎng)格搜索,它在參數(shù)空間較大的情況下更為高效。模型集成(EnsembleMethods)模型集成如隨機森林和梯度提升樹可以結(jié)合多個模型的預(yù)測,提高預(yù)測的準(zhǔn)確性和穩(wěn)定性。通過上述方法,數(shù)據(jù)挖掘?qū)I(yè)人員可以系統(tǒng)地評估和選擇分類與回歸模型,以滿足特定的業(yè)務(wù)需求和數(shù)據(jù)特性。6數(shù)據(jù)挖掘?qū)崙?zhàn)案例6.1電商客戶分類6.1.1原理與內(nèi)容電商客戶分類是數(shù)據(jù)挖掘中一個重要的應(yīng)用,主要通過分析客戶的購買行為、消費習(xí)慣、地理位置等信息,將客戶分為不同的群體,以便電商企業(yè)能夠更精準(zhǔn)地進行市場定位、產(chǎn)品推薦和客戶服務(wù)。常用的分類算法包括K-means聚類、層次聚類、DBSCAN等無監(jiān)督學(xué)習(xí)方法,以及決策樹、隨機森林、支持向量機等有監(jiān)督學(xué)習(xí)方法。6.1.2示例:使用K-means進行客戶分類假設(shè)我們有一家電商公司,收集了客戶的購買頻率和購買金額數(shù)據(jù),現(xiàn)在我們想要使用K-means算法將客戶分為三個不同的群體。數(shù)據(jù)樣例客戶ID購買頻率購買金額110500253003201200………Python代碼示例importpandasaspd

fromsklearn.clusterimportKMeans

importmatplotlib.pyplotasplt

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

data=pd.read_csv('customer_data.csv')

#選擇特征

X=data[['購買頻率','購買金額']]

#K-means聚類

kmeans=KMeans(n_clusters=3)

kmeans.fit(X)

#預(yù)測分類

data['分類']=kmeans.predict(X)

#可視化結(jié)果

plt.scatter(data['購買頻率'],data['購買金額'],c=data['分類'],cmap='viridis')

plt.xlabel('購買頻率')

plt.ylabel('購買金額')

plt.title('客戶分類')

plt.show()代碼講解數(shù)據(jù)加載:使用pandas庫讀取CSV文件中的數(shù)據(jù)。特征選擇:從數(shù)據(jù)中選擇“購買頻率”和“購買金額”作為聚類的特征。K-means聚類:創(chuàng)建一個K-means模型,指定要分類的群組數(shù)為3,然后使用fit方法對數(shù)據(jù)進行訓(xùn)練。預(yù)測分類:使用訓(xùn)練好的模型對數(shù)據(jù)進行預(yù)測,將預(yù)測結(jié)果添加到數(shù)據(jù)集中。結(jié)果可視化:使用matplotlib庫繪制散點圖,不同顏色代表不同的客戶群體,從而直觀地展示分類結(jié)果。6.2房價預(yù)測分析6.2.1原理與內(nèi)容房價預(yù)測是數(shù)據(jù)挖掘中的回歸問題,通過分析房屋的特征(如面積、地理位置、房齡等)與價格之間的關(guān)系,建立預(yù)測模型,以預(yù)測未知房屋的價格。常用的回歸算法包括線性回歸、嶺回歸、Lasso回歸、決策樹回歸、隨機森林回歸等。6.2.2示例:使用線性回歸預(yù)測房價假設(shè)我們有一組房屋數(shù)據(jù),包括房屋面積和價格,現(xiàn)在我們想要使用線性回歸模型預(yù)測房屋價格。數(shù)據(jù)樣例房屋ID面積(平方米)價格(萬元)18012021201803150220………Python代碼示例importpandasaspd

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.linear_modelimportLinearRegression

fromsklearn.metricsimportmean_squared_error

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

data=pd.read_csv('house_data.csv')

#特征與目標(biāo)變量

X=data['面積(平方米)'].values.reshape(-1,1)

y=data['價格(萬元)'].values

#劃分訓(xùn)練集和測試集

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

#線性回歸模型

lr=LinearRegression()

lr.fit(X_train,y_train)

#預(yù)測

y_pred=lr.predict(X_test)

#評估模型

mse=mean_squared_error(y_test,y_pred)

print(f'均方誤差:{mse}')代碼講解數(shù)據(jù)加載:使用pandas庫讀取CSV文件中的數(shù)據(jù)。特征與目標(biāo)變量:將“面積(平方米)”作為特征,將“價格(萬元)”作為目標(biāo)變量。數(shù)據(jù)劃分:使用train_test_split方法將數(shù)據(jù)劃分為訓(xùn)練集和測試集,其中測試集占20%。線性回歸模型:創(chuàng)建一個線性回歸模型,使用訓(xùn)練集數(shù)據(jù)進行模型訓(xùn)練。預(yù)測:使用訓(xùn)練好的模型對測試集數(shù)據(jù)進行預(yù)測。模型評估:計算預(yù)測結(jié)果與實際結(jié)果之間的均方誤差(MSE),評估模型的預(yù)測性能。以上兩個案例展示了數(shù)據(jù)挖掘在電商客戶分類和房價預(yù)測分析中的應(yīng)用,通過實際操作,我們可以更深入地理解數(shù)據(jù)挖掘的原理和方法。7高級數(shù)據(jù)挖掘技術(shù)7.1集成學(xué)習(xí)集成學(xué)習(xí)(IntegratedLearning)是一種通過組合多個學(xué)習(xí)器的預(yù)測來提高預(yù)測性能的方法。它基于一個核心思想:多樣性(Diversity)。通過構(gòu)建一組多樣化的模型,集成學(xué)習(xí)可以減少偏差和方差,從而提高預(yù)測的準(zhǔn)確性和穩(wěn)定性。7.1.1BaggingBagging,即BootstrapAggregating,是一種通過隨機抽樣和組合來減少模型方差的技術(shù)。它通過多次從訓(xùn)練集中進行有放回的抽樣,構(gòu)建多個模型,然后對這些模型的預(yù)測結(jié)果進行平均或投票,以得到最終的預(yù)測。示例代碼fromsklearn.ensembleimportBaggingClassifier

fromsklearn.datasetsimportmake_classification

fromsklearn.model_selectionimporttrain_test_split

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

X,y=make_classification(n_samples=1000,n_features=20,n_informative=15,n_redundant=5,random_state=42)

#劃分訓(xùn)練集和測試集

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

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

bagging=BaggingClassifier(n_estimators=100,random_state=42)

#訓(xùn)練模型

bagging.fit(X_train,y_train)

#預(yù)測

predictions=bagging.predict(X_test)7.1.2BoostingBoosting是一種通過迭代地訓(xùn)練弱學(xué)習(xí)器并逐步增加錯誤分類樣本的權(quán)重,以構(gòu)建強學(xué)習(xí)器的方法。Boosting算法如AdaBoost和GradientBoosting,能夠?qū)⒍鄠€弱學(xué)習(xí)器組合成一個強學(xué)習(xí)器,提高模型的預(yù)測能力。示例代碼fromsklearn.ensembleimportAdaBoostClassifier

fromsklearn.datasetsimportmake_classification

fromsklearn.model_selectionimporttrain_test_split

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

X,y=make_classification(n_samples=1000,n_features=20,n_informative=15,n_redundant=5,random_state=42)

#劃分訓(xùn)練集和測試集

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

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

ada_boost=AdaBoostClassifier(n_estimators=100,random_state=42)

#訓(xùn)練模型

ada_boost.fit(X_train,y_train)

#預(yù)測

predictions=ada_boost.predict(X_test)7.1.3StackingStacking是一種更復(fù)雜的集成學(xué)習(xí)方法,它通過使用一個元模型(Meta-model)來組合多個基礎(chǔ)模型(BaseModels)的預(yù)測。在第一層,多個基礎(chǔ)模型被訓(xùn)練并用于預(yù)測;在第二層,元模型基于第一層模型的預(yù)測結(jié)果進行訓(xùn)練,以做出最終的預(yù)測。示例代碼fromsklearn.ensembleimportStackingClassifier

fromsklearn.datasetsimportmake_classification

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.linear_modelimportLogisticRegression

fromsklearn.treeimportDecisionTreeClassifier

fromsklearn.svmimportSVC

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

X,y=make_classification(n_samples=1000,n_features=20,n_informative=15,n_redundant=5,random_state=42)

#劃分訓(xùn)練集和測試集

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

#定義基礎(chǔ)模型

base_models=[

('dt',DecisionTreeClassifier(random_state=42)),

('svc',SVC(random_state=42,probability=True))

]

#定義元模型

meta_model=LogisticRegression()

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

stacking=StackingClassifier(estimators=base_models,final_estimator=meta_model)

#訓(xùn)練模型

stacking.fit(X_train,y_train)

#預(yù)測

predictions=stacking.predict(X_test)7.2深度學(xué)習(xí)在數(shù)據(jù)挖掘中的應(yīng)用深度學(xué)習(xí)是機器學(xué)習(xí)的一個子領(lǐng)域,它使用深度神經(jīng)網(wǎng)絡(luò)來解決復(fù)雜的數(shù)據(jù)挖掘問題。深度學(xué)習(xí)模型能夠自動學(xué)習(xí)數(shù)據(jù)的特征表示,對于圖像、文本和語音等非結(jié)構(gòu)化數(shù)據(jù)的處理具有顯著優(yōu)勢。7.2.1卷積神經(jīng)網(wǎng)絡(luò)(CNN)CNN特別適用于圖像識別和處理。它通過卷積層(ConvolutionalLayers)、池化層(PoolingLayers)和全連接層(Fu

溫馨提示

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

最新文檔

評論

0/150

提交評論