一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python數(shù)據(jù)分析、挖掘常用工具

 黃爸爸好 2019-08-20

來源:Python愛好者社區(qū)

ID:python_shequ

作者:深度沉迷學(xué)習

Python語言:

簡要概括一下Python語言在數(shù)據(jù)分析、挖掘場景中常用特性:

  1. 列表(可以被修改),元組(不可以被修改)

  2. 字典(<k,v>結(jié)構(gòu))

  3. 集合(同數(shù)學(xué)概念上的集合)

  4. 函數(shù)式編程(主要由lambda()、map()、reduce()、filter()構(gòu)成)

Python數(shù)據(jù)分析常用庫:

Python數(shù)據(jù)挖掘相關(guān)擴展庫

NumPy

提供真正的數(shù)組,相比Python內(nèi)置列表來說速度更快,NumPy也是Scipy、Matplotlib、Pandas等庫的依賴庫,內(nèi)置函數(shù)處理數(shù)據(jù)速度是C語言級別的,因此使用中應(yīng)盡量使用內(nèi)置函數(shù)。

示例:NumPy基本操作

import numpy as np  # 一般以np為別名

a = np.array([2, 0, 1, 5])
print(a)
print(a[:3])
print(a.min())
a.sort()  # a被覆蓋
print(a)
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b*b)

輸出:

[2 0 1 5]
[2 0 1]
0
[0 1 2 5]
[[ 1  4  9]
[16 25 36]]

Scipy

NumPy和Scipy讓Python有了MATLAB味道。Scipy依賴于NumPy,NumPy提供了多維數(shù)組功能,但只是一般的數(shù)組并不是矩陣。比如兩個數(shù)組相乘時,只是對應(yīng)元素相乘。Scipy提供了真正的矩陣,以及大量基于矩陣運算的對象與函數(shù)。

Scipy包含功能有最優(yōu)化、線性代數(shù)、積分、插值、擬合、特殊函數(shù)、快速傅里葉變換、信號處理、圖像處理、常微分方程求解等常用計算。

示例:Scipy求解非線性方程組和數(shù)值積分

# 求解方程組
from scipy.optimize import fsolve

def f(x):
   x1 = x[0]
   x2 = x[1]
   return [2 * x1 - x2 ** 2 - 1, x1 ** 2 - x2 - 2]


result = fsolve(f, [1, 1])
print(result)

# 積分
from scipy import integrate

def g(x):  # 定義被積函數(shù)
   return (1 - x ** 2) ** 0.5

pi_2, err = integrate.quad(g, -1, 1)  # 輸出積分結(jié)果和誤差
print(pi_2 * 2, err)

輸出:

[ 1.91963957  1.68501606]
3.141592653589797 1.0002356720661965e-09

Matplotlib

Python中著名的繪圖庫,主要用于二維繪圖,也可以進行簡單的三維繪圖。

示例:Matplotlib繪圖基本操作

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 10000)  # 自變量x,10000為點的個數(shù)
y = np.sin(x) + 1  # 因變量y
z = np.cos(x ** 2) + 1  # 因變量z

plt.figure(figsize=(8, 4))  # 設(shè)置圖像大小
# plt.rcParams['font.sans-serif'] = 'SimHei'  # 標簽若有中文,則需設(shè)置字體
# plt.rcParams['axes.unicode_minus'] = False  # 保存圖像時若負號顯示不正常,則添加該句

# 兩條曲線
plt.plot(x, y, label='$\sin (x+1)$', color='red', linewidth=2)  # 設(shè)置標簽,線條顏色,線條大小
plt.plot(x, z, 'b--', label='$\cos x^2+1$')

plt.xlim(0, 10)  # x坐標范圍
plt.ylim(0, 2.5)  # y坐標范圍

plt.xlabel('Time(s)')  # x軸名稱
plt.ylabel('Volt')  # y軸名稱
plt.title('Matplotlib Sample')  # 圖的標題

plt.legend()  # 顯示圖例
plt.show()  # 顯示作圖結(jié)果

輸出:

Pandas

Pandas是Python下非常強大的數(shù)據(jù)分析工具。它建立在NumPy之上,功能很強大,支持類似SQL的增刪改查,并具有豐富的數(shù)據(jù)處理函數(shù),支持時間序列分析功能,支持靈活處理缺失數(shù)據(jù)等。

Pandas基本數(shù)據(jù)結(jié)構(gòu)是Series和DataFrame。Series就是序列,類似一維數(shù)組,DataFrame則相當于一張二維表格,類似二維數(shù)組,它每一列都是一個Series。為定位Series中的元素,Pandas提供了Index對象,類似主鍵。

DataFrame本質(zhì)上是Series的容器。

示例:Pandas簡單操作

import pandas as pd

s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
d = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18]], columns=['a', 'b', 'c'])
d2 = pd.DataFrame(s)

print(s)
print(d.head())  # 預(yù)覽前5行
print(d.describe())

# 讀取文件(路徑最好別帶中文)
df=pd.read_csv('G:\\data.csv', encoding='utf-8')
print(df)

輸出:

a    1
b    2
c    3
dtype: int64
   a   b   c
0   1   2   3
1   4   5   6
2   7   8   9
3  10  11  12
4  13  14  15
              a          b          c
count   6.000000   6.000000   6.000000
mean    8.500000   9.500000  10.500000
std     5.612486   5.612486   5.612486
min     1.000000   2.000000   3.000000
25%     4.750000   5.750000   6.750000
50%     8.500000   9.500000  10.500000
75%    12.250000  13.250000  14.250000
max    16.000000  17.000000  18.000000
Empty DataFrame
Columns: [1068, 12, 蔬果, 1201, 蔬菜, 120104, 花果, 20150430, 201504, DW-1201040010, 散稱, 生鮮, 千克, 0.973, 5.43, 2.58, 否]
Index: []

Scikit-Learn

Scikit-Learn依賴NumPy、Scipy和Matplotlib,是Python中強大的機器學(xué)習庫,提供了諸如數(shù)據(jù)預(yù)處理、分類、回歸、聚類、預(yù)測和模型分析等功能。

示例:創(chuàng)建線性回歸模型

from sklearn.linear_model import LinearRegression
model= LinearRegression()
print(model)

  1. 所有模型都提供的接口:

model.fit():訓(xùn)練模型,監(jiān)督模型是fit(X,y),無監(jiān)督模型是fit(X)

  1. 監(jiān)督模型提供的接口:

model.predict(X_new):預(yù)測新樣本
model.predict_proba(X_new):預(yù)測概率,僅對某些模型有用(LR)

  1. 無監(jiān)督模型提供的接口:

model.ransform():從數(shù)據(jù)中學(xué)到新的“基空間”
model.fit_transform():從數(shù)據(jù)中學(xué)到的新的基,并將這個數(shù)據(jù)按照這組“基”進行轉(zhuǎn)換

Scikit-Learn本身自帶了一些數(shù)據(jù)集,如花卉和手寫圖像數(shù)據(jù)集等,下面以花卉數(shù)據(jù)集舉個栗子,訓(xùn)練集包含4個維度——萼片長度、寬度,花瓣長度和寬度,以及四個亞屬分類結(jié)果。

示例:

from sklearn import datasets  # 導(dǎo)入數(shù)據(jù)集
from sklearn import svm

iris = datasets.load_iris()  # 加載數(shù)據(jù)集
clf = svm.LinearSVC()  # 建立線性SVM分類器
clf.fit(iris.data, iris.target)  # 用數(shù)據(jù)訓(xùn)練模型
print(clf.predict([[5, 3, 1, 0.2], [5.0, 3.6, 1.3, 0.25]]))

輸出:   

[0 0]

Keras

Keras是基于Theano的深度學(xué)習庫,它不僅可以搭建普通神經(jīng)網(wǎng)絡(luò),還可以搭建各種深度學(xué)習模型,如自編碼器、循環(huán)神經(jīng)網(wǎng)絡(luò)、遞歸神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)等,運行速度也很快,簡化了搭建各種神經(jīng)網(wǎng)絡(luò)模型的步驟,允許普通用戶輕松搭建幾百個輸入節(jié)點的深層神經(jīng)網(wǎng)絡(luò),定制度也很高。

示例:簡單的MLP(多層感知器)

from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD

model = Sequential()  # 模型初始化
model.add(Dense(20, 64))  # 添加輸入層(20節(jié)點)、第一隱藏層(64節(jié)點)的連接
model.add(Activation('tanh'))  # 第一隱藏層用tanh作為激活函數(shù)
model.add(Dropout(0.5))  # 使用Dropout防止過擬合
model.add(Dense(64, 64))  # 添加第一隱藏層(64節(jié)點)、第二隱藏層(64節(jié)點)的連接
model.add(Activation('tanh'))  # 第二隱藏層用tanh作為激活函數(shù)
model.add(Dense(64, 1))  # 添加第二隱藏層(64節(jié)點)、輸出層(1節(jié)點)的連接
model.add(Activation('sigmod'))  # 第二隱藏層用sigmod作為激活函數(shù)

sgd=SGD(lr=0.1,decay=1e-6,momentum=0.9,nesterov=True)  # 定義求解算法
model.compile(loss='mean_squared_error',optimizer=sgd)  # 編譯生成模型,損失函數(shù)為平均誤差平方和
model.fit(x_train,y_train,nb_epoch=20,batch_size=16)  # 訓(xùn)練模型
score = model.evaluate(X_test,y_test,batch_size=16)  # 測試模型

參考:

  • Keras中文文檔

  • 如何計算兩個文檔的相似度(二)


Genism

Genism主要用來處理語言方面的任務(wù),如文本相似度計算、LDA、Word2Vec等。

示例:

import logging
from gensim import models

logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s',
                   level=logging.INFO)

sentences = [['first', 'sentence'], ['second', 'sentence']]  # 將分好詞的句子按列表形式輸入
model = models.Word2Vec(sentences, min_count=1)  # 用以上句子訓(xùn)練詞向量模型
print(model['sentence'])  # 輸出單詞sentence的詞向量

輸出:

2017-10-24 19:02:40,785 : INFO : collecting all words and their counts
2017-10-24 19:02:40,785 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types
2017-10-24 19:02:40,785 : INFO : collected 3 word types from a corpus of 4 raw words and 2 sentences
2017-10-24 19:02:40,785 : INFO : Loading a fresh vocabulary
2017-10-24 19:02:40,785 : INFO : min_count=1 retains 3 unique words (100% of original 3, drops 0)
2017-10-24 19:02:40,785 : INFO : min_count=1 leaves 4 word corpus (100% of original 4, drops 0)
2017-10-24 19:02:40,786 : INFO : deleting the raw counts dictionary of 3 items
2017-10-24 19:02:40,786 : INFO : sample=0.001 downsamples 3 most-common words
2017-10-24 19:02:40,786 : INFO : downsampling leaves estimated 0 word corpus (5.7% of prior 4)
2017-10-24 19:02:40,786 : INFO : estimated required memory for 3 words and 100 dimensions: 3900 bytes
2017-10-24 19:02:40,786 : INFO : resetting layer weights
2017-10-24 19:02:40,786 : INFO : training model with 3 workers on 3 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5
2017-10-24 19:02:40,788 : INFO : worker thread finished; awaiting finish of 2 more threads
2017-10-24 19:02:40,788 : INFO : worker thread finished; awaiting finish of 1 more threads
2017-10-24 19:02:40,788 : INFO : worker thread finished; awaiting finish of 0 more threads
2017-10-24 19:02:40,789 : INFO : training on 20 raw words (0 effective words) took 0.0s, 0 effective words/s
2017-10-24 19:02:40,789 : WARNING : under 10 jobs per worker: consider setting a smaller `batch_words' for smoother alpha decay
[ -1.54225400e-03  -2.45212857e-03  -2.20486755e-03  -3.64410551e-03
 -2.28137174e-03  -1.70348200e-03  -1.05830852e-03  -4.37875278e-03
 -4.97106137e-03   3.93485563e-04  -1.97932171e-03  -3.40653211e-03
  1.54990738e-03   8.97102174e-04   2.94041773e-03   3.45200230e-03
 -4.60584508e-03   3.81468004e-03   3.07120802e-03   2.85422982e-04
  7.01598416e-04   2.69670971e-03   4.17246483e-03  -6.48593705e-04
  1.11404411e-03   4.02203249e-03  -2.34672683e-03   2.35153269e-03
  2.32632101e-05   3.76200466e-03  -3.95653257e-03   3.77303245e-03
  8.48884694e-04   1.61545759e-03   2.53374409e-03  -4.25464474e-03
 -2.06338940e-03  -6.84972096e-04  -6.92955102e-04  -2.27969326e-03
 -2.13766913e-03   3.95324081e-03   3.52649018e-03   1.29243149e-03
  4.29229392e-03  -4.34781052e-03   2.42843386e-03   3.12117115e-03
 -2.99768522e-03  -1.17538485e-03   6.67148328e-04  -6.86432002e-04
 -3.58940102e-03   2.40547652e-03  -4.18888079e-03  -3.12567432e-03
 -2.51603196e-03   2.53451476e-03   3.65199335e-03   3.35336081e-03
 -2.50071986e-04   4.15537134e-03  -3.89242987e-03   4.88173496e-03
 -3.34603712e-03   3.18462006e-03   1.57053335e-04   3.51517834e-03
 -1.20337342e-03  -1.81524854e-04   3.57784083e-05  -2.36600707e-03
 -3.77405947e-03  -1.70441647e-03  -4.51521482e-03  -9.47134569e-04
  4.53894213e-03   1.55767589e-03   8.57840874e-04  -1.12304837e-03
 -3.95945460e-03   5.37869288e-04  -2.04461766e-03   5.24829782e-04
  3.76719423e-03  -4.38512256e-03   4.81262803e-03  -4.20147832e-03
 -3.87057988e-03   1.67581497e-03   1.51928759e-03  -1.31744961e-03
  3.28474329e-03  -3.28777428e-03  -9.67226923e-04   4.62622894e-03
  1.34165725e-03   3.60148447e-03   4.80416557e-03  -1.98963983e-03]

參考:

  • 如何計算兩個文檔的相似度(二)

本次筆記是對數(shù)據(jù)分析和挖掘中常用工具的簡要介紹,詳細使用會在以后筆記中進行介紹。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    九七人妻一区二区三区| 黄色日韩欧美在线观看| 成人精品国产亚洲av久久| 亚洲国产欧美精品久久| 粗暴蹂躏中文一区二区三区| 国产精品人妻熟女毛片av久 | 亚洲最大福利在线观看| 亚洲欧美日本成人在线| 少妇一区二区三区精品| 国产精品一区二区三区日韩av| 亚洲一区精品二人人爽久久| 午夜精品成年人免费视频| 国产亚洲二区精品美女久久| 婷婷开心五月亚洲综合| 亚洲中文字幕亲近伦片| 精品一区二区三区免费看| 午夜国产成人福利视频| 国语对白刺激高潮在线视频| 亚洲精品中文字幕无限乱码| 欧美尤物在线观看西比尔| 久久99青青精品免费| 99久久精品国产麻豆| 国产欧美日韩不卡在线视频| 十八禁日本一区二区三区| 精品日韩av一区二区三区| 九九热国产这里只有精品| 成人精品国产亚洲av久久| 欧美三级大黄片免费看| 亚洲国产另类久久精品| 欧美国产日韩变态另类在线看| 高清亚洲精品中文字幕乱码| 日韩夫妻午夜性生活视频| 久久人人爽人人爽大片av| 欧美成人黄色一区二区三区| 国产精品一区日韩欧美| 亚洲最新中文字幕一区| 日韩欧美亚洲综合在线| 亚洲丁香婷婷久久一区| 日韩日韩日韩日韩在线| 热情的邻居在线中文字幕| 99精品国产自在现线观看|