Python的秘密基地--[章节8] Python 数据科学与机器学习
第8章:Python 数据科学与机器学习
随着大数据和人工智能的飞速发展,Python 已成为数据科学和机器学习领域的首选编程语言。本章将深入探讨 Python 在数据科学和机器学习中的核心工具和技术,包括数据处理、可视化以及机器学习模型的构建。
8.1 数据科学简介
8.1.1 什么是数据科学?
数据科学(Data Science) 是一种结合统计学、数据分析和机器学习的学科,旨在从数据中提取有价值的信息和知识。
数据科学的关键步骤:
- 数据收集:从各种渠道获取数据(传感器、日志、API等)。
- 数据清洗:处理缺失值、异常值等问题。
- 数据分析:使用统计学和机器学习技术分析数据。
- 数据可视化:用图表展示数据分析结果。
- 模型构建:使用机器学习算法构建预测模型。
- 模型评估与优化:评估模型性能,进行优化。
8.2 Python 数据科学工具
8.2.1 NumPy:数值计算库
NumPy 是 Python 的科学计算库,支持多维数组(ndarray)和各种数学运算。
示例:NumPy 基础操作
import numpy as np
# 创建数组
a = np.array([1, 2, 3, 4])
print(a)
# 数组运算
print(a + 1)
print(a * 2)
# 多维数组
b = np.array([[1, 2], [3, 4]])
print(np.sum(b, axis=0)) # 按列求和
8.2.2 Pandas:数据处理库
Pandas 提供了强大的数据结构,如 Series
和 DataFrame
,用于数据的存储、清洗和分析。
示例:Pandas 数据分析
import pandas as pd
# 创建 DataFrame
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)
print(df)
# 数据操作
print(df['Age'].mean()) # 计算平均年龄
print(df[df['Age'] > 25]) # 筛选年龄大于25的行
8.2.3 Matplotlib & Seaborn:数据可视化
- Matplotlib:基础绘图库,提供高度自定义的图表。
- Seaborn:基于 Matplotlib,提供美观的统计图表。
示例:绘制折线图
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.plot(x, y, marker='o')
plt.title("Simple Line Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()
示例:Seaborn 热力图
import seaborn as sns
import numpy as np
data = np.random.rand(5, 5)
sns.heatmap(data, annot=True)
plt.show()
8.3 数据预处理
8.3.1 缺失值处理
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, 2, np.nan],
'B': [4, np.nan, 6]
})
# 填充缺失值
df.fillna(0, inplace=True)
print(df)
8.3.2 特征缩放
特征缩放使数据保持在相同的尺度范围内。
from sklearn.preprocessing import StandardScaler
import numpy as np
data = np.array([[1, 2], [3, 4], [5, 6]])
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)
print(scaled_data)
8.4 机器学习简介
8.4.1 什么是机器学习?
机器学习(Machine Learning) 是一种通过算法从数据中学习经验,并使用经验进行预测或决策的技术。
机器学习的主要类型:
- 监督学习(Supervised Learning):有标签数据进行训练(回归、分类)。
- 无监督学习(Unsupervised Learning):无标签数据进行训练(聚类)。
- 强化学习(Reinforcement Learning):通过奖励和惩罚学习最优策略。
8.5 使用 scikit-learn 进行机器学习
scikit-learn 是 Python 中最流行的机器学习库,提供了丰富的算法和工具。
8.5.1 线性回归
from sklearn.linear_model import LinearRegression
import numpy as np
# 数据准备
X = np.array([[1], [2], [3]])
y = np.array([2, 4, 6])
# 模型训练
model = LinearRegression()
model.fit(X, y)
# 预测
print(model.predict([[4]])) # 预测结果: [8]
8.5.2 逻辑回归
from sklearn.linear_model import LogisticRegression
# 数据准备
X = np.array([[1], [2], [3], [4]])
y = np.array([0, 0, 1, 1])
# 模型训练
model = LogisticRegression()
model.fit(X, y)
# 预测
print(model.predict([[2.5]])) # 预测类别
8.5.3 K-Means 聚类
from sklearn.cluster import KMeans
data = np.array([[1, 2], [1, 4], [1, 0],
[10, 2], [10, 4], [10, 0]])
kmeans = KMeans(n_clusters=2)
kmeans.fit(data)
print(kmeans.labels_)
8.6 实战项目:房价预测
步骤1:导入库
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# 加载数据
df = pd.read_csv('house_prices.csv')
X = df[['Size', 'Rooms']]
y = df['Price']
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
print(predictions)
8.7 小结
在本章中,我们学习了:
- NumPy:数值计算
- Pandas:数据处理
- Matplotlib/Seaborn:数据可视化
- scikit-learn:机器学习模型构建