最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python機器學(xué)習(xí)入門(二)之Python數(shù)據(jù)理解

 更新時間:2021年08月27日 15:48:32   作者:靖墨c  
這篇文章主要介紹了Python機器學(xué)習(xí)入門知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

統(tǒng)計學(xué)是什么?概率與數(shù)學(xué)。用概率與數(shù)學(xué)來分析人,分析的永遠不是人。用永遠不是人的結(jié)論指導(dǎo)人實在是一種偏誤。在這個意義上講,解讀強于技術(shù)。

——劉德寰

1.數(shù)據(jù)導(dǎo)入

在訓(xùn)練機器學(xué)習(xí)的模型時,需要大量的數(shù)據(jù),最常用的方法是利用歷史數(shù)據(jù)來訓(xùn)練模型。這些歷史數(shù)據(jù)通常是以csv文件儲存,或者能夠方便地轉(zhuǎn)化為csv文件。在開始機器學(xué)習(xí)時,我們首先要導(dǎo)入csv數(shù)據(jù)文件。

csv文件是用逗號(,)分隔的文本文件。在csv文件中注釋是以(#)開頭。

在接下來的文章中,將使用Pima Indians數(shù)據(jù)集,它是從UCI機器學(xué)習(xí)倉庫(https://archive.ics.uci.edu/ml/index.php)中獲取的。也可到網(wǎng)盤中下載(https://pan.baidu.com/s/1nv2xuVpXWHC1HUdS1c5QaQ)提取碼:d4im。

Pima Indians是一個分類問題的數(shù)據(jù)集,主要記錄了印第安人最近五年內(nèi)是否患有糖尿病的醫(yī)療數(shù)據(jù)。

1.1使用標準Python類庫導(dǎo)入數(shù)據(jù)

Python提供了一個標準的類庫CSV,用來處理CSV文件。

from csv import reader
 
#python標準庫導(dǎo)入數(shù)據(jù)
 
filename = 'pima_data.csv'
with open(filename, 'rt') as raw_data:
    readers = reader(raw_data, delimiter=",")
    x = list(readers)
    data = np.array(x).astype('float')
    print(data.shape)

代碼比較簡單,此處不做過多贅述。

運行結(jié)果:

(768, 9)

1.2使用Numpy導(dǎo)入數(shù)據(jù)

使用numpy的loadtxt()方法導(dǎo)入數(shù)據(jù)。使用這個函數(shù)處理的數(shù)據(jù)沒有文件頭,并且所有的數(shù)據(jù)結(jié)構(gòu)都一樣,也就是說,數(shù)據(jù)類型都一樣。

import numpy as np
#使用Numpy導(dǎo)入數(shù)據(jù)
from numpy import loadtxt
filename = 'pima_data.csv'
with open(filename, 'rt') as raw_data:
    data = loadtxt(raw_data, delimiter=',')
    print(data.shape)

loadtxt中的第一個參數(shù)為數(shù)據(jù)實例,第二個參數(shù)為分隔符。

輸出結(jié)果同上

(768, 9)

1.3使用Pandas導(dǎo)入數(shù)據(jù)

通過Pandas來導(dǎo)入CSV文件要使用pandas.read_csv()函數(shù)。這個函數(shù)的返回值使Data Frame。在機器學(xué)習(xí)的項目中,經(jīng)常利用pandas來做數(shù)據(jù)處理和準備工作。因此,推薦使用Pandas來導(dǎo)入數(shù)據(jù)。

#推薦使用?。。?!
#使用Pandas導(dǎo)入數(shù)據(jù)
from pandas import read_csv
filename = 'pima_data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
#設(shè)置文件頭
data = read_csv(filename, names=names)
print(data.shape)
print(data.head(10))

使用Pandas導(dǎo)入數(shù)據(jù)可以設(shè)置文件頭,便于后續(xù)數(shù)據(jù)理解。read_csv()方法有兩個參數(shù),一個是文件名,一個是文件頭數(shù)組。

輸出結(jié)果同上

(768, 9)

2.數(shù)據(jù)理解

為了得到更準確的結(jié)果,必須理解數(shù)據(jù)的特征、分布情況,以及需要解決的問題,一邊建立相關(guān)的算法模型并進行優(yōu)化。

2.1數(shù)據(jù)基本屬性

對數(shù)據(jù)的簡單審視,是加強對數(shù)據(jù)理解最有效的方法之一。通過對數(shù)據(jù)的觀察,可以發(fā)現(xiàn)數(shù)據(jù)的內(nèi)在關(guān)系。這些發(fā)現(xiàn)有助于對數(shù)據(jù)進行整理。

2.1.1查看前10行數(shù)據(jù)

使用的數(shù)據(jù)集依然是Pima Indians數(shù)據(jù)集:

from pandas import read_csv
 
filename = 'pima_data.csv'
names = ['preg','plas','pres','skin','test','mass', 'pedi','age','class']
data = read_csv(filename,names=names)
#查看前十行數(shù)據(jù)
print(data.head(10))

先使用pandas導(dǎo)入數(shù)據(jù)集,再使用print函數(shù)數(shù)據(jù)data的head屬性以查看前10行數(shù)據(jù)。

輸出結(jié)果:

preg plas pres skin test mass pedi age class
0 6 148 72 35 0 33.6 0.63 50 1
1 1 85 66 29 0 26.6 0.35 31 0
2 8 183 64 0 0 23.3 0.67 32 1
3 1 89 66 23 94 28.1 0.17 21 0
4 0 137 40 35 168 43.1 2.29 33 1
5 5 116 74 0 0 25.6 0.20 30 0
6 3 78 50 32 88 31.0 0.25 26 1
7 10 115 0 0 0 35.3 0.13 29 0
8 2 197 70 45 543 30.5 0.16 53 1
9 8 125 96 0 0 0.0 0.23 54 1

2.1.2查看數(shù)據(jù)維度,數(shù)據(jù)屬性和類型:

'''
數(shù)據(jù)維度
'''
#查看數(shù)據(jù)維度
#通過DATa Frame的shape屬性來查看數(shù)據(jù)集中有多少行多少列
print(data.shape)
 
 
'''
數(shù)據(jù)屬性和類型
'''
#查看數(shù)據(jù)屬性和類型
#通過DATa Frame的Type屬性來查看每一個字段的數(shù)據(jù)類型
print(data.dtypes)

運行結(jié)果:

(768, 9)
preg int64
plas int64
pres int64
skin int64
test int64
mass float64
pedi float64
age int64
class int64
dtype: object

2.1.3查看數(shù)據(jù)描述性統(tǒng)計

通過DataFrame的describe()方法來查看描述性統(tǒng)計的內(nèi)容。包括:數(shù)據(jù)數(shù)量、平均值、標準方差、最小值、下四分位數(shù)、中位數(shù)、上四分位數(shù)、最大值。(省略前方讀取數(shù)據(jù)部分)

from pandas import set_option
 
'''
描述性統(tǒng)計
'''
#通過DATa frame的describe()方法來查看描述性統(tǒng)計
#數(shù)據(jù)記錄數(shù)、平均住、標準方差、最小值、下四分位數(shù)、中位數(shù)、上四分位數(shù)、最大值
set_option('display.width',100)
#設(shè)置數(shù)據(jù)的精確度
set_option('precision',2)
print("數(shù)據(jù)描述性分析:")
print(data.describe())

運行結(jié)果:

數(shù)據(jù)描述性分析:
preg plas pres skin test mass pedi age class
count 768.00 768.00 768.00 768.00 768.00 768.00 768.00 768.00 768.00
mean 3.85 120.89 69.11 20.54 79.80 31.99 0.47 33.24 0.35
std 3.37 31.97 19.36 15.95 115.24 7.88 0.33 11.76 0.48
min 0.00 0.00 0.00 0.00 0.00 0.00 0.08 21.00 0.00
25% 1.00 99.00 62.00 0.00 0.00 27.30 0.24 24.00 0.00
50% 3.00 117.00 72.00 23.00 30.50 32.00 0.37 29.00 0.00
75% 6.00 140.25 80.00 32.00 127.25 36.60 0.63 41.00 1.00
max 17.00 199.00 122.00 99.00 846.00 67.10 2.42 81.00 1.00

2.2數(shù)據(jù)相關(guān)性和分布分析

2.2.1數(shù)據(jù)相關(guān)矩陣

數(shù)據(jù)屬性的相關(guān)性是指數(shù)據(jù)的兩個屬性是否相互影響,以及這種影響是何種方式。常用皮爾遜相關(guān)系數(shù)來表示兩個屬性之間的關(guān)聯(lián)性,它介于(-1,1)。當數(shù)據(jù)的關(guān)聯(lián)性比較高時,有些算法(如Liner、邏輯回歸算法等)的性能會降低。所以需要查看一下算法的關(guān)聯(lián)性。使用Data Frame的corr()方法來計算數(shù)據(jù)屬性之間的相關(guān)矩陣。

print("數(shù)據(jù)屬性的相關(guān)性:")
print(data.corr(method='pearson'))

結(jié)果如下:

數(shù)據(jù)屬性的相關(guān)性:
preg plas pres skin test mass pedi age class
preg 1.00 0.13 0.14 -0.08 -0.07 0.02 -0.03 0.54 0.22
plas 0.13 1.00 0.15 0.06 0.33 0.22 0.14 0.26 0.47
pres 0.14 0.15 1.00 0.21 0.09 0.28 0.04 0.24 0.07
skin -0.08 0.06 0.21 1.00 0.44 0.39 0.18 -0.11 0.07
test -0.07 0.33 0.09 0.44 1.00 0.20 0.19 -0.04 0.13
mass 0.02 0.22 0.28 0.39 0.20 1.00 0.14 0.04 0.29
pedi -0.03 0.14 0.04 0.18 0.19 0.14 1.00 0.03 0.17
age 0.54 0.26 0.24 -0.11 -0.04 0.04 0.03 1.00 0.24
class 0.22 0.47 0.07 0.07 0.13 0.29 0.17 0.24 1.00

2.2.2數(shù)據(jù)分布分析

通過分析數(shù)據(jù)的高斯分布情況來確認數(shù)據(jù)的偏離情況。使用Data Frame的skew()方法來計算所有數(shù)據(jù)屬性的高斯分布偏離情況。

print("數(shù)據(jù)的高斯分布偏離情況:")
print(data.skew())

結(jié)果如下:

數(shù)據(jù)的高斯分布偏離情況:
preg 0.90
plas 0.17
pres -1.84
skin 0.11
test 2.27
mass -0.43
pedi 1.92
age 1.13
class 0.64
dtype: float64

3.數(shù)據(jù)可視化

對數(shù)據(jù)進行理解最快、最有效的方式是通過數(shù)據(jù)的可視化。我們將使用Matplotlib來可視化數(shù)據(jù)以更好地理解數(shù)據(jù)。

3.1單一圖表

3.1.1直方圖

直方圖使用較多,此處不做過多介紹。

from pandas import read_csv
import matplotlib.pyplot as plt
 
filename = 'pima_data.csv'
names = ['preg','plas','pres','skin','test','mass', 'pedi','age','class']
data = read_csv(filename,names=names)
 
'''
直方圖
'''
data.hist()
plt.show()

3.1.2密度圖

密度圖是一種表現(xiàn)與數(shù)據(jù)值對應(yīng)的邊界或域?qū)ο蟮膱D形表示方法,一般用于呈現(xiàn)連續(xù)變量。密度圖類似于對直方圖進行抽象,用平滑的線來描述數(shù)據(jù)的分布。

'''
密度圖
'''
data.plot(kind='density',subplots=True,layout=(3,3),sharex=False,sharey=False)
plt.show()

3.1.3箱線圖

箱線圖又稱盒須圖、盒式圖或箱行圖,是一種用于顯示一組數(shù)據(jù)分散情況的統(tǒng)計圖。

'''
箱線圖
'''
data.plot(kind='box',subplots=True,layout=(3,3),sharex=False,sharey=False)
plt.show()

3.2多重圖表

3.2.1相關(guān)矩陣圖

from pandas import read_csv
import matplotlib.pyplot as plt
import numpy as np
 
filename = 'pima_data.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
 
#相關(guān)矩陣圖
correlations = data.corr()
fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(correlations, vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = np.arange(0,9,1)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_xticklabels(names)
ax.set_yticklabels(names)
plt.show()

3.2.2散點矩陣圖

from pandas import read_csv
import matplotlib.pyplot as plt
import numpy as np
from pandas.plotting import scatter_matrix
 
filename = 'pima_data.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names=names)
 
scatter_matrix(data)
plt.show()

總結(jié)

本文主要講了機器學(xué)習(xí)項目開始前的一些準備工作:導(dǎo)入數(shù)據(jù),數(shù)據(jù)理解和數(shù)據(jù)可視化。導(dǎo)入數(shù)據(jù)有三種方法:Python庫函數(shù),Numpy和Pandas導(dǎo)入,推薦使用Panads導(dǎo)入CSV文件。數(shù)據(jù)理解包括查看數(shù)據(jù)的一些基本屬性以及查看數(shù)據(jù)相關(guān)矩陣和高斯分布情況。數(shù)據(jù)可視化主要介紹了Matplotlib的一些常用方法。

到此這篇關(guān)于Python機器學(xué)習(xí)(二)數(shù)據(jù)理解的文章就介紹到這了,更多相關(guān)Python機器學(xué)習(xí)(二)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

孝昌县| 鄂温| 清水县| 寿光市| 中阳县| 益阳市| 库车县| 齐河县| 镇赉县| 泰兴市| 万源市| 常德市| 偃师市| 宜州市| 铁岭市| 徐汇区| 兴义市| 福贡县| 霍林郭勒市| 会理县| 师宗县| 红河县| 高台县| 屯门区| 阳江市| 巫溪县| 泽州县| 定日县| 汤原县| 乌兰浩特市| 方山县| 衡山县| 星座| 德清县| 墨竹工卡县| 泽库县| 衢州市| 合川市| 德令哈市| 嘉鱼县| 崇州市|