Langchain系列文章目錄
01-玩轉LangChain:從模型調用到Prompt模板與輸出解析的完整指南
02-玩轉 LangChain Memory 模塊:四種記憶類型詳解及應用場景全覆蓋
03-全面掌握 LangChain:從核心鏈條構建到動態任務分配的實戰指南
04-玩轉 LangChain:從文檔加載到高效問答系統構建的全程實戰
05-玩轉 LangChain:深度評估問答系統的三種高效方法(示例生成、手動評估與LLM輔助評估)
06-從 0 到 1 掌握 LangChain Agents:自定義工具 + LLM 打造智能工作流!
python系列文章目錄
01-Python 基礎語法入門:從變量到輸入輸出,零基礎也能學會!
02-Python 流程控制終極指南:if-else 和 for-while深度解析
03-Python 列表與元組全攻略:從新手到高手的必備指南
04-Python 字典與集合:從入門到精通的全面解析
05-Python函數入門指南:從定義到應用
06-Python 函數高級特性:從默認參數到閉包的全面解析
07-Python 模塊與包:從零到自定義的全面指南
08-Python異常處理:從入門到精通的實用指南
09-Python 文件操作:從零基礎到日志記錄實戰
10-Python面向對象編程入門:從類與對象到方法與屬性
11-Python類的方法與屬性:從入門到進階的全面解析
12-Python繼承與多態:提升代碼復用與靈活性的關鍵技術
13-掌握Python魔法方法:如何用__add__和__len__自定義類的行為
14-python面向對象編程總結:從基礎到進階的 OOP 核心思想與設計技巧
15-掌握 Python 高級特性:深入理解迭代器與生成器
16-用 Python 裝飾器提升效率:日志與權限驗證案例
17-再也不怕資源泄漏!Python 上下文管理器,with語句全攻略
18-Python 標準庫必備模塊:math、random、os、json 全解析
19-Python 性能優化:從入門到精通的實用指南
20-Python內存管理與垃圾回收全解析
21-Python 代碼調試與測試:從 pdb 到 TDD 的全面指南
22-Python 代碼風格終極指南:從 PEP 8 到最佳實踐全解析
23-Python實現網絡通信:Socket模塊與TCP/IP協議全解析
24-Python如何用requests庫實現HTTP請求與響應?從零到實戰全解析
25-并發編程基礎:從線程到進程的Python實踐
26-Python 網絡編程實戰:5分鐘實現多線程下載工具與 Web 服務器
27-Python 數據處理基礎:從 CSV 到可視化,一文掌握
28-Python 科學計算與機器學習入門:NumPy + Scikit-Learn 實戰指南
文章目錄
- Langchain系列文章目錄
- python系列文章目錄
- 前言
- 一、科學計算:使用 `numpy` 進行數值計算
- 1.1 什么是 `numpy`?
- 1.1.1 `numpy` 的核心優勢
- 1.1.2 安裝與導入
- 1.2 `numpy` 的基礎操作
- 1.2.1 創建數組
- 1.2.2 數組運算
- 1.2.3 索引與切片
- 1.3 `numpy` 的高級特性
- 1.3.1 廣播(Broadcasting)
- 1.3.2 通用函數(ufuncs)
- 1.3.3 常見問題與解決
- 二、機器學習:使用 `scikit-learn` 實現模型
- 2.1 什么是 `scikit-learn`?
- 2.1.1 安裝與導入
- 2.1.2 適用場景
- 2.2 機器學習基礎
- 2.2.1 監督與無監督學習
- 2.2.2 數據拆分
- 2.3 實現機器學習模型
- 2.3.1 分類:Iris 數據集
- 2.3.2 回歸:房價預測
- (1)特征縮放的重要性
- (2)可視化結果
- 三、實際案例:綜合應用
- 3.1 科學計算的應用
- 3.1.1 矩陣運算
- 3.1.2 物理模擬
- 3.2 機器學習案例:房價預測
- 3.2.1 數據預處理
- 3.2.2 模型訓練與評估
- 四、總結
前言
在 Python 的數據科學生態中,科學計算和機器學習是兩個核心領域,廣泛應用于數據分析、建模和預測等場景。作為第七周第32天的內容,本文將帶你探索如何使用 numpy
進行高效的數值計算,以及如何借助 scikit-learn
實現機器學習模型。無論你是剛接觸 Python 的初學者,還是希望深入機器學習的高階開發者,本文都將為你提供清晰的學習路徑和實用的代碼示例。
一、科學計算:使用 numpy
進行數值計算
1.1 什么是 numpy
?
numpy
是 Python 中用于科學計算的基礎庫,提供了一個高效的多維數組對象(ndarray
)和豐富的數學函數。它是數據分析和機器學習的基石,支持快速的數值運算和大規模數據處理。
1.1.1 numpy
的核心優勢
- 高效性:相比 Python 原生列表,
numpy
使用 C 語言實現,運算速度更快。 - 數組操作:支持向量化計算,避免顯式循環,提升代碼簡潔性。
- 廣泛應用:從矩陣運算到統計分析,
numpy
無處不在。
1.1.2 安裝與導入
確保你已安裝 numpy
,可以通過以下命令安裝:
pip install numpy
導入庫:
import numpy as np
1.2 numpy
的基礎操作
1.2.1 創建數組
數組是 numpy
的核心數據結構,以下是幾種常見創建方式:
- 從列表創建:
import numpy as np
a = np.array([1, 2, 3]) # 一維數組
b = np.array([[1, 2], [3, 4]]) # 二維數組
print(a) # [1 2 3]
print(b) # [[1 2] [3 4]]
- 使用內置函數:
zeros = np.zeros((2, 3)) # 2x3 全零數組
ones = np.ones((2, 2)) # 2x2 全一數組
print(zeros) # [[0. 0. 0.] [0. 0. 0.]]
1.2.2 數組運算
numpy
支持元素級的運算,簡單高效:
- 加減乘除:
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b) # [5 7 9]
print(a * b) # [4 10 18]
- 統計計算:
print(np.mean(a)) # 2.0
print(np.sum(b)) # 15
1.2.3 索引與切片
訪問和修改數組元素非常直觀:
- 一維數組:
print(a[0]) # 1
print(a[1:3]) # [2 3]
- 二維數組:
print(b[0, 1]) # 2
print(b[:, 0]) # [1 3],獲取第一列
1.3 numpy
的高級特性
1.3.1 廣播(Broadcasting)
廣播允許在不同形狀的數組間進行運算:
- 示例:
c = a + 10 # 標量 10 被廣播到每個元素
print(c) # [11 12 13]
1.3.2 通用函數(ufuncs)
通用函數對數組元素逐一應用數學運算:
- 示例:
sin_a = np.sin(a)
print(sin_a) # [0.8415 0.9093 0.1411]
1.3.3 常見問題與解決
- 問題:初學者常混淆數組形狀(如
(3,)
vs(3,1)
)。 - 解決:使用
array.shape
檢查形狀,確保運算兼容。
二、機器學習:使用 scikit-learn
實現模型
2.1 什么是 scikit-learn
?
scikit-learn
是 Python 中最流行的機器學習庫,提供簡單高效的工具,支持分類、回歸、聚類等任務。它與 numpy
無縫集成,適合快速構建模型。
2.1.1 安裝與導入
安裝命令:
pip install scikit-learn
導入示例:
from sklearn.linear_model import LinearRegression
2.1.2 適用場景
- 分類:識別物體類別。
- 回歸:預測連續值,如房價。
2.2 機器學習基礎
2.2.1 監督與無監督學習
- 監督學習:使用帶標簽數據訓練,例如預測房價(回歸)或分類花卉(分類)。
- 無監督學習:發現數據中的隱藏模式,如聚類。
2.2.2 數據拆分
機器學習需要將數據分為訓練集和測試集:
from sklearn.model_selection import train_test_split
X, y = np.random.rand(100, 2), np.random.rand(100) # 模擬數據
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
2.3 實現機器學習模型
2.3.1 分類:Iris 數據集
使用邏輯回歸分類 Iris 數據:
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 加載數據
iris = load_iris()
X, y = iris.data, iris.target# 拆分數據
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 訓練模型
model = LogisticRegression(max_iter=200) # max_iter 避免收斂警告
model.fit(X_train, y_train)# 預測與評估
y_pred = model.predict(X_test)
print(f"準確率: {accuracy_score(y_test, y_pred):.2f}")
2.3.2 回歸:房價預測
使用線性回歸預測房價:
from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 加載數據
housing = fetch_california_housing()
X, y = housing.data, housing.target# 拆分數據
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 訓練模型
model = LinearRegression()
model.fit(X_train, y_train)# 預測與評估
y_pred = model.predict(X_test)
print(f"均方誤差: {mean_squared_error(y_test, y_pred):.2f}")
(1)特征縮放的重要性
- 問題:特征范圍差異大時,模型性能可能下降。
- 解決:使用
StandardScaler
標準化數據:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
(2)可視化結果
使用 Matplotlib(上篇文章已介紹)繪制預測結果:
import matplotlib.pyplot as plt
plt.scatter(y_test, y_pred, alpha=0.5)
plt.xlabel("實際值")
plt.ylabel("預測值")
plt.show()
三、實際案例:綜合應用
3.1 科學計算的應用
3.1.1 矩陣運算
計算矩陣乘法:
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.dot(A, B) # 矩陣乘法
print(C) # [[19 22] [43 50]]
3.1.2 物理模擬
模擬簡單的自由落體:
t = np.linspace(0, 5, 100) # 時間
g = 9.8 # 重力加速度
h = 0.5 * g * t**2 # 距離
3.2 機器學習案例:房價預測
3.2.1 數據預處理
使用 numpy
清洗數據:
X = np.array([[50, 2], [60, 3], [70, 4]]) # 面積、房間數
y = np.array([150, 180, 210]) # 房價
3.2.2 模型訓練與評估
model = LinearRegression()
model.fit(X, y)
y_pred = model.predict(X)
print(f"均方誤差: {mean_squared_error(y, y_pred):.2f}")
四、總結
本文從 numpy
的數值計算入手,介紹了數組創建、運算和高級特性,隨后通過 scikit-learn
展示了機器學習的基礎知識和模型實現方法。通過實際案例,你可以將這些技術應用到真實場景中。希望你能繼續探索 Python 在科學計算和機器學習中的無限可能!