0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用Python進(jìn)行無(wú)監(jiān)督學(xué)習(xí)

人工智能和機(jī)器人研究院 ? 來(lái)源:cc ? 2019-01-21 17:23 ? 次閱讀

無(wú)監(jiān)督學(xué)習(xí)是一種用于在數(shù)據(jù)中查找模式的機(jī)器學(xué)習(xí)技術(shù)。無(wú)監(jiān)督算法給出的數(shù)據(jù)不帶標(biāo)記,只給出輸入變量(X),沒(méi)有相應(yīng)的輸出變量。在無(wú)監(jiān)督學(xué)習(xí)中,算法自己去發(fā)現(xiàn)數(shù)據(jù)中有趣的結(jié)構(gòu)。

人工智能研究總監(jiān)嚴(yán)樂(lè)群解釋說(shuō),非監(jiān)督學(xué)習(xí)教學(xué)機(jī)器能夠自主學(xué)習(xí),而不需要被明確告知它們所做的一切是對(duì)是錯(cuò),這是實(shí)現(xiàn)真正人工智能的關(guān)鍵。

監(jiān)督與無(wú)監(jiān)督學(xué)習(xí)

在監(jiān)督學(xué)習(xí)中,系統(tǒng)試圖從前面給出的例子中學(xué)習(xí)。(另一方面,在無(wú)監(jiān)督學(xué)習(xí)中,系統(tǒng)試圖直接從給出的例子中找到模式。)如果數(shù)據(jù)集被標(biāo)記,它就會(huì)遇到監(jiān)督問(wèn)題,如果數(shù)據(jù)集沒(méi)有標(biāo)記,那么它就是一個(gè)監(jiān)督問(wèn)題。

SRC

左邊的圖像是監(jiān)督學(xué)習(xí)的一個(gè)例子;我們使用回歸技術(shù)來(lái)尋找特征之間的最佳匹配線。而在無(wú)監(jiān)督學(xué)習(xí)中,輸入是基于特征分離的,預(yù)測(cè)是基于它所屬的集群。

重要術(shù)語(yǔ)

特性:用于預(yù)測(cè)的輸入變量。

預(yù)測(cè):當(dāng)提供一個(gè)輸入示例時(shí),模型s的輸出。

示例:數(shù)據(jù)集的一行。示例包含一個(gè)或多個(gè)特性,可能還有一個(gè)標(biāo)簽。

標(biāo)簽:特性的結(jié)果。

為無(wú)監(jiān)督學(xué)習(xí)準(zhǔn)備數(shù)據(jù)

在本文中,我們使用Iris數(shù)據(jù)集進(jìn)行第一次預(yù)測(cè)。該數(shù)據(jù)集包含一組150條記錄,包含5個(gè)屬性:花瓣長(zhǎng)度、花瓣寬度、萼片長(zhǎng)度、萼片寬度和類(lèi)別。蝴蝶花,蝴蝶花和花色蝴蝶花是三個(gè)等級(jí)。對(duì)于我們的無(wú)監(jiān)督算法,我們給出虹膜花的這四個(gè)特征,并預(yù)測(cè)它屬于哪一類(lèi)。

我們使用Python中的sklearn庫(kù)加載Iris數(shù)據(jù)集,使用matplotlib實(shí)現(xiàn)數(shù)據(jù)可視化。下面是用于研究數(shù)據(jù)集的代碼片段。

# Importing Modules from sklearn import datasets import matplotlib.pyplot as plt # Loading dataset iris_df = datasets.load_iris() # Available methods on dataset print(dir(iris_df)) # Features print(iris_df.feature_names) # Targets print(iris_df.target) # Target Names print(iris_df.target_names) label = {0: 'red', 1: 'blue', 2: 'green'} # Dataset Slicing x_axis = iris_df.data[:, 0] # Sepal Length y_axis = iris_df.data[:, 2] # Sepal Width # Plotting plt.scatter(x_axis, y_axis, c=iris_df.target) plt.show()

['DESCR','data','feature_names','target','target_names'] ['sepal length(cm)','sepal width(cm)','petal length(cm)','petal width(厘米)']

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2]

['setosa''versicolor''virginica']

紫羅蘭:瀨戶(hù)草,綠色:雜色,黃色:弗吉尼亞

在上面的圖像中,左邊的圖像是未分類(lèi)的原始數(shù)據(jù),右邊的圖像是聚類(lèi)的(根據(jù)數(shù)據(jù)的特征進(jìn)行分類(lèi))。當(dāng)給定一個(gè)要預(yù)測(cè)的輸入時(shí),它會(huì)根據(jù)它的特性檢查它所屬的集群,然后進(jìn)行預(yù)測(cè)。

Python中的K-Means聚類(lèi)

K均值是一種迭代聚類(lèi)算法,其目標(biāo)是在每次迭代中尋找局部最大值。選擇初始所需的集群數(shù)量。因?yàn)槲覀冎烙?個(gè)類(lèi),所以我們編寫(xiě)算法將數(shù)據(jù)分組到3個(gè)類(lèi)中,方法是將參數(shù)n個(gè)集群傳遞到KMeans模型中?,F(xiàn)在隨機(jī)將三個(gè)點(diǎn)(輸入)分配到三個(gè)集群中。根據(jù)每個(gè)點(diǎn)之間的質(zhì)心距離,下一個(gè)給定的輸入被分離成受尊重的集群?,F(xiàn)在,重新計(jì)算所有集群的質(zhì)心。

集群的每個(gè)質(zhì)心是定義結(jié)果組的特征值的集合。質(zhì)心特征權(quán)值的檢驗(yàn)可以定性地解釋每個(gè)聚類(lèi)所代表的組的類(lèi)型。

從sklearn庫(kù)中導(dǎo)入KMeans模型,進(jìn)行特征擬合和預(yù)測(cè)。

K是Python中的實(shí)現(xiàn)。

# Importing Modules from sklearn import datasets from sklearn.cluster import KMeans # Loading dataset iris_df = datasets.load_iris() # Declaring Model model = KMeans(n_clusters=3) # Fitting Model model.fit(iris_df.data) # Predicitng a single input predicted_label = model.predict([[7.2, 3.5, 0.8, 1.6]]) # Prediction on the entire data all_predictions = model.predict(iris_df.data) # Printing Predictions print(predicted_label) print(all_predictions)

[0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1 1 1 2 1 1 1 1 1 2 2 1 1 1 1 2 1 1 2 1 1 2 2 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 1 2 1 1 2]

分層聚類(lèi)

分層聚類(lèi),顧名思義,是一種構(gòu)建集群層次結(jié)構(gòu)的算法。該算法首先將所有數(shù)據(jù)分配給自己的集群。然后將兩個(gè)最近的集群連接到同一個(gè)集群中。最后,當(dāng)只剩下一個(gè)集群時(shí),該算法就結(jié)束了。

利用樹(shù)狀圖可以顯示層次聚類(lèi)的完成情況?,F(xiàn)在讓我們看一個(gè)谷物數(shù)據(jù)分層聚類(lèi)的例子。數(shù)據(jù)集可以在這里找到。

Python中的分層集群實(shí)現(xiàn)。

# Importing Modules from scipy.cluster.hierarchy import linkage, dendrogram import matplotlib.pyplot as plt import pandas as pd # Reading the DataFrame seeds_df = pd.read_csv( "https://raw.githubusercontent.com/vihar/unsupervised-learning-with-python/master/seeds-less-rows.csv") # Remove the grain species from the DataFrame, save for later varieties = list(seeds_df.pop('grain_variety')) # Extract the measurements as a NumPy array samples = seeds_df.values """ Perform hierarchical clustering on samples using the linkage() function with the method='complete' keyword argument. Assign the result to mergings. """ mergings = linkage(samples, method='complete') """ Plot a dendrogram using the dendrogram() function on mergings, specifying the keyword arguments labels=varieties, leaf_rotation=90, and leaf_font_size=6. """ dendrogram(mergings, labels=varieties, leaf_rotation=90, leaf_font_size=6, ) plt.show()

K均值和分層聚類(lèi)之間的差異

層次聚類(lèi)不能很好地處理大數(shù)據(jù),K表示聚類(lèi)可以。這是因?yàn)镵均值的時(shí)間復(fù)雜度是線性的,即O(n),而層次聚類(lèi)的時(shí)間復(fù)雜度是二次的,即O(n2)。

在K均值聚類(lèi)中,當(dāng)我們從任意選擇的聚類(lèi)開(kāi)始時(shí),多次運(yùn)行該算法生成的結(jié)果可能會(huì)有所不同。而結(jié)果在層次聚類(lèi)中是可重復(fù)的。

當(dāng)星系團(tuán)的形狀是超球形(如二維的圓形,三維的球形)時(shí),發(fā)現(xiàn)K 代表工作良好。

K-Means不允許有噪聲的數(shù)據(jù),而在分層中我們可以直接使用有噪聲的數(shù)據(jù)集進(jìn)行聚類(lèi)。

t-SNE聚類(lèi)

它是一種無(wú)監(jiān)督的可視化學(xué)習(xí)方法。t-SNE代表t分布隨機(jī)鄰居嵌入。它將高維空間映射到可以可視化的二維或三維空間。具體地說(shuō),它通過(guò)一個(gè)二維或三維點(diǎn)對(duì)每個(gè)高維物體進(jìn)行建模,其方法是用附近的點(diǎn)對(duì)相似的物體建模,用高概率的遠(yuǎn)點(diǎn)對(duì)不同的物體建模。

Python中Iris數(shù)據(jù)集的t-SNE聚類(lèi)實(shí)現(xiàn)。

# Importing Modules from sklearn import datasets from sklearn.manifold import TSNE import matplotlib.pyplot as plt # Loading dataset iris_df = datasets.load_iris() # Defining Model model = TSNE(learning_rate=100) # Fitting Model transformed = model.fit_transform(iris_df.data) # Plotting 2d t-Sne x_axis = transformed[:, 0] y_axis = transformed[:, 1] plt.scatter(x_axis, y_axis, c=iris_df.target) plt.show()

紫色:Setosa,綠色:Versicolor,黃色:Virginica

這里,由于Iris數(shù)據(jù)集具有四個(gè)特征(4d),將其轉(zhuǎn)換成二維圖表示。類(lèi)似地,t-SNE模型可以應(yīng)用于具有n個(gè)特征的數(shù)據(jù)集。

DBSCAN群集

DBSCAN(基于密度的噪聲應(yīng)用空間聚類(lèi))是一種常用的聚類(lèi)算法,用于替代預(yù)測(cè)分析中的k均值。它不需要您輸入集群的數(shù)量才能運(yùn)行。但作為交換,您必須調(diào)優(yōu)其他兩個(gè)參數(shù)。

scikit-learn實(shí)現(xiàn)為eps和min示例參數(shù)提供了默認(rèn)值,但是通常需要對(duì)它們進(jìn)行調(diào)優(yōu)。eps參數(shù)是在同一個(gè)鄰域內(nèi)需要考慮的兩個(gè)數(shù)據(jù)點(diǎn)之間的最大距離。最小樣本參數(shù)是一個(gè)鄰域內(nèi)被認(rèn)為是一個(gè)集群的數(shù)據(jù)點(diǎn)的最小數(shù)量。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8481

    瀏覽量

    133903
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4822

    瀏覽量

    85913

原文標(biāo)題:使用Python進(jìn)行無(wú)監(jiān)督學(xué)習(xí)

文章出處:【微信號(hào):gh_ecbcc3b6eabf,微信公眾號(hào):人工智能和機(jī)器人研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用Python進(jìn)行串口通信的案例

    當(dāng)然!以下是一個(gè)使用Python進(jìn)行串口通信的簡(jiǎn)單示例。這個(gè)示例展示了如何配置串口、發(fā)送數(shù)據(jù)以及接收數(shù)據(jù)。我們將使用 pyserial 庫(kù),這是一個(gè)非常流行的用于串口通信的Python庫(kù)。 首先,你
    的頭像 發(fā)表于 11-22 09:11 ?1080次閱讀

    時(shí)空引導(dǎo)下的時(shí)間序列自監(jiān)督學(xué)習(xí)框架

    【導(dǎo)讀】最近,香港科技大學(xué)、上海AI Lab等多個(gè)組織聯(lián)合發(fā)布了一篇時(shí)間序列無(wú)監(jiān)督預(yù)訓(xùn)練的文章,相比原來(lái)的TS2Vec等時(shí)間序列表示學(xué)習(xí)工作,核心在于提出了將空間信息融入到預(yù)訓(xùn)練階段,即在預(yù)訓(xùn)練階段
    的頭像 發(fā)表于 11-15 11:41 ?586次閱讀
    時(shí)空引導(dǎo)下的時(shí)間序列自<b class='flag-5'>監(jiān)督學(xué)習(xí)</b>框架

    如何幫助孩子高效學(xué)習(xí)Python:開(kāi)源硬件實(shí)踐是最優(yōu)選擇

    家長(zhǎng)們常常擔(dān)心孩子在學(xué)習(xí)Python時(shí)所面臨的挑戰(zhàn),如復(fù)雜性、興趣保持、學(xué)習(xí)進(jìn)度和可用資源。對(duì)于希望有效教授孩子Python的家長(zhǎng)而言,了解硬件的作用至關(guān)重要,因?yàn)榻Y(jié)合硬件項(xiàng)目的
    的頭像 發(fā)表于 09-06 09:49 ?529次閱讀

    使用Python進(jìn)行Ping測(cè)試

    )請(qǐng)求包,然后等待目標(biāo)主機(jī)返回響應(yīng)包,從而測(cè)量網(wǎng)絡(luò)的延遲和丟包情況。隨著Python編程語(yǔ)言的廣泛應(yīng)用,越來(lái)越多的網(wǎng)絡(luò)工程師開(kāi)始使用Python進(jìn)行自動(dòng)化網(wǎng)絡(luò)測(cè)試和管理任務(wù)。本篇文章將詳細(xì)介紹如何使用
    的頭像 發(fā)表于 08-12 17:56 ?825次閱讀
    使用<b class='flag-5'>Python</b><b class='flag-5'>進(jìn)行</b>Ping測(cè)試

    【《大語(yǔ)言模型應(yīng)用指南》閱讀體驗(yàn)】+ 基礎(chǔ)知識(shí)學(xué)習(xí)

    收集海量的文本數(shù)據(jù)作為訓(xùn)練材料。這些數(shù)據(jù)集不僅包括語(yǔ)法結(jié)構(gòu)的學(xué)習(xí),還包括對(duì)語(yǔ)言的深層次理解,如文化背景、語(yǔ)境含義和情感色彩等。 自監(jiān)督學(xué)習(xí):模型采用自監(jiān)督學(xué)習(xí)策略,在大量無(wú)標(biāo)簽文本數(shù)據(jù)
    發(fā)表于 08-02 11:03

    【《大語(yǔ)言模型應(yīng)用指南》閱讀體驗(yàn)】+ 基礎(chǔ)篇

    章節(jié)最后總結(jié)了機(jī)器學(xué)習(xí)的分類(lèi):有監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)、自監(jiān)督學(xué)習(xí)和強(qiáng)化
    發(fā)表于 07-25 14:33

    Python在AI中的應(yīng)用實(shí)例

    Python在人工智能(AI)領(lǐng)域的應(yīng)用極為廣泛且深入,從基礎(chǔ)的數(shù)據(jù)處理、模型訓(xùn)練到高級(jí)的應(yīng)用部署,Python都扮演著至關(guān)重要的角色。以下將詳細(xì)探討Python在AI中的幾個(gè)關(guān)鍵應(yīng)用實(shí)例,包括機(jī)器
    的頭像 發(fā)表于 07-19 17:16 ?2181次閱讀

    基于Python的深度學(xué)習(xí)人臉識(shí)別方法

    基于Python的深度學(xué)習(xí)人臉識(shí)別方法是一個(gè)涉及多個(gè)技術(shù)領(lǐng)域的復(fù)雜話題,包括計(jì)算機(jī)視覺(jué)、深度學(xué)習(xí)、以及圖像處理等。在這里,我將概述一個(gè)基本的流程,包括數(shù)據(jù)準(zhǔn)備、模型選擇、訓(xùn)練過(guò)程、以及測(cè)試與評(píng)估,并附上簡(jiǎn)單的代碼示例。
    的頭像 發(fā)表于 07-14 11:52 ?1479次閱讀

    用pycharm進(jìn)行python爬蟲(chóng)的步驟

    以下是使用PyCharm進(jìn)行Python爬蟲(chóng)的步驟: 安裝PyCharm和Python 首先,您需要安裝PyCharm和Python。PyCharm是一個(gè)流行的
    的頭像 發(fā)表于 07-11 10:11 ?1230次閱讀

    神經(jīng)網(wǎng)絡(luò)如何用無(wú)監(jiān)督算法訓(xùn)練

    標(biāo)記數(shù)據(jù)的處理尤為有效,能夠充分利用互聯(lián)網(wǎng)上的海量數(shù)據(jù)資源。以下將詳細(xì)探討神經(jīng)網(wǎng)絡(luò)如何用無(wú)監(jiān)督算法進(jìn)行訓(xùn)練,包括常見(jiàn)的無(wú)
    的頭像 發(fā)表于 07-09 18:06 ?1238次閱讀

    深度學(xué)習(xí)中的無(wú)監(jiān)督學(xué)習(xí)方法綜述

    應(yīng)用中往往難以實(shí)現(xiàn)。因此,無(wú)監(jiān)督學(xué)習(xí)在深度學(xué)習(xí)中扮演著越來(lái)越重要的角色。本文旨在綜述深度學(xué)習(xí)中的無(wú)監(jiān)督學(xué)
    的頭像 發(fā)表于 07-09 10:50 ?1392次閱讀

    使用Python進(jìn)行自然語(yǔ)言處理

    在探討使用Python進(jìn)行自然語(yǔ)言處理(NLP)的廣闊領(lǐng)域時(shí),我們首先需要理解NLP的基本概念、其重要性、Python在NLP中的優(yōu)勢(shì),以及如何通過(guò)Python實(shí)現(xiàn)一些基礎(chǔ)的NLP任務(wù)
    的頭像 發(fā)表于 07-04 14:40 ?638次閱讀

    深度學(xué)習(xí)常用的Python庫(kù)

    深度學(xué)習(xí)作為人工智能的一個(gè)重要分支,通過(guò)模擬人類(lèi)大腦中的神經(jīng)網(wǎng)絡(luò)來(lái)解決復(fù)雜問(wèn)題。Python作為一種流行的編程語(yǔ)言,憑借其簡(jiǎn)潔的語(yǔ)法和豐富的庫(kù)支持,成為了深度學(xué)習(xí)研究和應(yīng)用的首選工具。本文將深入探討
    的頭像 發(fā)表于 07-03 16:04 ?985次閱讀

    如何使用Python進(jìn)行神經(jīng)網(wǎng)絡(luò)編程

    神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介 神經(jīng)網(wǎng)絡(luò)是一種受人腦啟發(fā)的機(jī)器學(xué)習(xí)模型,由大量的節(jié)點(diǎn)(或稱(chēng)為“神經(jīng)元”)組成,這些節(jié)點(diǎn)在網(wǎng)絡(luò)中相互連接。每個(gè)節(jié)點(diǎn)可以接收輸入,對(duì)輸入進(jìn)行加權(quán)求和,然后通過(guò)一個(gè)激活函數(shù)產(chǎn)生輸出
    的頭像 發(fā)表于 07-02 09:58 ?629次閱讀

    基于FPGA的類(lèi)腦計(jì)算平臺(tái) —PYNQ 集群的無(wú)監(jiān)督圖像識(shí)別類(lèi)腦計(jì)算系統(tǒng)

    STDP 無(wú)監(jiān)督學(xué)習(xí)算法,可運(yùn)用于圖像的 無(wú)監(jiān)督分類(lèi)。 從平臺(tái)設(shè)計(jì)角度: (1)本設(shè)計(jì)搭建的基于 PYNQ 集群的通用低功耗的大規(guī)模類(lèi)腦計(jì)算平臺(tái),搭載 PYNN,NEST 等
    發(fā)表于 06-25 18:35

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品