日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

无监督学习 | PCA 主成分分析之客户分类

發(fā)布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 无监督学习 | PCA 主成分分析之客户分类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 1. 開始
  • 2. 數(shù)據(jù)探索
    • 2.2 特征相關(guān)性
    • 2.3 可視化特征分布
  • 3. 數(shù)據(jù)預(yù)處理
    • 3.1 特征縮放
    • 3.2 異常值檢測
  • 4. 數(shù)據(jù)轉(zhuǎn)換
    • 4.1 主成分分析(PCA)
    • 4.2 降維
    • 4.3 雙標(biāo)圖(Biplot)可視化
  • 5. 聚類
    • 5.1 創(chuàng)建聚類
    • 5.2 聚類可視化
  • 6. 數(shù)據(jù)恢復(fù)
  • 7. 利用聚類結(jié)果進(jìn)行預(yù)測

相關(guān)文章:

機(jī)器學(xué)習(xí) | 目錄

機(jī)器學(xué)習(xí) | 聚類評估指標(biāo)

無監(jiān)督學(xué)習(xí) | KMeans 之Sklearn實(shí)現(xiàn):電影評分聚類

無監(jiān)督學(xué)習(xí) | PCA 主成分分析原理及Sklearn實(shí)現(xiàn)

1. 開始

在這個項(xiàng)目中,我們將分析一個數(shù)據(jù)集的內(nèi)在結(jié)構(gòu),這個數(shù)據(jù)集包含很多客戶真對不同類型產(chǎn)品的年度采購額(用金額表示)。這個項(xiàng)目的任務(wù)之一是如何最好地描述一個批發(fā)商不同種類顧客之間的差異。這樣做將能夠使得批發(fā)商能夠更好的組織他們的物流服務(wù)以滿足每個客戶的需求。

這個項(xiàng)目的數(shù)據(jù)集能夠在UCI機(jī)器學(xué)習(xí)信息庫中找到.因?yàn)檫@個項(xiàng)目的目的,分析將不會包括 ‘Channel’ 和 ‘Region’ 這兩個特征——重點(diǎn)集中在6個記錄的客戶購買的產(chǎn)品類別上。

# 引入這個項(xiàng)目需要的庫 import numpy as np import pandas as pd import visuals as vs # 子集 from IPython.display import display # 使得我們可以對DataFrame使用display()函數(shù)# 設(shè)置以內(nèi)聯(lián)的形式顯示matplotlib繪制的圖片(在notebook中顯示更美觀) %matplotlib inline # 高分辨率顯示 %config InlineBackend.figure_format='retina'# 載入整個客戶數(shù)據(jù)集 try:data = pd.read_csv("customers.csv")data.drop(['Region', 'Channel'], axis = 1, inplace = True)print("Wholesale customers dataset has {} samples with {} features each.".format(*data.shape)) except:print("Dataset could not be loaded. Is the dataset missing?") Wholesale customers dataset has 440 samples with 6 features each. data.head() FreshMilkGroceryFrozenDetergents_PaperDelicatessen01234
126699656756121426741338
705798109568176232931776
635388087684240535167844
132651196422164045071788
2261554107198391517775185

2. 數(shù)據(jù)探索

在這部分,我們將開始分析數(shù)據(jù),通過可視化和代碼來理解每一個特征和其他特征的聯(lián)系。我們會看到關(guān)于數(shù)據(jù)集的統(tǒng)計描述,考慮每一個屬性的相關(guān)性,然后從數(shù)據(jù)集中選擇若干個樣本數(shù)據(jù)點(diǎn),我們將在整個項(xiàng)目中一直跟蹤研究這幾個數(shù)據(jù)點(diǎn)。

運(yùn)行下面的代碼單元給出數(shù)據(jù)集的一個統(tǒng)計描述。注意這個數(shù)據(jù)集包含了6個重要的產(chǎn)品類型:‘Fresh’, ‘Milk’, ‘Grocery’, ‘Frozen’, **‘Detergents_Paper’**和 ‘Delicatessen’。想一下這里每一個類型代表你會購買什么樣的產(chǎn)品。

# 顯示數(shù)據(jù)集的一個描述 display(data.describe()) FreshMilkGroceryFrozenDetergents_PaperDelicatessencountmeanstdmin25%50%75%max
440.000000440.000000440.000000440.000000440.000000440.000000
12000.2977275796.2659097951.2772733071.9318182881.4931821524.870455
12647.3288657380.3771759503.1628294854.6733334767.8544482820.105937
3.00000055.0000003.00000025.0000003.0000003.000000
3127.7500001533.0000002153.000000742.250000256.750000408.250000
8504.0000003627.0000004755.5000001526.000000816.500000965.500000
16933.7500007190.25000010655.7500003554.2500003922.0000001820.250000
112151.00000073498.00000092780.00000060869.00000040827.00000047943.000000

2.2 特征相關(guān)性

一個有趣的想法是,考慮這六個類別中的一個(或者多個)產(chǎn)品類別,是否對于理解客戶的購買行為具有實(shí)際的相關(guān)性。也就是說,當(dāng)用戶購買了一定數(shù)量的某一類產(chǎn)品,我們是否能夠確定他們必然會成比例地購買另一種類的產(chǎn)品。

有一個簡單的方法可以檢測相關(guān)性我們用移除了某一個特征之后的數(shù)據(jù)集來構(gòu)建一個監(jiān)督學(xué)習(xí)(回歸)模型,然后用這個模型去預(yù)測那個被移除的特征,再對這個預(yù)測結(jié)果進(jìn)行評分,看看預(yù)測結(jié)果如何

在下面的代碼單元中將實(shí)現(xiàn)以下的功能:

  • 使用 DataFrame.drop 函數(shù)移除數(shù)據(jù)集中選擇的不需要的特征,并將移除后的結(jié)果賦值給 new_data 。

  • 使用 sklearn.model_selection.train_test_split 將數(shù)據(jù)集分割成訓(xùn)練集和測試集。

  • 導(dǎo)入一個 DecisionTreeRegressor (決策樹回歸器),然后用訓(xùn)練集訓(xùn)練它。

  • 使用回歸器的 score 函數(shù)輸出模型在測試集上的預(yù)測得分。

# 為DataFrame創(chuàng)建一個副本,用'drop'函數(shù)丟棄特征‘Milk’ new_data = data.drop('Milk',axis=1)# 使用給定的特征作為目標(biāo),將數(shù)據(jù)分割成訓(xùn)練集和測試集 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(new_data, data['Milk'],test_size=0.25,random_state=20)# 創(chuàng)建一個DecisionTreeRegressor(決策樹回歸器)并在訓(xùn)練集上訓(xùn)練它 from sklearn.tree import DecisionTreeRegressor regressor = DecisionTreeRegressor(random_state=20) regressor.fit(X_train,y_train)# 輸出在測試集上的預(yù)測得分 from sklearn.metrics import r2_score score = r2_score(regressor.predict(X_test),y_test) score 0.6051738800058682

可以看到?jīng)Q定系數(shù)為 0.6052,并不是很高,因此這個特征對與區(qū)分用戶的消費(fèi)習(xí)慣來說不是特別的重要。

2.3 可視化特征分布

為了能夠?qū)@個數(shù)據(jù)集有一個更好的理解,我們可以對數(shù)據(jù)集中的每一個產(chǎn)品特征構(gòu)建一個散布矩陣(scatter matrix)。如果在一個特征對于區(qū)分一個特定的用戶來說是必須的,那么這個特征和其它的特征可能不會在下面的散射矩陣中顯示任何關(guān)系。相反的,如果這個特征對于識別一個特定的客戶是沒有作用的,那么通過散布矩陣可以看出在這個數(shù)據(jù)特征和其它特征中有關(guān)聯(lián)性。下面創(chuàng)建一個散布矩陣。

# 對于數(shù)據(jù)中的每一對特征構(gòu)造一個散布矩陣 pd.plotting.scatter_matrix(data, alpha = 0.3, figsize = (14,8), diagonal = 'kde');

由散步矩陣的對角圖像可以看出,數(shù)據(jù)并不是正態(tài),而是右偏的。

再看看相關(guān)系數(shù)矩陣以及熱力圖:

data.corr() FreshMilkGroceryFrozenDetergents_PaperDelicatessenFreshMilkGroceryFrozenDetergents_PaperDelicatessen
1.0000000.100510-0.0118540.345881-0.1019530.244690
0.1005101.0000000.7283350.1239940.6618160.406368
-0.0118540.7283351.000000-0.0401930.9246410.205497
0.3458810.123994-0.0401931.000000-0.1315250.390947
-0.1019530.6618160.924641-0.1315251.0000000.069291
0.2446900.4063680.2054970.3909470.0692911.000000
import seaborn seaborn.heatmap(data.corr()) <matplotlib.axes._subplots.AxesSubplot at 0x11c38de48>

Grocery 與 Detergents_Paper 相關(guān)系數(shù)為0.924641,可以看出存在著明顯的相關(guān)關(guān)系。

3. 數(shù)據(jù)預(yù)處理

在這個部分,我們將通過在數(shù)據(jù)上做一個合適的縮放,并檢測異常點(diǎn),將數(shù)據(jù)預(yù)處理成一個更好的代表客戶的形式。預(yù)處理數(shù)據(jù)是保證你在分析中能夠得到顯著且有意義的結(jié)果的重要環(huán)節(jié)。

3.1 特征縮放

如果數(shù)據(jù)不是正態(tài)分布的,尤其是數(shù)據(jù)的平均數(shù)和中位數(shù)相差很大的時候(表示數(shù)據(jù)非常歪斜)。這時候通常用一個非線性的縮放是很合適的,(英文原文) ,尤其是對于金融數(shù)據(jù)。一種實(shí)現(xiàn)這個縮放的方法是使用 Box-Cox 變換,這個方法能夠計算出能夠最佳減小數(shù)據(jù)傾斜的指數(shù)變換方法。一個比較簡單的并且在大多數(shù)情況下都適用的方法是使用自然對數(shù)。

在下面的代碼單元中,我們將實(shí)現(xiàn)以下功能:

  • 使用 np.log 函數(shù)在數(shù)據(jù) data 上做一個對數(shù)縮放,然后將它的副本(不改變原始data的值)賦值給 log_data。
# 使用自然對數(shù)縮放數(shù)據(jù) log_data = np.log(data)# 為每一對新產(chǎn)生的特征制作一個散射矩陣 pd.plotting.scatter_matrix(log_data, alpha = 0.3, figsize = (14,8), diagonal = 'kde');

在使用了一個自然對數(shù)的縮放之后,數(shù)據(jù)的各個特征會顯得更加的正態(tài)分布。

3.2 異常值檢測

對于任何的分析,在數(shù)據(jù)預(yù)處理的過程中檢測數(shù)據(jù)中的異常值都是非常重要的一步。異常值的出現(xiàn)會使得把這些值考慮進(jìn)去后結(jié)果出現(xiàn)傾斜。這里有很多關(guān)于怎樣定義什么是數(shù)據(jù)集中的異常值的經(jīng)驗(yàn)法則。這里我們將使用 Tukey 的定義異常值的方法:一個異常階(outlier step)被定義成1.5倍的四分位距(interquartile range,IQR)。一個數(shù)據(jù)點(diǎn)如果某個特征包含在該特征的 IQR 之外的特征,那么該數(shù)據(jù)點(diǎn)被認(rèn)定為異常點(diǎn)。

在下面的代碼單元中,我們完成下面的功能:

  • 將指定特征的 25th 分位點(diǎn)的值分配給 Q1 。使用 np.percentile 來完成這個功能。
  • 將指定特征的 75th 分位點(diǎn)的值分配給 Q3 。同樣的,使用 np.percentile 來完成這個功能。
  • 將指定特征的異常階的計算結(jié)果賦值給 step。
  • 選擇性地通過將索引添加到 outliers 列表中,以移除異常值。
  • 對于出現(xiàn)兩次及以上的異常的數(shù)據(jù)點(diǎn),我們將其移除,因?yàn)樵谝粋€ feature 中被認(rèn)為是異常點(diǎn)的點(diǎn),可能在其他 feature 中有著很重要的作用,甚至可能反映新的一種類型
outlier = {} # 對于每一個特征,找到值異常高或者是異常低的數(shù)據(jù)點(diǎn) for feature in log_data.keys():# 計算給定特征的Q1(數(shù)據(jù)的25th分位點(diǎn))Q1 = np.percentile(log_data[feature],25)# 計算給定特征的Q3(數(shù)據(jù)的75th分位點(diǎn))Q3 = np.percentile(log_data[feature],75)# 使用四分位范圍計算異常階(1.5倍的四分位距)step = np.percentile(log_data[feature], 75) - np.percentile(log_data[feature], 25)outlier.update({feature:log_data[~((log_data[feature] >= Q1 - step) & (log_data[feature] <= Q3 + step))].index.values})# # 顯示異常點(diǎn) # print("Data points considered outliers for the feature '{}':".format(feature)) # display(log_data[~((log_data[feature] >= Q1 - step) & (log_data[feature] <= Q3 + step))]) # 查找在至少在兩個特征中出現(xiàn)的異常點(diǎn) outlier_2 = pd.Series(np.zeros(len(log_data))) for i in range(0,len(log_data)):for key in outlier.keys():for j in outlier[key]:if i == j:outlier_2[i] = outlier_2[i]+1print('至少在兩個特征中出現(xiàn)的異常點(diǎn)索引:{}'.format(outlier_2[outlier_2>1].index.values)) outliers = [outlier_2[outlier_2>1].index.values]# 移除outliers中索引的數(shù)據(jù)點(diǎn), 并儲存在good_data中 good_data = log_data.drop(log_data.index[outliers]).reset_index(drop = True) 至少在兩個特征中出現(xiàn)的異常點(diǎn)索引:[ 23 47 61 65 66 75 85 96 97 98 122 128 154 161 181 183 184 191 289 333 338 356 357 412 439]

4. 數(shù)據(jù)轉(zhuǎn)換

在這個部分中我們將使用主成分分析(PCA)來分析批發(fā)商客戶數(shù)據(jù)的內(nèi)在結(jié)構(gòu)。由于使用PCA在一個數(shù)據(jù)集上會計算出最大化方差的維度,我們將找出哪一個特征組合能夠最好的描繪客戶。

4.1 主成分分析(PCA)

既然數(shù)據(jù)被縮放到一個更加正態(tài)分布的范圍中并且我們也移除了需要移除的異常點(diǎn),我們現(xiàn)在就能夠在 good_data 上使用 PCA 算法以發(fā)現(xiàn)數(shù)據(jù)的哪一個維度能夠最大化特征的方差。除了找到這些維度,PCA 也將報告每一個維度的解釋方差比(explained variance ratio)–這個數(shù)據(jù)有多少方差能夠用這個單獨(dú)的維度來解釋。

注意 PCA 的一個組成部分(維度)能夠被看做這個空間中的一個新的“特征”,但是它是原來數(shù)據(jù)中的特征構(gòu)成的。

在下面的代碼單元中,我們將要實(shí)現(xiàn)下面的功能:

  • 導(dǎo)入 sklearn.decomposition.PCA 并且將 good_data 用 PCA 并且使用6個維度進(jìn)行擬合后的結(jié)果保存到 pca 中。
import sklearn from sklearn.decomposition import PCA# 通過在good data上進(jìn)行PCA,將其轉(zhuǎn)換成6個維度 pca = PCA(n_components=6) pca.fit(good_data)# 生成PCA的結(jié)果圖 pca_results = vs.pca_results(good_data, pca)

可以看見,在第一個主成分上主要體現(xiàn)的是‘Milk’、‘Grocery’和‘Detergents_Paper’的作用;而第二個主成分上主要體現(xiàn)了其余三個屬性的作用;前兩個主成分共解釋了數(shù)據(jù) 68.32% 的變化,前四個主成分總共解釋了數(shù)據(jù) 99.39% 的變化。

4.2 降維

當(dāng)使用主成分分析的時候,一個主要的目的是減少數(shù)據(jù)的維度,這實(shí)際上降低了問題的復(fù)雜度。當(dāng)然降維也是需要一定代價的:更少的維度能夠表示的數(shù)據(jù)中的總方差更少。因?yàn)檫@個,**累計解釋方差比(cumulative explained variance ratio)**對于我們確定這個問題需要多少維度非常重要。另外,如果大部分的方差都能夠通過兩個或者是三個維度進(jìn)行表示的話,降維之后的數(shù)據(jù)能夠被可視化。

在下面的代碼單元中,我們將實(shí)現(xiàn)下面的功能:

  • 將 good_data 用兩個維度的PCA進(jìn)行擬合,并將結(jié)果存儲到 pca 中去。
  • 使用 pca.transform 將 good_data 進(jìn)行轉(zhuǎn)換,并將結(jié)果存儲在 reduced_data 中。
# 通過在good data上進(jìn)行PCA,將其轉(zhuǎn)換成兩個維度 pca = PCA(n_components=2) pca.fit(good_data)# 使用上面訓(xùn)練的PCA將good data進(jìn)行轉(zhuǎn)換 reduced_data = pca.transform(good_data)# 為降維后的數(shù)據(jù)創(chuàng)建一個DataFrame reduced_data = pd.DataFrame(reduced_data, columns = ['Dimension 1', 'Dimension 2'])

4.3 雙標(biāo)圖(Biplot)可視化

雙標(biāo)圖是一個散點(diǎn)圖,每個數(shù)據(jù)點(diǎn)的位置由它所在主成分的分?jǐn)?shù)確定。坐標(biāo)系是主成分(這里是 Dimension 1 和 Dimension 2)。此外,雙標(biāo)圖還展示出初始特征在主成分上的投影。一個雙標(biāo)圖可以幫助我們理解降維后的數(shù)據(jù),發(fā)現(xiàn)主成分和初始特征之間的關(guān)系。

運(yùn)行下面的代碼來創(chuàng)建一個降維后數(shù)據(jù)的雙標(biāo)圖。

# 可視化雙標(biāo)圖 vs.biplot(good_data, reduced_data, pca) <matplotlib.axes._subplots.AxesSubplot at 0x1a1f5e3710>

一旦我們有了原始特征的投影(紅色箭頭),就能更加容易的理解散點(diǎn)圖每個數(shù)據(jù)點(diǎn)的相對位置。

在這個雙標(biāo)圖中,可以看出 ‘Milk’、‘Grocery’和‘Detergents_Paper’與第一個主成分有強(qiáng)關(guān)聯(lián),其余初始特征與第二個主成分相關(guān)聯(lián),之前得到的 pca_results 圖相符。

5. 聚類

在這個部分,我們將使用 K-Means 聚類算法以發(fā)現(xiàn)數(shù)據(jù)中隱藏的客戶分類。然后,將從簇中恢復(fù)一些特定的關(guān)鍵數(shù)據(jù)點(diǎn),通過將它們轉(zhuǎn)換回原始的維度和規(guī)模,從而理解他們的含義。

5.1 創(chuàng)建聚類

針對不同情況,有些問題需要的聚類數(shù)目可能是已知的。但是在聚類數(shù)目不作為一個先驗(yàn)知道的情況下,我們并不能夠保證某個聚類的數(shù)目對這個數(shù)據(jù)是最優(yōu)的,因?yàn)槲覀儗τ跀?shù)據(jù)的結(jié)構(gòu)(如果存在的話)是不清楚的。但是,我們可以通過計算每一個簇中點(diǎn)的輪廓系數(shù)來衡量聚類的質(zhì)量。數(shù)據(jù)點(diǎn)的輪廓系數(shù)衡量了它與分配給他的簇的相似度,這個值范圍在-1(不相似)到1(相似)。平均輪廓系數(shù)為我們提供了一種簡單地度量聚類質(zhì)量的方法。

在接下來的代碼單元中,將實(shí)現(xiàn)下列功能:

  • 在 reduced_data 上使用一個聚類算法,并將結(jié)果賦值到 clusterer,需要設(shè)置 random_state 使得結(jié)果可以復(fù)現(xiàn)。
  • 使用 clusterer.predict 預(yù)測 reduced_data 中的每一個點(diǎn)的簇,并將結(jié)果賦值到 preds。
  • 使用算法的某個屬性值找到聚類中心,并將它們賦值到 centers。
  • 導(dǎo)入 sklearn.metrics.silhouette_score 包并計算 reduced_data 相對于 preds 的輪廓系數(shù)。
    • 將輪廓系數(shù)賦值給 score 并輸出結(jié)果。
# 在降維后的數(shù)據(jù)上使用你選擇的聚類算法 from sklearn.cluster import KMeans clusterer = KMeans(n_clusters=2)# 預(yù)測每一個點(diǎn)的簇 preds = clusterer.fit_predict(reduced_data)# 找到聚類中心 centers = clusterer.cluster_centers_# 計算選擇的類別的平均輪廓系數(shù)(mean silhouette coefficient) from sklearn.metrics import silhouette_score score = silhouette_score(reduced_data, preds) score 0.44302706341643633

5.2 聚類可視化

可視化聚類結(jié)果和聚類中心:

vs.cluster_results(reduced_data, preds, centers)

6. 數(shù)據(jù)恢復(fù)

上面的可視化圖像中提供的每一個聚類都有一個中心點(diǎn)。這些中心(或者叫平均點(diǎn))并不是數(shù)據(jù)中真實(shí)存在的點(diǎn),但是是所有預(yù)測在這個簇中的數(shù)據(jù)點(diǎn)的平均。對于創(chuàng)建客戶分類的問題,一個簇的中心對應(yīng)于那個分類的平均用戶。因?yàn)檫@個數(shù)據(jù)現(xiàn)在進(jìn)行了降維并縮放到一定的范圍,我們可以通過施加一個反向的轉(zhuǎn)換恢復(fù)這個點(diǎn)所代表的用戶的花費(fèi)。

在下面的代碼單元中,將實(shí)現(xiàn)下列的功能:

  • 使用 pca.inverse_transform 將 centers 反向轉(zhuǎn)換,并將結(jié)果存儲在 log_centers 中。
  • 使用 np.log 的反函數(shù) np.exp 反向轉(zhuǎn)換 log_centers 并將結(jié)果存儲到 true_centers 中。
# 反向轉(zhuǎn)換中心點(diǎn) log_centers = pca.inverse_transform(centers)# 對中心點(diǎn)做指數(shù)轉(zhuǎn)換 true_centers = np.exp(log_centers)# 顯示真實(shí)的中心點(diǎn) segments = ['Segment {}'.format(i) for i in range(0,len(centers))] true_centers = pd.DataFrame(np.round(true_centers), columns = data.keys()) true_centers.index = segments display(true_centers) FreshMilkGroceryFrozenDetergents_PaperDelicatessenSegment 0Segment 1
9564.02051.02609.02172.0325.0717.0
3854.07662.011498.0914.04448.01021.0

將恢復(fù)結(jié)果與開始的特征均值可以看出:

Cluster 0 可能代表零售商用戶,因?yàn)楦黜?xiàng)支出都低于平均值,符合零售店的特征;

Cluster 1 可能代表咖啡廳類客戶,因?yàn)镸ilk、Grocery、Detergents Paper這三項(xiàng)支出遠(yuǎn)高于平均值,符合咖啡店的特征。

7. 利用聚類結(jié)果進(jìn)行預(yù)測

對選取的樣本進(jìn)行類別預(yù)測:

indices = [20,200,400]# 為選擇的樣本建立一個DataFrame samples = pd.DataFrame(data.loc[indices], columns = data.keys()).reset_index(drop = True) print("Chosen samples of wholesale customers dataset:") display(samples)log_samples = np.log(samples) pca_samples = pca.transform(log_samples) sample_preds = clusterer.predict(pca_samples)for i, pred in enumerate(sample_preds):print("Sample point", i, "predicted to be in Cluster", pred) Chosen samples of wholesale customers dataset: FreshMilkGroceryFrozenDetergents_PaperDelicatessen012
1754645194602106622592124
3067132402312739419959731
4446906123835761531014
Sample point 0 predicted to be in Cluster 1 Sample point 1 predicted to be in Cluster 1 Sample point 2 predicted to be in Cluster 0

總結(jié)

以上是生活随笔為你收集整理的无监督学习 | PCA 主成分分析之客户分类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本三不卡 | 91国在线| 黄视频免费看在线 | 好大好爽视频 | 97色网 | 一级片视频播放 | 欧美一区2区三区4区公司 | 国产系列精品av | 国产区精品在线观看 | 亚洲最色网站 | 6699嫩草久久久精品影院 | 成人免费视频网站在线看 | 最新最近中文字幕 | 午夜日韩 | 欧美性插视频 | 国产真人无遮挡作爱免费视频 | 青青青手机视频 | 久久亚洲精品石原莉奈 | 国产最爽的乱淫视频国语对白 | 99久久久无码国产精品免费麻豆 | 最新日韩中文字幕 | 丝袜在线一区 | 欧美亚洲三级 | 超级变态重口av番号 | 人成在线 | 97se亚洲国产综合在线 | 欧美激情在线免费观看 | 国产免费黄色小视频 | 最近免费中文字幕中文高清百度 | 日本一区二区在线免费观看 | 欧美日韩激情在线观看 | 1024毛片基地 | 一级免费a| 国产精品久久久久久久久久久不卡 | 精品+无码+在线观看 | 一级做a爰片久久毛片 | 日本人和亚洲人zjzjhd | 亚洲欧美激情一区二区三区 | 亚洲精品免费在线 | 久久久久久久网站 | 黄色av免费观看 | 日韩欧美中文字幕精品 | 亚洲一区网站 | 伊人7| 亚洲欧美一级 | 污污免费视频 | 日本一区二区视频 | 国际av在线| 黄网站免费在线 | 2020亚洲天堂 | 国产内射合集颜射 | 色欲AV无码精品一区二区久久 | 女同性做爰三级 | 久久精品国产亚洲av无码娇色 | 97人妻精品一区二区三区免 | 91精品国产aⅴ一区 黄色a网 | www.插插| 青青草原一区二区 | 黄色无遮挡网站 | 国产精品情侣 | 国产福利免费视频 | 国产一级黄色 | 久久这里只有精品国产 | 亚洲精品www久久久久久广东 | 欧美一区二区三区四 | 不卡的av在线免费观看 | 爱的色放在线 | 怡红院av亚洲一区二区三区h | 美女搡bbb又爽又猛又黄www | 不卡福利视频 | 嫩草影院久久 | 亚洲精品热 | 国产婷婷色一区二区三区 | 国产第一福利 | 婷婷色吧 | 一边摸内裤一边吻胸 | 中国av在线播放 | 成人午夜激情视频 | 欧美高清| 亚洲成人手机在线 | 1区2区视频 | 中文字幕在线有码 | 在线日本中文字幕 | 精品人妻一区二区三区蜜桃视频 | 欧美激情二区三区 | 九九热精品免费视频 | 伊人日日夜夜 | 国产激情图片 | 91亚洲影院 | 四虎免费久久 | 伊人9 | 欧美激情视频在线观看 | 久久伊人精品视频 | 秋霞啪啪片 | 国产乱国产 | 久久精品福利 | 五月婷婷综合在线观看 | 久久久免费看片 | 亚洲国产精品成人va在线观看 |