python實現平面數據分類的簡單介紹

本文目錄一覽:

python對數據進行聚類怎麼顯示數據分類

將其整理成數據集為:

[ [1,0,”yes”],[1,1,”yes”],[0,1,”yes”],[0,0,”no”],[1,0,”no”] ]

演算法過程:

1、計算原始的信息熵。

2、依次計算數據集中每個樣本的每個特徵的信息熵。

3、比較不同特徵信息熵的大小,選出信息熵最大的特徵值並輸出。

運行結果:

col : 0 curInfoGain : 2.37744375108 baseInfoGain : 0.0

col : 1 curInfoGain : 1.37744375108 baseInfoGain : 2.37744375108

bestInfoGain : 2.37744375108 bestFeature: 0

結果分析:

說明按照第一列,即有無喉結這個特徵來進行分類的效果更好。

思考:

1、能否利用決策樹演算法,將樣本最終的分類結果進行輸出?如樣本1,2,3屬於男性,4屬於女性。

2、示常式序生成的決策樹只有一層,當特徵量增多的時候,如何生成具有多層結構的決策樹?

3、如何評判分類結果的好壞?

在下一篇文章中,我將主要對以上三個問題進行分析和解答。如果您也感興趣,歡迎您訂閱我的文章,也可以在下方進行評論,如果有疑問或認為不對的地方,您也可以留言,我將積極與您進行解答。

完整代碼如下:

from math import log

“””

計算信息熵

“””

def calcEntropy(dataset):

diclabel = {} ## 標籤字典,用於記錄每個分類標籤出現的次數

for record in dataset:

label = record[-1]

if label not in diclabel.keys():

diclabel[label] = 0

diclabel[label] += 1

### 計算熵

entropy = 0.0

cnt = len(dataset)

for label in diclabel.keys():

prob = float(1.0 * diclabel[label]/cnt)

entropy -= prob * log(prob,2)

return entropy

def initDataSet():

dataset = [[1,0,”yes”],[1,1,”yes”],[0,1,”yes”],[0,0,”no”],[1,0,”no”]]

label = [“male”,”female”]

return dataset,label

#### 拆分dataset ,根據指定的過濾選項值,去掉指定的列形成一個新的數據集

def splitDataset(dataset , col, value):

retset = [] ## 拆分後的數據集

for record in dataset:

if record[col] == value :

reducedFeatVec = record[:col]

reducedFeatVec.extend(record[col+1:]) ### 將指定的列剔除

retset.append(reducedFeatVec) ### 將新形成的特徵值列表追加到返回的列表中

return retset

### 找出信息熵增益最大的特徵值

### 參數:

### dataset : 原始的數據集

def findBestFeature(dataset):

numFeatures = len(dataset[0]) – 1 ### 特徵值的個數

baseEntropy = calcEntropy(dataset) ### 計算原始數據集的熵

baseInfoGain = 0.0 ### 初始信息增益

bestFeature = -1 ### 初始的最優分類特徵值索引

### 計算每個特徵值的熵

for col in range(numFeatures):

features = [record[col] for record in dataset] ### 提取每一列的特徵向量 如此處col= 0 ,則features = [1,1,0,0]

uniqueFeat = set(features)

curInfoGain = 0 ### 根據每一列進行拆分,所獲得的信息增益

for featVal in uniqueFeat:

subDataset = splitDataset(dataset,col,featVal) ### 根據col列的featVal特徵值來對數據集進行劃分

prob = 1.0 * len(subDataset)/numFeatures ### 計運算元特徵數據集所佔比例

curInfoGain += prob * calcEntropy(subDataset) ### 計算col列的特徵值featVal所產生的信息增益

# print “col : ” ,col , ” featVal : ” , featVal , ” curInfoGain :” ,curInfoGain ,” baseInfoGain : ” ,baseInfoGain

print “col : ” ,col , ” curInfoGain :” ,curInfoGain ,” baseInfoGain : ” ,baseInfoGain

if curInfoGain baseInfoGain:

baseInfoGain = curInfoGain

bestFeature = col

return baseInfoGain,bestFeature ### 輸出最大的信息增益,以獲得該增益的列

dataset,label = initDataSet()

infogain , bestFeature = findBestFeature(dataset)

print “bestInfoGain :” , infogain, ” bestFeature:”,bestFeature

怎樣用 Python 進行數據分析?

做數據分析,首先你要知道有哪些數據分析的方法,然後才是用Python去調用這些方法

那Python有哪些庫類是能做數據分析的,很多,pandas,sklearn等等

所以你首先要裝一個anaconda套件,它包含了幾乎所有的Python數據分析工具,

之後再學怎麼分析。

Python 數據可視化:分類特徵統計圖

上一課已經體驗到了 Seaborn 相對 Matplotlib 的優勢,本課將要介紹的是 Seaborn 對分類數據的統計,也是它的長項。

針對分類數據的統計圖,可以使用 sns.catplot 繪製,其完整參數如下:

本課使用演繹的方式來學習,首先理解這個函數的基本使用方法,重點是常用參數的含義。

其他的參數,根據名稱也能基本理解。

下面就依據 kind 參數的不同取值,分門別類地介紹各種不同類型的分類統計圖。

讀入數據集:

然後用這個數據集製圖,看看效果:

輸出結果:

毫無疑問,這裡繪製的是散點圖。但是,該散點圖的橫坐標是分類特徵 time 中的三個值,並且用 hue=’kind’ 又將分類特徵插入到圖像中,即用不同顏色的的點代表又一個分類特徵 kind 的值,最終得到這些類別組合下每個記錄中的 pulse 特徵值,並以上述圖示表示出來。也可以理解為,x=’time’, hue=’kind’ 引入了圖中的兩個特徵維度。

語句 ① 中,就沒有特別聲明參數 kind 的值,此時是使用默認值 ‘strip’。

與 ① 等效的還有另外一個對應函數 sns.stripplot。

輸出結果:

② 與 ① 的效果一樣。

不過,在 sns.catplot 中的兩個參數 row、col,在類似 sns.stripplot 這樣的專有函數中是沒有的。因此,下面的圖,只有用 sns.catplot 才能簡潔直觀。

輸出結果:

不過,如果換一個叫角度來說,類似 sns.stripplot 這樣的專有函數,表達簡單,參數與 sns.catplot 相比,有所精簡,使用起來更方便。

仔細比較,sns.catplot 和 sns.stripplot 兩者還是稍有區別的,雖然在一般情況下兩者是通用的。

因此,不要追求某一個是萬能的,各有各的用途,存在即合理。

不過,下面的聲明請注意: 如果沒有非常的必要,比如繪製分區圖,在本課中後續都演示如何使用專有名稱的函數。

前面已經初步解釋了這個函數,為了格式完整,這裡再重複一下,即 sns.catplot 中參數 kind=’strip’。

如果非要將此函數翻譯為漢語,可以稱之為「條狀散點圖」。以分類特徵為一坐標軸,在另外一個坐標軸上,根據分類特徵,將該分類特徵數據所在記錄中的連續值沿坐標軸描點。

從語句 ② 的結果圖中可以看到,這些點雖然縱軸的數值有相同的,但是沒有將它們重疊。因此,我們看到的好像是「一束」散點,實際上,所有點的橫坐標都應該是相應特徵分類數據,也不要把分類特徵的值理解為一個範圍,分散開僅僅是為了圖示的視覺需要。

輸出結果:

④ 相對 ② 的圖示,在於此時同一縱軸值的都重合了——本來它們的橫軸值都是一樣的。實現此效果的參數是 jitter=0,它可以表示點的「振動」,如果默認或者 jitter=True,意味著允許描點在某個範圍振動——語句 ② 的效果;還可設置為某個 0 到 1 的浮點,表示許可振動的幅度。請對比下面的操作。

輸出結果:

語句 ② 中使用 hue=’kind’ 參數向圖中提供了另外一個分類特徵,但是,如果感覺圖有點亂,還可以這樣做:

輸出結果:

dodge=True 的作用就在於將 hue=’kind’ 所引入的特徵數據分開,相對 ② 的效果有很大差異。

並且,在 ⑤ 中還使用了 paletter=’Set2′ 設置了色彩方案。

sns.stripplot 函數中的其他有關參數,請讀者使用幫助文檔了解。

此函數即 sns.catplot 的參數 kind=’swarm’。

輸出結果:

再繪製一張簡單的圖,一遍研究這種圖示的本質。

輸出結果:

此圖只使用了一個特徵的數據,簡化表象,才能探究 sns.swarmplot 的本質。它同樣是將該特徵中的數據,依據其他特徵的連續值在圖中描點,並且所有點在默認情況下不彼此重疊——這方面與 sns.stripplot 一樣。但是,與之不同的是,這些點不是隨機分布的,它們經過調整之後,均勻對稱分布在分類特徵數值所在直線的兩側,這樣能很好地表示數據的分布特點。但是,這種方式不適合「大數據」。

sns.swarmplot 的參數似乎也沒有什麼太特殊的。下面使用幾個,熟悉一番基本操作。

在分類維度上還可以再引入一個維度,用不同顏色的點表示另外一種類別,即使用 hue 參數來實現。

輸出結果:

這裡用 hue = ‘smoker’ 參數又引入了一個分類特徵,在圖中用不同顏色來區分。

如果覺得會 smoker 特徵的值都混在一起有點亂,還可以使用下面方式把他們分開——老調重彈。

輸出結果:

生成此效果的參數就是 dodge=True,它的作用就是當 hue 參數設置了特徵之後,將 hue 的特徵數據進行分類。

sns.catplot 函數的參數 kind 可以有三個值,都是用於繪製分類的分布圖:

下面依次對這三個專有函數進行闡述。

用python語言將Excle表格數據分類,該怎麼做?

先import xlrd庫,然後循環把數據讀出來,在根據你自己的條件排序或操作就好了啊

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/304566.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-01 11:05
下一篇 2025-01-01 11:05

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論