??????教程全知識點簡介:1.機器學(xué)習(xí)常用科學(xué)計算庫包括基礎(chǔ)定位、目標。2. 人工智能概述涵蓋人工智能應(yīng)用場景、人工智能小案例、人工智能發(fā)展必備三要素、人工智能機器學(xué)習(xí)和深度學(xué)習(xí)。3. 機器學(xué)習(xí)概述包括機器學(xué)習(xí)工作流程、什么是機器學(xué)習(xí)、模型評估(回歸模型評估、擬合)、Azure機器學(xué)習(xí)模型搭建、完整機器學(xué)習(xí)項目流程。4. 機器學(xué)習(xí)基礎(chǔ)環(huán)境安裝與使用包括Jupyter Notebook使用(一級標題、Jupyter Notebook中自動補全代碼等相關(guān)功能拓展)。5. Matplotlib可視化涵蓋Matplotlib HelloWorld(什么是Matplotlib、實現(xiàn)簡單Matplotlib畫圖折線圖、畫出溫度變化圖、準備數(shù)據(jù)、創(chuàng)建畫布、繪制折線圖、顯示圖像、構(gòu)造x軸刻度標簽、修改坐標刻度顯示、設(shè)置中文字體、設(shè)置正常顯示符號、保存圖片)、添加坐標軸刻度、添加網(wǎng)格顯示、添加描述信息、圖像保存、設(shè)置圖形風(fēng)格、常見圖形繪制(常見圖形種類意義、散點圖繪制)。6. Numpy包括Numpy優(yōu)勢、N維數(shù)組ndarray(ndarray屬性)、基本操作(生成數(shù)組方法、生成0和1數(shù)組、從現(xiàn)有數(shù)組生成、創(chuàng)建符合正態(tài)分布stock漲跌幅數(shù)據(jù))、數(shù)組間運算(數(shù)組與數(shù)的運算)。7. Pandas數(shù)據(jù)結(jié)構(gòu)包括Series、DataFrame。8. 文件讀取與存儲涵蓋CSV(read_csv)、HDF(read_hdf與to_hdf)、JSON(read_josn)。9. 高級處理數(shù)據(jù)離散化包括為什么要離散化、什么是數(shù)據(jù)離散化、stock漲跌幅離散化(讀取stock數(shù)據(jù)、將stock漲跌幅數(shù)據(jù)進行分組、stock漲跌幅分組數(shù)據(jù)變成one_hot編碼)、案例實現(xiàn)。

??????????本站這篇博客:???http://www.itdecent.cn/p/2c023c455951 ???中查看
??????????本站這篇博客:???http://www.itdecent.cn/p/2c023c455951 ???中查看
? 本教程項目亮點
?? 知識體系完整:覆蓋從基礎(chǔ)原理、核心方法到高階應(yīng)用的全流程內(nèi)容
?? 全技術(shù)鏈覆蓋:完整前后端技術(shù)棧,涵蓋開發(fā)必備技能
?? 從零到實戰(zhàn):適合 0 基礎(chǔ)入門到提升,循序漸進掌握核心能力
?? 豐富文檔與代碼示例:涵蓋多種場景,可運行、可復(fù)用
?? 工作與學(xué)習(xí)雙參考:不僅適合系統(tǒng)化學(xué)習(xí),更可作為日常開發(fā)中的查閱手冊
?? 模塊化知識結(jié)構(gòu):按知識點分章節(jié),便于快速定位和復(fù)習(xí)
?? 長期可用的技術(shù)積累:不止一次學(xué)習(xí),而是能伴隨工作與項目長期參考
??????全教程總章節(jié)


??????本篇主要內(nèi)容
Numpy
學(xué)習(xí)目標
- 了解Numpy運算速度上的優(yōu)勢
- 知道數(shù)組的屬性,形狀、類型
- 應(yīng)用Numpy實現(xiàn)數(shù)組的基本操作
- 應(yīng)用隨機數(shù)組的創(chuàng)建實現(xiàn)正態(tài)分布應(yīng)用
- 應(yīng)用Numpy實現(xiàn)數(shù)組的邏輯運算
- 應(yīng)用Numpy實現(xiàn)數(shù)組的統(tǒng)計運算
- 應(yīng)用Numpy實現(xiàn)數(shù)組之間的運算
4.4 ndarray運算
學(xué)習(xí)目標
-
目標
- 應(yīng)用數(shù)組的通用判斷函數(shù)
- 應(yīng)用np.where實現(xiàn)數(shù)組的三元運算
問題
如果想要操作符合某一條件的數(shù)據(jù),應(yīng)該怎么做?
1 邏輯運算
# 生成10名同學(xué),5門功課的數(shù)據(jù)
>>> score = np.random.randint(40, 100, (10, 5))
# 取出最后4名同學(xué)的成績,用于邏輯判斷
>>> test_score = score[6:, 0:5]
# 邏輯判斷, 如果成績大于60就標記為True 否則為False
>>> test_score > 60
array([[ True, True, True, False, True],
[ True, True, True, False, True],
[ True, True, False, False, True],
[False, True, True, True, True]])
# BOOL賦值, 將滿足條件的設(shè)置為指定的值-布爾索引
>>> test_score[test_score > 60] = 1
>>> test_score
array([[ 1, 1, 1, 52, 1],
[ 1, 1, 1, 59, 1],
[ 1, 1, 44, 44, 1],
[59, 1, 1, 1, 1]])
2 通用判斷函數(shù)
- np.all()
# 判斷前兩名同學(xué)的成績[0:2, :]是否全及格
>>> np.all(score[0:2, :] > 60)
False
- np.any()
# 判斷前兩名同學(xué)的成績[0:2, :]是否有大于90分的
>>> np.any(score[0:2, :] > 80)
True
3 np.where(三元運算符)
通過使用np.where能夠進行更加復(fù)雜的運算
- np.where()
# 判斷前四名學(xué)生,前四門中,成績中大于60的置為1,否則為0
temp = score[:4, :4]
np.where(temp > 60, 1, 0)
- 復(fù)合邏輯需要結(jié)合np.logical_and和np.logical_or使用
# 判斷前四名學(xué)生,前四門中,成績中大于60且小于90的換為1,否則為0
np.where(np.logical_and(temp > 60, temp < 90), 1, 0)
# 判斷前四名學(xué)生,前四門中,成績中大于90或小于60的換為1,否則為0
np.where(np.logical_or(temp > 90, temp < 60), 1, 0)
4 統(tǒng)計運算
如果想要知道學(xué)生成績最大的分數(shù),或者做小分數(shù)應(yīng)該怎么做?
4.1 統(tǒng)計指標
在數(shù)據(jù)挖掘/機器學(xué)習(xí)領(lǐng)域,統(tǒng)計指標的值也是我們分析問題的一種方式。常用的指標如下:
-
min(a, axis)
- Return the minimum of an array or minimum along an axis.
-
max(a, axis])
- Return the maximum of an array or maximum along an axis.
-
median(a, axis)
- Compute the median along the specified axis.
-
mean(a, axis, dtype)
- Compute the arithmetic mean along the specified axis.
-
std(a, axis, dtype)
- Compute the standard deviation along the specified axis.
-
var(a, axis, dtype)
- Compute the variance along the specified axis.
4.2 案例:學(xué)生成績統(tǒng)計運算
進行統(tǒng)計的時候,axis 軸的取值并不一定,Numpy中不同的API軸的值都不一樣,在這里,axis 0代表列, axis 1代表行去進行統(tǒng)計
# 接下來對于前四名學(xué)生,進行一些統(tǒng)計運算
# 指定列 去統(tǒng)計
temp = score[:4, 0:5]
print("前四名學(xué)生,各科成績的最大分:{}".format(np.max(temp, axis=0)))
print("前四名學(xué)生,各科成績的最小分:{}".format(np.min(temp, axis=0)))
print("前四名學(xué)生,各科成績波動情況:{}".format(np.std(temp, axis=0)))
print("前四名學(xué)生,各科成績的平均分:{}".format(np.mean(temp, axis=0)))
結(jié)果:
前四名學(xué)生,各科成績的最大分:[96 97 72 98 89]
前四名學(xué)生,各科成績的最小分:[55 57 45 76 77]
前四名學(xué)生,各科成績波動情況:[16.25576821 14.92271758 10.40432602 8.0311892 4.32290412]
前四名學(xué)生,各科成績的平均分:[78.5 75.75 62.5 85. 82.25]
如果需要統(tǒng)計出某科最高分對應(yīng)的是哪個同學(xué)?
- np.argmax(temp, axis=)
- np.argmin(temp, axis=)
print("前四名學(xué)生,各科成績最高分對應(yīng)的學(xué)生下標:{}".format(np.argmax(temp, axis=0)))
結(jié)果:
前四名學(xué)生,各科成績最高分對應(yīng)的學(xué)生下標:[0 2 0 0 1]
5 小結(jié)
-
邏輯運算【知道】
- 直接進行大于,小于的判斷
- 合適之后,可以直接進行賦值
-
通用判斷函數(shù)【知道】
- np.all()
- np.any()
-
統(tǒng)計運算【掌握】
- np.max()
- np.min()
- np.median()
- np.mean()
- np.std()
- np.var()
- np.argmax(axis=) — 最大元素對應(yīng)的下標
- np.argmin(axis=) — 最小元素對應(yīng)的下標
4.5 數(shù)組間運算
學(xué)習(xí)目標
-
目標
- 知道數(shù)組與數(shù)之間的運算
- 知道數(shù)組與數(shù)組之間的運算
- 說明數(shù)組間運算的廣播機制
1 數(shù)組與數(shù)的運算
arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr + 1
arr / 2
# 可以對比python列表的運算,看出區(qū)別
a = [1, 2, 3, 4, 5]
a * 3
2 數(shù)組與數(shù)組的運算
arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr2 = np.array([[1, 2, 3, 4], [3, 4, 5, 6]])
上面這個能進行運算嗎,結(jié)果是不行的!
2.1 廣播機制
數(shù)組在進行矢量化運算時,要求數(shù)組的形狀是相等的。當形狀不相等的數(shù)組執(zhí)行算術(shù)運算的時候,就會出現(xiàn)廣播機制,該機制會對數(shù)組進行擴展,使數(shù)組的shape屬性值一樣,這樣,就可以進行矢量化運算了。下面通過一個例子進行說明:
arr1 = np.array([[0],[1],[2],[3]])
arr1.shape
# (4, 1)
arr2 = np.array([1,2,3])
arr2.shape
# (3,)
arr1+arr2
# 結(jié)果是:
array([[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6]])
上述代碼中,數(shù)組arr1是4行1列,arr2是1行3列。這兩個數(shù)組要進行相加,按照廣播機制會對數(shù)組arr1和arr2都進行擴展,使得數(shù)組arr1和arr2都變成4行3列。
下面通過一張圖來描述廣播機制擴展數(shù)組的過程:
這句話乃是理解廣播的核心。廣播主要發(fā)生在兩種情況,一種是兩個數(shù)組的維數(shù)不相等,但是它們的后緣維度的軸長相符,另外一種是有一方的長度為1。
廣播機制實現(xiàn)了時兩個或兩個以上數(shù)組的運算,即使這些數(shù)組的shape不是完全相同的,只需要滿足如下任意一個條件即可。
- 如果兩個數(shù)組的后緣維度(trailing dimension,即從末尾開始算起的維度)的軸長度相符,
- 或其中的一方的長度為1。
廣播會在缺失和(或)長度為1的維度上進行。
廣播機制需要擴展維度小的數(shù)組,使得它與維度最大的數(shù)組的shape值相同,以便使用元素級函數(shù)或者運算符進行運算。
如果是下面這樣,則不匹配:
A (1d array): 10
B (1d array): 12
A (2d array): 2 x 1
B (3d array): 8 x 4 x 3
思考:下面兩個ndarray是否能夠進行運算?
arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr2 = np.array([[1], [3]])
3 小結(jié)
-
數(shù)組運算,滿足廣播機制,就OK【知道】
- 1.維度相等
- 2.shape(其中對應(yīng)的地方為1,也是可以的)
4.6 數(shù)學(xué):矩陣
學(xué)習(xí)目標
-
目標
- 知道什么是矩陣和向量
- 知道矩陣的加法,乘法
- 知道矩陣的逆和轉(zhuǎn)置
- 應(yīng)用np.matmul、np.dot實現(xiàn)矩陣運算
1 矩陣和向量
1.1 矩陣
矩陣,英文matrix,和array的區(qū)別矩陣必須是2維的,但是array可以是多維的。
如圖:這個是 3×2 矩陣,即 3 行 2 列,如 m 為行,n 為列,那么 m×n 即 3×2<span class="katex-display"><span>無法顯示</span></span>矩陣的維數(shù)即行數(shù)×列數(shù)
矩陣元素(矩陣項):<span class="katex-display"><span>無法顯示</span></span>Aij 指第 i 行,第 j 列的元素。
1.2 向量
向量是一種特殊的矩陣,講義中的向量一般都是列向量,下面展示的就是三維列 向量(3×1)。)<span class="katex-display"><span>A=[123] A = \left[ \begin{matrix} 1 \ 2 \ 3 \end{matrix} \right] A=??123??</span></span>
2 加法和標量乘法
矩陣的加法:行列數(shù)相等的可以加。
例:<span class="katex-display"><span>無法顯示</span></span>矩陣的乘法:每個元素都要乘。
例:<span class="katex-display"><span>無法顯示</span></span>組合算法也類似。
3 矩陣向量乘法
矩陣和向量的乘法如圖:m×n 的矩陣乘以 n×1 的向量,得到的是 m×1 的向量
例:<span class="katex-display"><span>無法顯示</span></span>
1*1+3*5 = 16
4*1+0*5 = 4
2*